HomeAssistant + Node-RED = Простая автоматизация

09 ноября 2018, 17:31

Перeчень разделов

  1. Введение
  2. Инсталляция HomeAssistant (сборка Hass.io) в Docker
  3. Инсталляция Node-RED, начальная конфигурация и запуск
  4. Прямая интеграция Node-RED в интерфейс HomeAssistant
  5. Заключение
  6. Полезные ссылки

1 Введение

Давно прорабатывал вопрос по самому гибкому и простому решению в плане автоматизации различных устройств на разной частоте и протоколах. 

Казалось бы есть решение «из коробки» - это Athom Homey (он же «Колобок») с отличным вариантом автоматизации через Workflow, что больше всего меня и привлекает в нем. Но, к сожалению, в моем случае, есть существенное ограничение, которое останавливает использование этого хаба - исторически сложилось, что 90% девайсом в доме на Z-Wave и на RU частоте (869 МГц).

Изначально, простейшую кросплатформенную автоматизацию легко получилось осуществить через HomeKit с использованием Homebridge. Например, подружить Bluthooth датчик температуры и влажности от Xiaomi c Fibaro Relay Switch на Z-wave, который в свою очередь управляет вытяжным вентилятором в ванне, т.е. при определенном уровне влажности вентилятор включается или выключается.  Но на более сложных вариантах автоматизации гибкость и возможности такого решения кончаются…

После, решил для себя в плотную познакомится с решением HomeAssistant (HA).

Вроде бы все ОК, возможностей и гибкости предостаточно, но что называется не User-friendly в плане подхода конфигурации и автоматизации.

Так вот, чтобы удовлетворить изначальные два требования - гибкость и простота - пришел на данном этапе к решению, подразумевающее использование HomeAssistant (hass.io сборка) в связке с модулем Node-RED, который обеспечивает интуитивную понятную настройку автоматизации всех устройств в HA и за его переделами через графический интерфейс написания Workflow схожий c Athom Homey. 

В данной статье рассматривается определенный подход инсталляции и конфигурации базовой среды, для последующей возможности простой, в плане настройки, автоматизации УД с помощью симбиоза HomeAssistant и Node-RED.

2 Инсталляция HomeAssistant (сборка Hass.io) в Docker

Если у вас уже стоит сборка hass.io, то можно переходит к 3-ему разделу.

ВАЖНО, обычная инсталляция HomeAssistant не поддерживает установку необходимого Add-on’а. То есть, например, описанный способ инсталляции в статье «Home Assistant, статья 1 (установка)» на этом портале работать не будет. 

Нужна именно сборка hass.io, подразумевающая возможность инсталляции hass add-on’ов. 

Стандартный и простой способ инсталляции, подразумевающий подготовку загрузочной флэшки и описанный на официальной странице, я не рассматривал, так как хотелось поставить на имеющийся Raspberry Pi 3 c развернутой ОС (Raspbian Stretch), на которой уже крутятся различные сервисы для УД.

Поэтому пришлось прибегнуть к альтернативному, немного как оказалось, нетривиальному способу инсталляция через Docker. 

Далее привожу выверенные в моем случае шаги инсталляции

Инсталлируем пакеты пререквизиты

$ sudo apt-get install bash jq curl avahi-daemon apparmor-utils 

Инсталлируем Docker

Единственный способ инсталляции Docker’а на Raspberry Pi на момент написания статьи это инсталляция с использованием автоматического скрипта установки. 

ВАЖНО, к нему следует серьезное предупреждение, которое можно прочесть на официальной странице разработчиков. В моем случае никаких проблем не выявлено.

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ sudo usermod -aG docker pi

Инсталляция HA (hass.io)

$ sudo curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | sudo bash -s -- -m raspberrypi3

После выполнения команды выше в systemctl формируются два новых сервиса, которые обеспечивают работу HA:

  • hassio-apparmor.service
  • hassio-supervisor.service

Проверяем их статус:


$ sudo systemctl status hassio-supervisor.service
$ sudo systemctl status hassio-apparmor.service

Может возникнуть проблема с запуском hassio-supervisor.service так как при первом запуске он инициализирует загрузку image для Docker - homeassistant/raspberrypi3-homeassistant, которая может падать с ошибкой. 

