При работе с 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
После чего выйти из системы и заново зайти в нее под данным пользователем.