Перейти к содержанию

Навигация

Zigbee: различия между версиями

12 964 байта добавлено ,  2 месяца назад
(не показана 131 промежуточная версия 6 участников)
Строка 1: Строка 1:
<languages/>
<!--T:1-->
{{DISPLAYTITLE:Подключение устройств Zigbee к контроллеру Wiren Board}}
{{DISPLAYTITLE:Подключение устройств Zigbee к контроллеру Wiren Board}}
== Аппаратная часть == <!--T:4-->
== Описание ==
[[Файл:WBE2R-R-ZIGBEE top.jpg|300px|thumb|right| Лицевая сторона модуля  WBE2R-R-ZIGBEE]]  
Для использования Zigbee-устройств с контроллером Wiren Board понадобится:
[[Файл:WBE2R-R-ZIGBEE bot.jpg|300px|thumb|right| Обратная сторона модуля WBE2R-R-ZIGBEE]]  
# Модуль расширения [[WBE2R-R-ZIGBEE v.2 ZigBee Extension Module|WBE2R-R-ZIGBEE v.2]] ([[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module|WBE2R-R-ZIGBEE v.1]]) или любой USB Zigbee стик.
[[Файл:Cc2531-usb.png|300px|thumb|right| USB стик СС2531]]  
# Дополнительное ПО:
#* zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через [[MQTT]], [https://www.zigbee2mqtt.io/supported-devices/ поддерживаемые устройства].
#* wb-zigbee2mqtt — конвертер данных из топиков zigbee2mqtt в [https://github.com/wirenboard/conventions/ Wiren Board MQTT Conventions].


<!--T:5-->
Инструкции по установке смотрите ниже на этой странице.  
Для работы контроллера с ZigBee устройствами необходимо подключить специальный модуль. Есть несколько вариантовː


* [[Wbe2r-r-zigbee|WBE2R-R-ZIGBEE — Модуль расширения Zigbee]]
{{Wbincludes:Installing Software In Console}}
* USB Стик CC2531 (Можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531 Aliexpress.com])
* Модуль СС2530 c переходником usb-uart. Подключениеː
<!--T:6-->
{| class="wikitable"
!USB-Serial Adaper
!CC2530
|-
|3V3
|VCC
|-
|GND
|GND
|-
|TXD
|P02
|-
|RXD
|P03
|}
<!--T:7-->


== Прошивка == <!--T:8-->
== Установка и настройка zigbee2mqtt ==
=== Процесс установки ===
Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Самая свежая версия всегда доступна в [[testing | тестовом релизе]].


<!--T:9-->
Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:
С завода модуль [[WBE2R-R-ZIGBEE]] уже прошит оптимизированной прошивкой (Z-Stack 1.2). Но вы можете его перепрошить, если это потребуется.
* zigbee2mqtt — всегда свежая версия, рекомендуем ставить её.
* zigbee2mqtt-1.18.1 — версия для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года. [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#revisions |Таблица ревизий]].


Для прошивки [[WBE2R-R-ZIGBEE]] или USB стика потребуется CC Debugger и загрузочный кабель. CC Debugger с кабелем можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531+загрузочный+кабель Aliexpress.com]. Перед прошивкой установите [http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swrc212&fileType=zip драйвер].
Для установки свежей версии, введите команду:
:<syntaxhighlight lang="bash">
apt update && apt install zigbee2mqtt
</syntaxhighlight>


Подключите CC Debugger к [[WBE2R-R-ZIGBEE]] или к USB стику через загрузочный кабель. Подключите USB кабель CC Debugger(a) к компьютеру. Скачайте и установите приложение [http://www.ti.com/tool/flash-programmer FLASH-PROGRAMMER] ( обычную версию, не v2) c сайта TI. Устройство должно определиться в таблице. Укажите путь к файлу прошивки. В области «Actions» выберите «Erase, program and verify» и нажмите кнопку «Perform actions». Полезную информацию по прошивке вы так же можете найти на [https://www.zigbee2mqtt.io/information/flashing_the_cc2531.html сайте zigbee2mqtt].
Чтобы установить 1.18.1, выполните:
:<syntaxhighlight lang="bash">
apt update && apt install zigbee2mqtt-1.18.1
</syntaxhighlight>


Файлы прошивок: [https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator Z-Stack-firmware].
Альтернативный способ установки — сборка из исходников по [[Zigbee2mqtt-src | инструкции]].
Внимательно читайте описание к прошивкам. Для модуля [[WBE2R-R-ZIGBEE]] требуется прошивка «CC2530 + CC2592».


== zigbee2mqtt == <!--T:10-->
Дальше мост надо настроить, смотрите раздел Конфигурация.


=== Описание ===
После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:
<!--T:11-->
<syntaxhighlight lang="bash">
[https://github.com/Koenkk/zigbee2mqtt Zigbee2mqtt] — это мост, с помощью которого вы можете управлять Zigbee устройствами через MQTT. Он работает на Node.js и позволяет интегрировать Zigbee устройства в различные системы автоматизации: Home Assistant, Node Red и тд.
systemctl disable zigbee2mqtt
<!--T:12-->
systemctl enable zigbee2mqtt
Вы найдете всю необходимую информацию на сайте [https://www.zigbee2mqtt.io/ zigbee2mqtt].
</syntaxhighlight>


=== Установка === <!--T:15-->
=== Конфигурация ===
<div id="config">
Если вы используете модуль расширения [[WBE2R-R-ZIGBEE]], убедитесь, что правильно выставили модуль в '''Settings''' → '''Configs''' → '''Hardware Modules Configuration'''. При использовании USB-стика порт будет называться <code>/dev/ttyUSBx</code>, где x — номер порта, нумерация с нуля.


Запустите консоль и введите командуː
Настройка:
 
# Откройте файл конфигурации для редактированияː
<pre>$ apt update && apt install -y zigbee2mqtt</pre>
#:<syntaxhighlight lang="bash">
 
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
<div class="mw-collapsible mw-collapsed" style="width:600px">
</syntaxhighlight>
Установка и сборка из исходников (альтернативный метод):
# По умолчанию файл конфигурации выглядит так, в параметре '''port''' укажите порт, куда физически вставлен модуль:
<div class="mw-collapsible-content">
#:<syntaxhighlight lang="bash">
Настраиваем репозиторий Node JS
<pre>
curl -sL https://deb.nodesource.com/setup_12.x | bash -
</pre>
 
Устанавливаем необходимые компоненты
<pre>
apt-get install -y nodejs git make g++ gcc
</pre>
 
''Копируем файлы из репозитория zigbee2mqtt''
<pre>
git clone https://github.com/Koenkk/zigbee2mqtt.git /mnt/data/root/zigbee2mqtt
</pre>
 
Настраиваем права
<pre>
chown -R root:root /mnt/data/root/zigbee2mqtt
</pre>
 
Заходим в директорию и запускаем установку
<pre>
cd /mnt/data/root/zigbee2mqtt
npm ci
</pre>
 
В процессе установки будет показано несколько предупреждений. Их можно игнорировать.
 
'''Оригинальная инструкция по установке zigbee2mqtt на [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html официальном сайте zigbee2mqtt.io]'''
 
<!--T:16-->
Для автоматического запуска zigbee2mqtt необходимо создать сервис. Для этого зайдите в папку /etc/systemd/system/ и создайте файл zigbee2mqtt.service
 
Откройте файл и скопируйте в него следующий текстː
<pre>
[Unit]
Description=zigbee2mqtt
After=network.target
 
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/mnt/data/root/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=root
 
[Install]
WantedBy=multi-user.target
</pre>
 
И сохраните файл. После этого для активации сервиса следует ввести в консоль команду
<pre>
systemctl enable zigbee2mqtt.service
</pre>
<!--T:17-->
Полную инструкцию можно найти на [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html сайте zigbee2mqtt].
  </div>
 
</div>
 
=== Конфигурация === <!--T:18-->
<!--T:19-->
Если Вы используете модуль расширения [[WBE2R-R-ZIGBEE]], убедитесь, что правильно выставили модуль в Configs => Hardware Modules Configuration.
 
Далее в папке /mnt/data/root/zigbee2mqtt/data отредактируйте файл configuration.yaml ː
 
<pre>
homeassistant: false
homeassistant: false
permit_join: false
permit_join: false
Строка 135: Строка 56:
   server: 'mqtt://localhost'
   server: 'mqtt://localhost'
serial:
serial:
   port: /dev/ttyMOD3
   port: /dev/ttyMOD4
advanced:
advanced:
   rtscts: false
   rtscts: false
   last_seen: epoch
   last_seen: epoch
</pre>
  pan_id: GENERATE
  network_key: GENERATE
</syntaxhighlight>
#: вместо GENERATE после первого запуска моста появятся значения, не изменяйте их.
# {{Wbincludes:Save nano}}
# Перезапустите сервис <code>zigbee2mqtt</code>:
#:<syntaxhighlight lang="bash">
systemctl restart zigbee2mqtt
</syntaxhighlight>
Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства будут добавлены на вкладку '''Devices''' в стандартном веб-интерфейсе контроллера.


изменив значение "port" в соответствии с расположением модуля.
=== Веб-интерфейс (Frontend) ===
Полное описание настроек можно найти на [https://www.zigbee2mqtt.io/information/configuration.html сайте zigbee2mqtt].
Веб-интерфейс zigbee2mqtt потребляет ресурсы контроллера — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.


После изменения настроек введите команду
Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:
# Откройте файл <code>configuration.yaml</code> для редактированияː
#:<syntaxhighlight lang="bash">
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
</syntaxhighlight>
# Добавьте в него блок:
#:<syntaxhighlight lang="bash">
frontend:
  port: 8081
  host: 0.0.0.0
</syntaxhighlight>
# Сохраните и закройте файл.
# Перезапустите сервис <code>zigbee2mqtt</code>:
#:<syntaxhighlight lang="bash">
systemctl restart zigbee2mqtt
</syntaxhighlight>


<pre>
Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера '''192.168.42.1''', а порт указан '''8081''', то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081
service zigbee2mqtt restart
</pre>


=== Запуск ===
=== Обновление ===
Для запуска, остановки и перезапуска сервиса используйте команды
Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по [[Wiren_Board_Software | инструкции]]. Будут сохранены все настройки и подключенные устройства.


<pre>
Если у вас старый адаптер [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module | WBE2R-R-ZIGBEE v.1]], выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:
service zigbee2mqtt start
* Прошить старый адаптер свежей прошивкой,  [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#flashing | инструкция]].
service zigbee2mqtt stop
* Поставить пакет с версией, которая работает с этими адаптерами — это возможно сделать только на релизе wb-2207, в более свежих релизах на bullseye этого пакета нет:
service zigbee2mqtt restart
*:<syntaxhighlight lang="bash">
</pre>
apt install zigbee2mqtt-1.18.1
 
</syntaxhighlight>
=== Добавление устройств ===
* Заменить адаптер на [[WBE2R-R-ZIGBEE v.2 ZigBee Extension Module | WBE2R-R-ZIGBEE v.2]] или использовать [https://www.zigbee2mqtt.io/guide/adapters/ поддерживаемый USB-стик].
 
Что бы добавить Zigbee устройство убедитесь, что в настройках моста включен параметр «permit_join» :
 
<pre>
permit_join: true
</pre>
 
Далее следуйте инструкции к устройству. В основном требуется зажать кнопку «pair» на несколько секунд и дождаться «мигания» светодиода. После этого устройство должно передать информацию о себе на контроллер. Иногда требуется дополнительно нажимать на кнопку каждую секунду, что бы устройство не «уснуло». После успешного добавления устройство автоматически появится во вкладке Devices.
 
Более подробная информация на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt].


== wb-zigbee2mqtt ==
== Конвертер wb-zigbee2mqtt ==
=== Описание ===
=== Описание ===
Wb-zigbee2mqtt — это простой конвертер из zigbee2mqtt в Wiren Board MQTT Conventions. Конвертер написан на движке правил wb-rules>=2.6.0, скрипт устанавливается в папку с системными правилами wb-rules-system.  
[[Image: wb-zigbee2mqtt new device in Devices.png |300px|thumb|right| Zigbee-устройство на вкладке Devices — в заголовке указан ''friendly_name'' ]]
Wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил [[wb-rules]] и устанавливается в папку с системными правилами wb-rules-system.


=== Принцип работы ===
=== Принцип работы ===
В версии wb-rules 2.6.0 появилась возможность подписываться на произвольные MQTT топики. Конвертер wb-zigbee2mqtt запрашивает у zigbee2mqtt список всех подключенных устройств, подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию. Так же конвертер создает виртуальное устройство «zigbee2mqtt» и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Есть возможность включить и выключить режим добавления устройств. Также там расположена кнопка «update devices». При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и если они появились — подписывается на них.
Конвертер '''wb-zigbee2mqtt''' запрашивает у zigbee2mqtt список всех подключенных устройств и подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию.  
 
Так же конвертер создает виртуальное устройство ''zigbee2mqtt'' и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка ''Update devices''. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.


=== Установка ===
=== Установка ===


Для установки откройте консоль и введите команду:
wb-zigbee2mqtt ставится автоматически при установке пакета zigbee2mqtt, если этого не произошло, установите его командой:
<syntaxhighlight lang="bash">
apt update && apt install wb-zigbee2mqtt
</syntaxhighlight>


<pre>$ apt update && apt install wb-zigbee2mqtt</pre>
После этого в стандартном веб-интерфейсе контроллера на вкладке ''Devices'' появится устройство ''zigbee2mqtt''.


=== Правильная настройка zigbee2mqtt ===
=== Добавление устройств ===
[[Image: WebUI Add Zigbee Device.png |300px|thumb|right| Добавление устройства, сообщение ''Device '0x00158d0007013f71' is supported.'']]
[[Image: WebUI Add Zigbee Device Unsupported.png |300px|thumb|right| Неподдерживаемое устройство, сообщение ''Device '0x2c1165fffeabe0b8' not supported.'']]
Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:
# Перейдите в [[Wiren Board Web Interface | стандартный веб-интерфейс контроллера]].
# Откройте вкладку '''Devices'''.
# Найдите там карточку устройства '''Zigbee2mqtt''' и проверьте статус в поле '''State''' — должно быть написано '''online'''. Если вы только, что установили zigbee2mqtt и указан статус ''offline'' — подождите пару минут.
# Включите переключатель '''Permit join'''.
# Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку '''pair''' на несколько секунд и дождаться мигания индикатора на устростве.
# В процессе добавления устройства в карточке '''Zigbee2mqtt''' в поле Log по очереди будут появляться сообщения ''Starting interview on 0xN → Device 0xN is supported''. Последнее сообщение означает, что устройство успешно опрошено.
# Повторите шаги 5 и 6 для каждого Zigbee-устройства, которое у вас есть.
# Завершите добавление устройств, для этого выключите переключатель '''Permit join'''.
# Нажмите кнопку '''Update devices''', добавленные устройства будут доступны на вкладке '''Devices'''.


Если ставить zigbee2mqtt через apt, то мост уже заранее настроен для правильной работы с конвертером. Если же вы ставите zigbee2mqtt вручную — убедитесь, что параметр базового топика выставлен верно:
Иногда, новые устройства не появляются на вкладке Devices — это может быть по причинам:
# Произошла ошибка в конвертере при разборе данных от zigbee2mqtt, в этом случае перезапустите движок правил:
#: <syntaxhighlight lang="bash">
systemctl restart wb-rules
</syntaxhighlight>
# Некоторые устройства не поддерживаются zigbee2mqtt, для таких устройств в сообщении будет указано ''Starting interview on 0xN → Device 0xN ... is NOT supported''. В этом случае убедитесь, что устройство есть в [https://www.zigbee2mqtt.io/supported-devices/ списке поддерживаемых] и у вас установлена свежая версия zigbee2mqtt.


  mqtt:
Ещё бывает так, что карточка устройства появилась, но пустая — это значит, что устройство добавлено, но данные пока не были получены. Если это датчик, то тут нужно немного подождать, а в случае с выключателем — выключить или включить его.
    base_topic: zigbee2mqtt
    server: 'mqtt://localhost'


Другие настройки на работу конвертера не влияют.
=== Изменение friendly_name ===
friendly_name — это человекочитаемое имя устройства. Вы можете оставить значение по умолчанию, или настроить своё:
# Откройте файл конфигурации для редактированияː
#:<syntaxhighlight lang="bash">
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
</syntaxhighlight>
# Найдите в секции '''devices''' ваше устройство.
# Измените '''friendly_name'''.
# Сохраните файл настроек и перезапустите сервис:
#:<syntaxhighlight lang="bash">
systemctl restart zigbee2mqtt
</syntaxhighlight>
# В стандартном веб-интерфейсе контроллера на вкладке Devices должно появиться устройство с заданным именем.
# Удалите карточку устройства со старым именем с вкладки Devices, для этого нажмите на корзинку в заголовке.


=== Добавление устройств ===
Новое имя устройства должно соответствовать [https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#common-device-options этим требованиям] (плюс нельзя использовать косую черту <code>/</code>) и не должно быть одинаковым для нескольких устройств, а также соответствовать определённым правилам — так называемым соглашениям ([https://github.com/wirenboard/conventions/blob/main/README.md Wiren Board MQTT Conventions]).


Для добавления нового устройства переведите контрол «Permit join» в положение «on». Далее следуйте инструкции к устройству. В основном требуется зажать кнопку «pair» на несколько секунд и дождаться «мигания» светодиода.
<gallery mode="packed" heights="150px" caption="Изменение friendly_name">
Image: friendly_name-old-device.png | Карточка устройства с ''friendly_name'' по умолчанию
Image: friendly_name-config.png | Изменение ''friendly_name'' в файле конфигурации
Image: friendly_name-new-device.png | Карточка устройства с новым ''friendly_name''
</gallery>


=== Управление устройствами ===
=== Управление устройствами ===
Управление устройствами через конвертер wb-zigbee2mqtt пока не реализовано. Но управлять устройствами можно стандартными инструментами [https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttfriendly_nameset zigbee2mqtt] через wb-rules (функция publish)
Управление через конвертер wb-zigbee2mqtt пока не реализовано, но вы можете управлять устройствами [https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttfriendly_nameset стандартными инструментами zigbee2mqtt] через wb-rules, отправляя команды с помощью функции ''publish''.


Пример управления устройством в правилах WB-Rules:
Пример включения и отключения реле с ''friendly_name'' равным ''0x00158d0001f3fc34'' в правилах [[wb-rules]]:
<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
  publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
  publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
  publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);
  publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);
</syntaxhighlight>
</syntaxhighlight>
Вместо wb-rules вы можете использовать [[Node-RED]].
=== Удаление устройств ===
Чтобы удалить устройство:
# Убедитесь, что в карточке устройства с заголовком ''Zigbee2mqtt'' перключатель '''Permit join''' находится в положении ''OFF''.
# Разорвите связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд, смотрите документацию на устройство.
# Проследите, чтобы в карточке с заголовком ''Zigbee2mqt''t в поле '''Log''' появилось сообщение ''left_network''.
# Удалите карточку этого Zigbee-устройства из веб-интерфейса, для этого наведите на заголовок карточки курсор мыши и нажмите на корзинку.
# Подключитесь к контроллеру по [[SSH]] и перезапустите wb-rules — это перезапустит конвертер wb-zigbee2mqtt:
#:<syntaxhighlight lang="bash">
systemctl restart wb-rules
</syntaxhighlight>
<gallery mode="packed" heights="180px">
Image: WebUI Zigbee Device Left Network.png | Сообщение ''left_network''
Image: WebUI Zigbee Device Remove.png | Корзинка для удаления карточки Zigbee-устройства
</gallery>
=== Как переустановить с сохранением данных ===
В некоторых случаях может потребоваться переустановить конвертер с сохранением данных, например, если мост не стартует после обновления.
Инструкция:
# Перейдите в домашний каталог:
#:<syntaxhighlight lang="bash">
cd ~
</syntaxhighlight>
# Сохраните настройки:
#:<syntaxhighlight lang="bash">
cp -R /mnt/data/root/zigbee2mqtt/data data-backup
</syntaxhighlight>
# Удалите zigbee2mqtt командой:
#:<syntaxhighlight lang="bash">
apt purge zigbee2mqtt
</syntaxhighlight>
# Если остался каталог с node-modules — удалите его:
#:<syntaxhighlight lang="bash">
rm -r /mnt/data/root/zigbee2mqtt/node_modules
</syntaxhighlight>
# Заново поставьте zigbee2mqtt:
#:<syntaxhighlight lang="bash">
apt install zigbee2mqtt
</syntaxhighlight>
# Восстановите настройки из архива:
#:<syntaxhighlight lang="bash">
cp -R data-backup/* /mnt/data/root/zigbee2mqtt/data
</syntaxhighlight>
# Перезапустите сервис:
#:<syntaxhighlight lang="bash">
systemctl restart zigbee2mqtt
</syntaxhighlight>
== Диагностика неисправностей  ==
Если вы столкнулись с проблемами в работе zigbee2mqtt, то прояснить ситуацию поможет статус сервиса и чтение подробных логов. Для выполнения команд подключитесь к контроллеру по [[SSH]].
Посмотреть текущий статус и последние несколько сообщений из лога можно командой:
<syntaxhighlight lang="console">
# systemctl status zigbee2mqtt
● zigbee2mqtt.service - zigbee2mqtt
  Loaded: loaded (/lib/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled)
  Active: activating (auto-restart) (Result: exit-code) since Fri 2022-05-13 10:06:04 +04; 3s ago
  Process: 25986 ExecStart=/usr/bin/npm start (code=exited, status=1/FAILURE)
Main PID: 25986 (code=exited, status=1/FAILURE)
May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Main process exited, code=exited, status=1/FAILURE
May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Unit entered failed state.
May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
</syntaxhighlight>
[[Image: zigbee2mqtt-wrong-start.png |300px|thumb|right| Пример проблем при запуске zigbee2mqtt командой ''npm start'' ]]
[[Image: zigbee2mqtt-successful-start.png |300px|thumb|right| Пример успешного запуска zigbee2mqtt при выполнении команды ''npm start'' ]]
Часто бывает так, что из предыдущего шага мы видим наличие проблемы, но причина непонятна, в этом случае нужно смотреть логи:
# Остановите сервис командой:
#:<syntaxhighlight lang="bash">
systemctl stop zigbee2mqtt
</syntaxhighlight>
# Перейдите в каталог с zigbee2mqtt:
#:<syntaxhighlight lang="bash">
cd /mnt/data/root/zigbee2mqtt/
</syntaxhighlight>
# Запустите zigbee2mqtt в ручном режиме с выводом всех сообщений в консоль командой <code>npm start</code>:
#:<syntaxhighlight lang="console" highlight="12">
# npm start
> zigbee2mqtt@1.18.1 start /mnt/data/root/zigbee2mqtt
> node index.js
Zigbee2MQTT:info  2022-05-13 09:59:30: Logging to console and directory: '/mnt/data/root/zigbee2mqtt/data/log/2022-05-13.09-59-19' filename: log.txt
Zigbee2MQTT:info  2022-05-13 09:59:30: Starting Zigbee2MQTT version 1.18.1 (commit #unknown)
Zigbee2MQTT:info  2022-05-13 09:59:30: Starting zigbee-herdsman (0.13.71)
Zigbee2MQTT:error 2022-05-13 09:59:39: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2022-05-13 09:59:39: Failed to start zigbee
Zigbee2MQTT:error 2022-05-13 09:59:39: Exiting...
Zigbee2MQTT:error 2022-05-13 09:59:39: Error: Error while opening serialport 'Error: Error: No such file or directory, cannot open /dev/ttyUSB01'
    at Znp.<anonymous> (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:136:32)
    at Generator.next (<anonymous>)
    at /mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:27:71
    at new Promise (<anonymous>)
    at __awaiter (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:23:12)
    at SerialPort.<anonymous> (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/dist/adapter/z-stack/znp/znp.js:134:49)
    at SerialPort._error (/mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:198:14)
    at /mnt/data/root/zigbee2mqtt/node_modules/zigbee-herdsman/node_modules/@serialport/stream/lib/index.js:242:12
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! zigbee2mqtt@1.18.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the zigbee2mqtt@1.18.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!    /root/.npm/_logs/2022-05-13T05_59_39_596Z-debug.log
</syntaxhighlight>
#: здесь сразу видно, что мы в настройках неверно указали порт.
# После того, как вы нашли и устранили проблему, снова запустите сервис:
#:<syntaxhighlight lang="bash">
systemctl start zigbee2mqtt
</syntaxhighlight>
Если при выполнении <code>npm start</code> сервис запустился успешно, то остановить его можно нажатием клавиш <kbd>Ctrl</kbd>+<kbd>C</kbd>.
Иногда может потребоваться отключить автозапуск сервиса, управлять автозапуском можно командами:
<syntaxhighlight lang="bash">
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt
</syntaxhighlight>
== Полезные ссылки ==
* [https://www.zigbee2mqtt.io/ Документация zigbee2mqtt]
* [https://habr.com/ru/company/wirenboard/blog/713274/ Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED]
* [https://habr.com/ru/companies/wirenboard/articles/750640/ Подключаем Zigbee-устройства к контроллеру Wiren Board и пишем сценарии на wb-rules]
* [[zigbee2mqtt-src| Сборка zigbee2mqtt из исходников]]