Подробней можно смотреть в логам Docker контейнера hassio-supervisor.service следующей командой:


$ sudo docker logs --follow hassio_supervisor

В итоге, если наблюдается проблема с загрузкой, помогает ручная установка командой:

$ sudo docker pull homeassistant/raspberrypi3-homeassistant

Установка в моем случае заняла около 10 минут

Далее понадобится перезагрузка hassio сервиса:

$ sudo systemctl restart hassio-supervisor.service

После этого можно проверить, что в Docker теперь подняты два сервиса для HA:

$ sudo docker ps

Если это так, HA поднят и готов к работе.

Заходим в браузере по URL: http://<your_IP>:8123

Вводим свои логин данные и заходим в систему

Заметка 

Если ранее был проинсталлирован HA в стандартной сборке, то всю конфигурацию можно перенести из прежней рабочей директории в новую рабочую директорию (*.yaml файлы) : /usr/share/hassio/homeassistant

После этого нужно сначала убрать из автозагрузки старый HA и после удалить его целиком, если в нем отпадет необходимость в дальнейшем.

3 Инсталляция Node-RED, начальная конфигурация и запуск

Прежде всего необходимо проверить есть ли необходимый репозиторий и при необходимости добавить его в HA для возможности скачивания Node-RED Add-on’а

Необходимый адрес репозитория: https://github.com/hassio-addons/repository

Делается это через меню Hass.io


Далее в ADD-ON STORE проверяем подключен ли нужный репозиторий

Если нет, вставляем в поле «Add new repository by URL» нужный URL и нажимаем ADD

Далее нужно пролистать страницу вниз, найти и нажать на add-on "Node-RED"


Затем нажимаем Install и ждем ~5 минут до конца установки

После инсталляции нужно прокрутить вниз страницы Add-on’а, где можно найти его конфигурационные параметры. Выделенные ниже параметры обязательные к заполнению. Плюс к этому, я изменил дефолтное значение true параметра «ssl» на false (не хотелось лишней мороки с настройкой сертификатов)

{
  "log_level": "info",
  "credential_secret": "<секретное_слово_для_административных_задач>",
  "http_node": {
    "username»: "<использовал_такой_как_для_HA>",
    "password": "<использовал_такой_как_для_HA>"
  },
  "http_static": {
    "username": "<использовал_такой_как_для_HA>",
    "password": "<использовал_такой_как_для_HA>"
  },
  "port": 1880,
  "ssl": false,
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "require_ssl": true,
  "system_packages": [],
  "npm_packages": [],
  "init_commands": []
}

Подробней о всех параметрах можно прочесть на странице этого add-on’а на Github’е

Далее сохраняем отредактированный конфиг add-on’а и стартуем сам add-on, нажав кнопку START.

В самом низу страницы add-on’а смотрим лог, нажимая кнопку REFRESH, убеждаемся, что нет никаких ошибок и ждем запуска сервиса.

 

После успешного старта можно перейти уже в интерфейс Node-RED, нажав на появившуюся кнопку OPEN WEB UI

Заходим под учетными данными, определенными в конфиге Add-on’a

И сразу попадаем в область написания flow-автоматизации, где видны так называемые палеты для включения во flow объектов из HA

С этого момента можно сразу переходить к автоматизации на Node-RED и забыть о языке YAML для этого.

Но далее будет еще рассмотрена настройка запуска области написания flow на Node-RED прямо из интерфейса HA.

4 Прямая интеграция Node-RED в интерфейс HomeAssistant

Для этого всего лишь нужно в конфигурационном файле HA прописать необходимые параметры.

Открываем на редактирование файл configuration.yaml

cd /usr/share/hassio/homeassistant
sudo nano configuration.yaml

Далее добавляем в него следующие строки в область panel_iframe

panel_iframe:
  nodered:
    title: Node-RED
    icon: mdi:sitemap
    url: http://<addres.to.your.hass.io>:1880

Сохраняем конфигурационный файл и проверяем его корректность через UI HA

Делаем рестарт HA

После старта HA и еще после ~3 минут появится новая рабочая область для настройки flows прямо из интерфейса HA

5 Заключение

В итоге, мы получили в тесной связке HA, обеспечивающий гибкую интеграцию устройств и управление их состоянием, и Node-Red, использующий всю информационную среду HA и за ее пределами для написания правил автоматизации УД простым и интуитивно понятным способом - через flows, который заменяет написание скриптов автоматизации на YAML.

