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 или Instagram
Остались вопросы? Мы в Telegram - @Soprut

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

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

  2. Евгений Лузин (EvLuz)

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

  3. Алексей Новосельцев (novo)

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

  4. Григорий Абрамов (grishmanCH)

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

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

    • Denis Peregudov (riddlerden)
      Denis Peregudov (riddlerden) отредактировано год назад

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

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

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

  5. (Kust)
    (Kust) год назад

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

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

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

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

  7. Илья Яшин (yshinig)
    Илья Яшин (yshinig) 8 месяцев назад
    1000x_image.jpg?1572889000
  8. (Kofein)
    (Kofein) 5 месяцев назад

    Подскажите как быть если я не использую hass.io. Стоит просто HA в докере. Нашел вот такую либу https://github.com/zachowj/node-red-contrib-home-assistant-websocket Я так понимаю можно поставить Node-red и с помощью нее его связать с HA. Может есть статьи на эту тему более подробные? Я пока начинающий во всех этих дела :)

    • (enmik)
      (enmik) отредактировано 5 месяцев назад

      просто ставишь нод ред

      bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
      • 1) Заходим в интерфейс Node-red
      • 2) Открываем меню (справа вверху)
      • 3) Выбираем пункт Manage Palette
      • 4) Переходим на вкладку Install
      • 5) Вбиваем в поиск node-red-contrib-home-assistant-websocket
      • 6) Нажимаем на кнопку установить
К списку статей

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

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
29 октября 2019, 07:59
Умный домофон на базе nodeMCU с прошивкой ESPHome.
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit