Интеграция WirenBoard с HomeAssistant

Решил сделать мануал, может кому пригодится, ибо на форуме только разрозненная информация.
Итак:
1). Устанавливаем Home Assist (Supervised, т.е. с дополнительными возможностями):

Есть 2 пути установки Home Assistant, через docker и через apt, можно воспользоваться любым, но в версии с docker можно поставить supervisor режим для HA , который открывает дополнительные возможности. Хотя можно обойтись и без него, тогда надо ставить и сервер mosqitto вручную, см. *** п.3.

Итак путь через docker + supervisor
В консоли будущего сервера (инструкция для Debian):

Устанавливаем docker (если есть, можно пропустить)

 apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 
 apt-get update
 apt install libseccomp
 apt-get install docker-ce docker-ce-cli containerd.io

Устанавливаем Home Assistant:

 docker run -d --name homeassistant --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /HA:/config --network=host ghcr.io/home-assistant/home-assistant:stable

устанавливаем расширения супервизора (нужно для установки Mosquitto broker, см *** примечание в п.3) ). А также куча полезных фич.

 curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh
 chmod +x installer.sh
 ./installer.sh
 docker restart homeassistant

2). настраиваем Home Assistant.
Переходим по адресу http://HOST:8123/ , задаем логин/пароль, а также первоначальные настройки.

3). В панели Supervisor (http://HOST:8123/hassio/dashboard)топаем в магазин устанавливаем и запускаем Mosquitto broker. Не помешает включить галочку автозапуска
*** Вместо этого можно установить сервер руками, в том числе и на другую машину. https://www.8host.com/blog/ustanovka-brokera-soobshhenij-mosquitto-v-debian-10/

4). Создаем mqtt бридж WirenBoard <-> HA.
В консоли WirenBoard:
редактируем файл /etc/mosquitto/mosquitto.conf
после строки:

include_dir /etc/mosquitto/conf.d

добавляем:

connection wb_hs #неважно что
address {HOST}:1883 #где HOST - ип адрес HA Сервера
remote_username {логин в HA} # логин, установленный на шаге 2 , можно создать отдельного пользователя
remote_password {пароль в HA} # пароль, установленный на шаге 2

clientid home-assistant #неважно что
try_private false
start_type automatic
topic # both

далее перезапускаем москитник
service mosquitto restart

5). Добавляем интеграцию mqtt в HA:
Переходим http://{HOST}:8123/config/integrations (Настройки - Интеграции) в правом нижнем углу “Добавить Интеграцию” ищем MQTT , добавляем
далее в параметрах указываем те же {HOST} , {логин в HA} , {пароль в HA}

перезапускаем сервер HA (http://{HOST}:8123/config/server_control )

6). Проверяем работу бриджа и москита
В любой консоли:
mosquitto_sub -h {HOST} -u "{логин в HA}" -P "{пароль в HA}" -t '/devices/wb-adc/controls/5Vout'
или любой другой топик
если все ок, должны увидеть изменяющиеся значения:
5.06
5.06
5.00
4.99
5.06

значит бридж работает.

Заодно можно проверить обратную связь от HA к WirenBoard

mosquitto_pub -t "/devices/R1/controls/K1/on" -m 1 -h {HOST} -u "{логин в HA}" -P "{пароль в HA}"
mosquitto_pub -t "/devices/R1/controls/K1/on" -m 0 -h {HOST} -u "{логин в HA}" -P "{пароль в HA}"

включить/выключить первый контакт реле для Device R1

7). Добавляем конфигурацию контролов:
редактируем файл /usr/share/hassio/homeassistant/configuration.yaml на сервере HA

добавляем строки

mqtt:
    broker:  {HOST}
    port: 1883
    client_id: home-assistant #неважно что
    keepalive: 60
    username: "{логин в HA}"
    password: "{пароль в HA}"
sensor:
  - platform: mqtt
    state_topic: "/devices/wb-adc/controls/5Vout"
    name: "5Voutx"

  - platform: mqtt
    state_topic: "/devices/wb-w1/controls/28-00000bcffbe4"
    name: "wired"

switch:
  - platform: mqtt
    state_topic: "/devices/R1/controls/K1"
    command_topic: "/devices/R1/controls/K1/on"
    name: "Реле 1 контакт 1"
    payload_off: "0"
    payload_on: "1"

перезапускаем сервер HA
Топаем в Обзор ( http://{HOST}:8123/lovelace/0 )
и должны увидеть наши сенсоры в разделе “Сенсор” и релюху в разделе “Выключатель”

9 Likes

Здравствуйте! Спасибо за инструкцию. Думаю, что она будет полезна для пользователей.

Спасибо за мануал, все очень подробно и понятно) Мои 5 копеек:
Лучше не редактировать файл /etc/mosquitto/mosquitto.conf, иначе можно получить конфликты конфигов при обновлении. Лучше в таком случае добавить новый .conf-файл в папку /etc/mosquitto/conf.d/ и описать connection там.

2 Likes

Доброго времени! Можно комментарии к установке docker - уже не этапе установки ошибки.

Какие именно ошибки? Сам по своему мануалу недавно переустанавливал. Там, единственно, надо установить пакет jq ( apt install jq) . Не могу уже редактировать свой пост, чтобы добавить.

E: Unable to locate package libseccomp
Установку произвожу на WB 6. Пробовал по другой статье: Install Docker Engine on Debian | Docker Documentation
Устанавливается. но памяти на установки самой HA не остается.

попробуйте apt install libseccomp-dev

тогда ваш путь установка HA без докера и Supervised режима. В целом не много потеряете, просто надо будет mqtt сервер руками поставить . Я вот по такому мануалу ставил: https://www.8host.com/blog/ustanovka-brokera-soobshhenij-mosquitto-v-debian-10/

Спасибо - попробуем)
Начал было уже через Питон https://sprut.ai/client/article/155

ну можно и по тому мануалу, разницы не будет. раз уж вы стеснены в ресурсах, лучше не лепить докера, это лишний оверхеад. Supervised добавляет некоторый функционал, без которого, в принципе, можно спокойно обойтись. Ничего там незаменимого нет.
Кстати, сейчас добрался до HA , заметил что вариант с Mosquitto broker из HA работает как-то тупо. Сообщения обновляются с большой задержкой. Не знаю с чем эжто связано, работало нормально. Потому отключил его и поставил свой москитник по мануалу отсюда

https://wirenboard.com/wiki/MQTT#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_MQTT_.D0.BC.D0.BE.D1.81.D1.82.D0.B0_.28bridge.29

теперь все опять бегает быстро, хз что случилось, но вот так.

Добрый, а зачем нужен 2ой брокер mqtt, почему не использовать тот что есть в wb?

Если вам достаточно локального управления , ну или у вас есть статически ип адрес, тогда не нужно. Второй брокер - это клон первого, позволяет , например, со сматрфона удаленно управлять вашим умным домом.
Тот же Home Assistant можно поставить и на WB, однако это повышенная нагрузка на процессор и дополнительное дисковое пространство, которых не так уж и много. ИМХО, даже локально лучше хотя бы самый простой серверок для всех этих вещей.

Спасибо за ответ, но все равно не совсем понял ) у меня ha на отдельном сервере в локальной сети, доступен снаружи (ddns, ssl). Как я понимаю: очевидное решение - интеграцию ha mqtt подцепить к mqtt broker встроенному в wb. Тогда конструкция доп брокер+бридж вроде как всё только усложняет - лишние задержки и потенциально то что может отвалиться/сбоить (бридж, сам второй брокер).

Или вы имеете ввиду конструкцию когда второй брокер и ха стоят вне ЛВС? Тогда да, все понятно становится

Проверил вариант с подключением напрямую к брокеру wb - работает

да, совершенно верно, если у вас wb и ha в одной сети, бридж не нужен, просто подключаетесь из ha к внутреннему ип адресу wb.
Клон mqtt удобен, когда сеть за NATом , тогда у вас получается зеркальная , синхронная копия всех значений mqtt из wb на другом сервере с которой можно взаимодействовать так же , как и с локальной.

2 Likes

Вы бы указали, что это набор инструкций для отдельностоящего сервера (причём с процессором с архитектурой amd64), а не для вайренборда. На вайренборде не нужно ставить mosquitto, он уже и так стоит. А ещё, чтобы эти инструкции подошли для выполнения на вайренборде, нужно убрать arch=amd64 из второй строки первого блока кода, убрать sudo из команд (ну или поставить его на вайренборд) и вместо libseccomp ставить libseccomp-dev

А, всё ещё прикольнее, docker поставить можно, вот только места под контейнер ha на вайрене не хватит :slight_smile: Так что если ставить HA на вайрен, то нужно следовать core варианту установки

В /mnt/data - хватит.
Или он, контейнер, сейчас сильно больше 2 ГБ?

я ставил докер родным скриптом, потом переносил его каталоги в /mnt/data и делал симлинки
работает
но как тоже писал, если НА активно сохраняет в свою бд данные и в ненужный момент пропадёт питание, может порушиться файловая система
у меня потом НА не стартовал и приводил WB к ребуту

А вот это странно. Если сторонний сервис никак не описать в watchdog - то он перезагрузку вызывать не должен.

так повредилась файловая система, при старте НА пытался прочитать файлы, что приводило к ошибкам и панике, потом к ребуту

проблема ушла когда с горем пополам в сингл моде отмонтировал 6 раздел, исправил ошибки + удалил файлы журнала файловой системы, т.к. они тоже повредились и при их проверке были неустранимые ошибки
после этого снова всё работает… на долго ли - покажет время

А, именно сам раздел /dev/mmcblk0p6 имел ошибки, монтировался RO?