Плюс к этому, данный способ инсталляции позволяет использовать уже имеющийся Raspberry Pi 3 c развернутой ОС (Raspbian Stretch), на которой уже крутятся различные сервисы для УД, с еще большей отдачей.

6 Полезные ссылки

https://smarthome.university/using-node-red-with-home-assistant/ - взял отсюда картинку для обложки статьи. Приведенный здесь способ инсталляции hass.io мне не подошел, так как подразумевает использование образа hass.io c флешки, а также способ инсталляции Node-red уже не актуален, так как используемый репозиторий и сам Add-on уже сняты с поддержки и не возможны к скачиванию.

https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-convenience-script - официальная страница Docker по различным способом инсталляции. Ссылка ведет на вариант инсталляции для Raspberry Pi 

https://medium.com/the-code-review/top-10-docker-commands-you-cant-live-without-54fb6377f481 - полезная статья по основным командам Docker

https://medium.com/the-code-review/clean-out-your-docker-images-containers-and-volumes-with-single-commands-b8e38253c271 - статья, описывающая полную очистку Docker

https://www.home-assistant.io/hassio/installation/ - официальная страница hass.io по различным способам инсталляции

https://hub.docker.com/u/homeassistant/ - страница Docker со всеми имеющимися image файлами для homeassistant

https://github.com/hassio-addons/addon-node-red/blob/v1.1.0/README.md - официальная страница Add-on'а Node-Red на Github'е


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Lyosha Dovolen (Lyosha.Dovolen)
    Lyosha Dovolen (Lyosha.Dovolen) 10 месяцев назад

    Найс. Ха становится ближе к людям

  2. Евгений Лузин (EvLuz)
    Евгений Лузин (EvLuz) 10 месяцев назад

    Отличная статья, ХА нравится, но с флоу вообще супер. Спасибо

  3. Алексей Новосельцев (novo)
    Алексей Новосельцев (novo) 10 месяцев назад

    Статья и решение супер! И как я её пропустил, спасибо! Я обязательно попробую этот вариант «колобка»

  4. Григорий Абрамов (grishmanCH)
    Григорий Абрамов (grishmanCH) 7 месяцев назад

    Спасибо, отличная статья. Ставил по другому - прям на распбиан с деконзом, где стоял уже ХА в VE. По инструкции с сайта самого Node Red. Все заработало. 

    Хотелось бы узнать о базовых принципах составления автоматизация в Node Red на конкретных примерах. Есть ли ссылки на такие ресурсы? А еще лучше продолжение статьи :) Заранее спасибо!

    • Denis Peregudov (riddlerden)
      Denis Peregudov (riddlerden) отредактировано 7 месяцев назад

      Желание продолжить статью есть и реальные уже рабочие примеры есть, но как-то все не получается... Сейчас всю автоматизацию уже перенес на Node Red, и на текущий момент еще больше уверился в его гибкости и где-то даже простоте. По поводу ссылки на ресурсы: мне хватило трех частей видео с youtube'a "Node-RED Basics with Home Assistant" с хорошими, простыми и понятными примерами, чтобы понять основные принципы работы

      • Григорий Абрамов (grishmanCH)
        Григорий Абрамов (grishmanCH) отредактировано 7 месяцев назад

        Спасибо за ответ! Посмотрю видео обязательно. Я вот нашёл интересный ресурс где можно почитать про автоматизации в Node Red. https://diyfuturism.com/index.... надеюсь кому-нибудь пригодиться.

  5. (Kust)
    (Kust) 6 месяцев назад

    2е суток возился по другим статьям.. то виртуальный dns сервер чудит, то просто службы е поднимаются, то еще гемор какой.. По этой статье все как по маслу! Авто - красавчик.

    Единственное node не пошел сразу.

    1. ошибка у автора с кавычками
    "http_node": {
        "username»: "<использовал_такой_как_для_HA>",
    но у меня все равно не стартануло.. Прописал через конфиг - но так же не сработало.. в результате на малине вручную сервис node red нужно было пнуть..
  6. (evaganov)
    (evaganov) отредактировано 3 месяца назад

    Команда для установки hass.io сейчас немного другая, детали тут.

К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant