Home Assistant и WBE2R-R-ZIGBEE v.2

Доброго времени. Поднимаю новую инсталляцию. Имеется WirenBoard 7.4.3 с установленным модулем WBE2R-R-ZIGBEE v.2. В свете последних событий на стороне Home Assistant с отказом от поддержки 32-битных систем, HA будет установлен на внешнем устройстве в полноценной конфигурации HAOS. В виду этого хочется совсем отказаться от возни с Docker и установить zigbee2mqtt внутри HA, а не внутри WB как предлагают все инструкции.

Подскажите, есть ли возможность использовать встроенный Zigbee модуль, прокинув его каким-то образом по сети в отдельно стоящий z2m?

Добрый день.
Да, слышал про такое. Достаточно написать сервис который будет слушать на каком-либо свободном порту TCP (конвертировать TCP<->UART). Но подробностей реализации не знаю.

Действительно. Не учёл что Zigbee адаптер доступен по серийному порту. Тогда нет проблем транслировать его в сеть.

  • Подключаемся по ssh к контроллеру и для начала установим socat, который будет заниматься трансляцией:
    apt install socat

  • Добавим пользователя, от имени которого будет запускаться служба:
    useradd -c "UART account" -r uartusr

  • Добавим его в группу dialout, что бы он мог подключаться к serial портам:
    adduser uartusr dialout

  • Создадим конфиг службы:
    nano /etc/systemd/system/socat.service

  • Записываем в него следующее сожержимое:

[Unit]
Description=Socat Tunnel
After=network.target

[Service]
User=uartusr
ExecStart=/bin/socat TCP-LISTEN:6638,fork, /dev/ttyMOD4,b115200
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
  • Включаем автозапуск и запускаем службу:
    systemctl enable socat.service
    systemctl start socat.service

  • Идём в конфиг z2m, в разделе serial меняем [wirenboard-ip] на айпишник своего контроллера:
    port: tcp://[wirenboard-ip]:6638

Я как-то привык подобное записывать одной командой:


cat >> /etc/systemd/system/socat.service <<ALLEND
[Unit]
Description=Socat Tunnel
After=network.target

[Service]
User=uartusr
ExecStart=/bin/socat TCP-LISTEN:6638,fork, /dev/ttyMOD4,b115200
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

ALLEND

Но непринципиально, конечно.