Содержание

Установка Zigbee2MQTT в Armbian

При работе с Home Assistant supervised или HassOS вместо описанного ниже способа установки желательно использовать аддон hassio-zigbee2mqtt

Данный вариант установки предназначен для установки сервиса zigbee2mqtt на компьютере или на контроллерах JetHub H1/D1.

Для работы zigbee2mqtt необходимо предварительно установить MQTT брокер, например mosquitto:

sudo apt install -y mosquitto mosquitto-clients

При установке MQTT брокер будет настроен на автоматический запуск и запущен. Проверить статус службы можно командой:

sudo systemctl status mosquitto.service

Установить дополнительные пакеты, необходимые для сборки zigbee2mqtt:

sudo apt-get install -y nodejs npm git make gcc g++

Скачать исходные тексты zigbee2mqtt:

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R $USER:$USER /opt/zigbee2mqtt

Сборка:

cd /opt/zigbee2mqtt
npm ci

Внести изменения в файл конфигурации:

nano /opt/zigbee2mqtt/data/configuration.yaml

Примерное содержимое файла конфигурации:

# Home Assistant integration (MQTT discovery)
homeassistant: true

# Allow new devices to join
permit_join: false

# MQTT settings
mqtt:
  # MQTT base topic for Zigbee2MQTT MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'

# Serial settings
serial:
  # Location of CC2538 Zigbee module for JetHub H1
  port: /dev/ttyAML2

# Optional: advanced settings
advanced:
  # Optional: ZigBee channel (Note: changing requires re-pairing of all devices)
  channel: 15
  # Optional: ZigBee pan ID
  pan_id: 0x1a62
  # Optional: network encryption key, will improve security (Note: changing requires repairing of all devices)
  network_key: [1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 13]

frontend:
  # Optional, default 8080
  port: 8080
  # Optional, default 0.0.0.0
  host: 0.0.0.0

В примере приведено название порта для контроллера JetHub H1 (/dev/ttyAML2) для других контроллеров или USB-стиков название порта может быть другим (см. документацию к контроллеру).

Преведены значения pan_id и network_key, устанавливаемые по-умолчанию. Рекомендутся задать другие значения для этих параметров.

Запуск zigbee2mqtt:

cd /opt/zigbee2mqtt
npm start

Для автоматического запуска zigbee2mqtt при запуске системы необходимо создать файл:

sudo nano /etc/systemd/system/zigbee2mqtt.service

Содержимое файла (где <USER> - имя пользователя под которым была выполнена установка):

[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=<USER>

[Install]
WantedBy=multi-user.target

Активировать и запустить сервис zigbee2mqtt:

sudo systemctl enable zigbee2mqtt.service
sudo systemctl start zigbee2mqtt.service

После запуска службы, удостовериться в ее работе можно в логах:

sudo journalctl -u zigbee2mqtt.service -f

В файл конфигурации Home Assistant необходимо включить интеграцию MQTT. Это можно сделать двумя способами:

1. (Рекомендуется) В web-интерфейсе Home Assistant выбрать меню «Интеграции», нажать кнопку «Добавить» и выбрать из списка интеграцию «MQTT». На запрос параметров интеграции в строке «Адрес» указать «127.0.0.1».

2. В файл конфигурации Home Assistant добавить следующие параметры:

mqtt:
  discovery: true
  broker: localhost
  
  birth_message:
    topic: 'hass/status'
    payload: 'online'
  will_message:
    topic: 'hass/status'
    payload: 'offline'

Возможные проблемы

Отсутствуют права доступа к последовательному порту

Если во время запуска появляется ошибка:

Error: Error while opening serialport 'Error: Error: Permission denied, cannot open /dev/ttyAML2'

Необходимо включить пользователя, под которым производится запуск Zigbee2MQTT в группу dialout:

sudo gpasswd --add ${USER} dialout

После чего выйти из системы и заново зайти в нее под данным пользователем.