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

Навигация

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

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


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


* [[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-->
Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:
Для корректной работы модуля рекомендуется прошивка [https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin Z-Stack].
* 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 и загрузочный кабель. (Можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531+загрузочный+кабель Aliexpress.com])
Для установки свежей версии, введите команду:
:<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/getting_started/flashing_the_cc2531.html сайте zigbee2mqtt].
Чтобы установить 1.18.1, выполните:
:<syntaxhighlight lang="bash">
apt update && apt install zigbee2mqtt-1.18.1
</syntaxhighlight>


== zigbee2mqtt == <!--T:10-->
Альтернативный способ установки — сборка из исходников по [[Zigbee2mqtt-src | инструкции]].


<!--T:11-->
Дальше мост надо настроить, смотрите раздел Конфигурация.
[https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] - Это мост, позволяющий управлять Zigbee устройствами через MQTT. Работает на Node.js, позволяет легко интегрировать Zigbee устройства в различные системы автоматизации такие как Home Assistant, Node Red и тд.
<!--T:12-->
Вы найдете всю необходимую информацию на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt].


== zigbee2mqtt версия для WB == <!--T:13-->
После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:
<!--T:14-->
<syntaxhighlight lang="bash">
Мы немного изменили код zigbee2mqtt для поддержки Wiren Board MQTT Conventions. Измененную версию вы можете найти в нашем [https://github.com/contactless/zigbee2mqtt репозитории на GitHub]
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt
</syntaxhighlight>


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


Настройка:
# Откройте файл конфигурации для редактированияː
#:<syntaxhighlight lang="bash">
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
</syntaxhighlight>
# По умолчанию файл конфигурации выглядит так, в параметре '''port''' укажите порт, куда физически вставлен модуль:
#:<syntaxhighlight lang="bash">
homeassistant: false
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
serial:
  port: /dev/ttyMOD4
advanced:
  rtscts: false
  last_seen: epoch
  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''' в стандартном веб-интерфейсе контроллера.


Настраиваем репозиторий Node JS
=== Веб-интерфейс (Frontend) ===
<pre>
Веб-интерфейс zigbee2mqtt потребляет ресурсы контроллера — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.
curl -sL https://deb.nodesource.com/setup_10.x | bash -
</pre>


Устанавливаем необходимые компоненты
Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:
<pre>
# Откройте файл <code>configuration.yaml</code> для редактированияː
apt-get install -y nodejs git make g++ gcc
#:<syntaxhighlight lang="bash">
</pre>
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>


''Если хотите установить версию c поддержкой Wiren Board MQTT Conventions''
Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера '''192.168.42.1''', а порт указан '''8081''', то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081
<pre>
git clone https://github.com/contactless/zigbee2mqtt /opt/zigbee2mqtt
</pre>


''Либо если хотите установить оригинальную версию''
=== Обновление ===
<pre>
Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по [[Wiren_Board_Software | инструкции]]. Будут сохранены все настройки и подключенные устройства.
git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
</pre>


Настраиваем права
Если у вас старый адаптер [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module | WBE2R-R-ZIGBEE v.1]], выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:
<pre>
* Прошить старый адаптер свежей прошивкой,  [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#flashing | инструкция]].
chown -R root:root /opt/zigbee2mqtt
* Поставить пакет с версией, которая работает с этими адаптерами — это возможно сделать только на релизе wb-2207, в более свежих релизах на bullseye этого пакета нет:
</pre>
*:<syntaxhighlight lang="bash">
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-стик].


Заходим в директорию и запускаем установку
== Конвертер wb-zigbee2mqtt ==
<pre>
=== Описание ===
cd /opt/zigbee2mqtt
[[Image: wb-zigbee2mqtt new device in Devices.png |300px|thumb|right| Zigbee-устройство на вкладке Devices — в заголовке указан ''friendly_name'' ]]
npm install
Wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил [[wb-rules]] и устанавливается в папку с системными правилами wb-rules-system.
</pre>


В процессе установки будет показано несколько предупреждений. Их можно игнорировать.
=== Принцип работы ===
Конвертер '''wb-zigbee2mqtt''' запрашивает у zigbee2mqtt список всех подключенных устройств и подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию.  


<!--T:16-->
Так же конвертер создает виртуальное устройство ''zigbee2mqtt'' и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка ''Update devices''. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.
Для автоматического запуска zigbee2mqtt необходимо создать сервис. Для этого зайдите в папку /etc/systemd/system/ и создайте файл zigbee2mqtt.service


Откройте файл и скопируйте в него следующий текстː
=== Установка ===
<pre>
[Unit]
Description=zigbee2mqtt
After=network.target


[Service]
wb-zigbee2mqtt ставится автоматически при установке пакета zigbee2mqtt, если этого не произошло, установите его командой:
ExecStart=/usr/bin/npm start
<syntaxhighlight lang="bash">
WorkingDirectory=/opt/zigbee2mqtt
apt update && apt install wb-zigbee2mqtt
StandardOutput=inherit
</syntaxhighlight>
StandardError=inherit
Restart=always
User=root


[Install]
После этого в стандартном веб-интерфейсе контроллера на вкладке ''Devices'' появится устройство ''zigbee2mqtt''.
WantedBy=multi-user.target
</pre>


И сохраните файл. После этого для активации сервиса следует ввести в консоль команду
=== Добавление устройств ===
<pre>
[[Image: WebUI Add Zigbee Device.png |300px|thumb|right| Добавление устройства, сообщение ''Device '0x00158d0007013f71' is supported.'']]
systemctl enable zigbee2mqtt.service
[[Image: WebUI Add Zigbee Device Unsupported.png |300px|thumb|right| Неподдерживаемое устройство, сообщение ''Device '0x2c1165fffeabe0b8' not supported.'']]
</pre>
Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:
<!--T:17-->
# Перейдите в [[Wiren Board Web Interface | стандартный веб-интерфейс контроллера]].
Полную инструкцию можно найти на [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html сайте zigbee2mqtt].
# Откройте вкладку '''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'''.


== Конфигурация == <!--T:18-->
Иногда, новые устройства не появляются на вкладке Devices — это может быть по причинам:
<!--T:19-->
# Произошла ошибка в конвертере при разборе данных от zigbee2mqtt, в этом случае перезапустите движок правил:
После установки нужно настроить контроллер.
#: <syntaxhighlight lang="bash">
 
systemctl restart wb-rules
Если Вы используете модуль расширения [[WBE2R-R-ZIGBEE]],то убедитесь, что правильно выставили модуль в Configs => Hardware Modules Configuration.
</syntaxhighlight>
 
# Некоторые устройства не поддерживаются zigbee2mqtt, для таких устройств в сообщении будет указано ''Starting interview on 0xN → Device 0xN ... is NOT supported''. В этом случае убедитесь, что устройство есть в [https://www.zigbee2mqtt.io/supported-devices/ списке поддерживаемых] и у вас установлена свежая версия zigbee2mqtt.
Далее зайдите в папку /opt/zigbee2mqtt/data и отредактируйте файл configuration.yaml ː
 
<pre>
# Настройка для интеграции с homeassistant
homeassistant: false
 
# Разрешение на добавление новых устройств (Измените этот параметр на falsе после добавления всех необходимых устройств)
permit_join: true
 
# Настройки MQTT сервера
mqtt:
  server: 'mqtt://localhost'
 
# Настройка порта
serial:
  port: /dev/ttyMOD3
advanced:
  # Если вы используете CC2530. (удалите этот параметр, если используете USB стик CC2531)
  rtscts: false
 
  # штамп времени
  last_seen: epoch


</pre>
Ещё бывает так, что карточка устройства появилась, но пустая — это значит, что устройство добавлено, но данные пока не были получены. Если это датчик, то тут нужно немного подождать, а в случае с выключателем — выключить или включить его.


Полное описание настроек можно найти на [https://www.zigbee2mqtt.io/configuration/configuration.html сайте zigbee2mqtt].
=== Изменение 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]).


После изменения настроек введите команду
<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>


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


== Запуск ==
Пример включения и отключения реле с ''friendly_name'' равным ''0x00158d0001f3fc34'' в правилах [[wb-rules]]:
Для запуска, остановки и перезапуска сервиса используйте команды
<syntaxhighlight lang="js">
publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);
</syntaxhighlight>


<pre>
Вместо wb-rules вы можете использовать [[Node-RED]].
service zigbee2mqtt start
service zigbee2mqtt stop
service zigbee2mqtt restart
</pre>


== Добавление устройств ==
=== Удаление устройств ===
Чтобы удалить устройство:
# Убедитесь, что в карточке устройства с заголовком ''Zigbee2mqtt'' перключатель '''Permit join''' находится в положении ''OFF''.
# Разорвите связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд, смотрите документацию на устройство.
# Проследите, чтобы в карточке с заголовком ''Zigbee2mqt''t в поле '''Log''' появилось сообщение ''left_network''.
# Удалите карточку этого Zigbee-устройства из веб-интерфейса, для этого наведите на заголовок карточки курсор мыши и нажмите на корзинку.
# Подключитесь к контроллеру по [[SSH]] и перезапустите wb-rules — это перезапустит конвертер wb-zigbee2mqtt:
#:<syntaxhighlight lang="bash">
systemctl restart wb-rules
</syntaxhighlight>


Что бы добавить Zigbee устройство убедитесь, что в настройках моста включен параметр "permit_join" :
<gallery mode="packed" heights="180px">
Image: WebUI Zigbee Device Left Network.png | Сообщение ''left_network''
Image: WebUI Zigbee Device Remove.png | Корзинка для удаления карточки Zigbee-устройства
</gallery>


<pre>
=== Как переустановить с сохранением данных ===
permit_join: true
</pre>


Далее следуйте инструкции к устройству. В основном требуется зажать кнопку "pair" на несколько секунд и дождаться "мигания" светодиода. После этого устройство должно передать информацию о себе на контроллер. Иногда требуется дополнительно нажимать на кнопку каждую секунду, что бы устройство не "уснуло". После успешного добавления устройство автоматически появится во вкладке Devices.
В некоторых случаях может потребоваться переустановить конвертер с сохранением данных, например, если мост не стартует после обновления.


Более подробная информация на [http://www.zigbee2mqtt.io/getting_started/pairing_devices.html сайте zigbee2mqtt].
Инструкция:
# Перейдите в домашний каталог:
#:<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>


== MQTT ==
== Диагностика неисправностей  ==
Описание структуры топиков и сообщений вы можете найти на [http://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html сайте zigbee2mqtt].
Если вы столкнулись с проблемами в работе zigbee2mqtt, то прояснить ситуацию поможет статус сервиса и чтение подробных логов. Для выполнения команд подключитесь к контроллеру по [[SSH]].


В версии адаптированной под Wiren Board MQTT Conventions структура топиков иная:
Посмотреть текущий статус и последние несколько сообщений из лога можно командой:
<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)


{| class="wikitable"
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.
! WB MQTT
May 13 10:06:04 wirenboard-AYXIHFQ6 systemd[1]: zigbee2mqtt.service: Failed with result 'exit-code'.
|-
</syntaxhighlight>
| zigbee2mqtt/bridge/state
[[Image: zigbee2mqtt-wrong-start.png |300px|thumb|right| Пример проблем при запуске zigbee2mqtt командой ''npm start'' ]]
| /devices/zigbee/controls/state
[[Image: zigbee2mqtt-successful-start.png |300px|thumb|right| Пример успешного запуска zigbee2mqtt при выполнении команды ''npm start'' ]]
|-
Часто бывает так, что из предыдущего шага мы видим наличие проблемы, но причина непонятна, в этом случае нужно смотреть логи:
| zigbee2mqtt/bridge/config
# Остановите сервис командой:
| /devices/zigbee/controls/config
#:<syntaxhighlight lang="bash">
|-
systemctl stop zigbee2mqtt
| zigbee2mqtt/bridge/log
</syntaxhighlight>
| /devices/zigbee/controls/log
# Перейдите в каталог с zigbee2mqtt:
|-
#:<syntaxhighlight lang="bash">
| zigbee2mqtt/bridge/config/devices/get
cd /mnt/data/root/zigbee2mqtt/
| /devices/zigbee/controls/config/devices/get
</syntaxhighlight>
|-
# Запустите zigbee2mqtt в ручном режиме с выводом всех сообщений в консоль командой <code>npm start</code>:
| zigbee2mqtt/bridge/config/permit_join
#:<syntaxhighlight lang="console" highlight="12">
| /devices/zigbee/controls/config/permit_join
# npm start
|-
| zigbee2mqtt/bridge/config/last_seen
| /devices/zigbee/controls/config/last_seen
|-
| zigbee2mqtt/bridge/config/elapsed
| /devices/zigbee/controls/config/elapsed
|-
| zigbee2mqtt/bridge/config/reset
| /devices/zigbee/controls/config/reset
|-
| zigbee2mqtt/bridge/config/log_level
| /devices/zigbee/controls/config/log_level
|-
| zigbee2mqtt/bridge/config/device_options
| /devices/zigbee/controls/config/device_options
|-
| zigbee2mqtt/bridge/config/remove
| /devices/zigbee/controls/config/remove
|-
| zigbee2mqtt/bridge/config/ban
| /devices/zigbee/controls/config/ban
|-
| zigbee2mqtt/bridge/config/rename
| /devices/zigbee/controls/config/rename
|-
| zigbee2mqtt/bridge/config/add_group
| /devices/zigbee/controls/config/add_group
|-
| zigbee2mqtt/bridge/config/remove_group
| /devices/zigbee/controls/config/remove_group
|-
| zigbee2mqtt/bridge/networkmap
| /devices/zigbee/controls/bridge/networkmap
|-
| zigbee2mqtt/bridge/group/[friendly_name]/add
| /devices/zigbee/controls/bridge/group/[friendly_name]/add
|-
| zigbee2mqtt/bridge/group/[friendly_name]/remove
| /devices/zigbee/controls/bridge/group/[friendly_name]/remove
|-
| zigbee2mqtt/bridge/group/[friendly_name]/remove_all
| /devices/zigbee/controls/bridge/group/[friendly_name]/remove_all
|-
| zigbee2mqtt/bridge/bind/[friendly_name]
| /devices/zigbee/controls/bridge/bind/[friendly_name]
|-
| zigbee2mqtt/bridge/unbind/[friendly_name]
| /devices/zigbee/controls/bridge/unbind/[friendly_name]
|-
| zigbee2mqtt/bridge/device/[friendly_name]/get_group_membership
| /devices/zigbee/controls/bridge/device/[friendly_name]/get_group_membership
|-
| zigbee2mqtt/[DEVICE_ID]/set
| /devices/[DEVICE_ID]/set
|-
| zigbee2mqtt/[DEVICE_ID]/get
| /devices/[DEVICE_ID]/get
|-
| zigbee2mqtt/[DEVICE_ID]
| /devices/[DEVICE_ID]/controls/[property]
|}


> 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.


Для управления Zigbee устройствами необходимо отправить json с командой в /devices/[DEVICE_ID]/set
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>.
<pre>
defineRule("control_zigbee", {
  whenChanged: "0x00158d0002333f93/click", //следим за кнопкой
  then: function (newValue, devName, cellName)  {
   
    if(newValue == "single"){ //если было одинарное нажатие на кнопку


    publish("/devices/0x00158d0002333f93/controls/click", "processed", 2, true); // Что бы отличать старый клик от нового - записываем любое значение в топик.
Иногда может потребоваться отключить автозапуск сервиса, управлять автозапуском можно командами:
    //вместо этого можно просто следить за штампом времени "last_seen"
<syntaxhighlight lang="bash">
    publish("/devices/0x00124b0009fe360d/set", JSON.stringify({state: "TOGGLE"}), 2, true); // отправляем JSON на zigbee розетку. TOGGLE - переключить состояние.
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt
</syntaxhighlight>


    }
== Полезные ссылки ==
  }
* [https://www.zigbee2mqtt.io/ Документация zigbee2mqtt]
});
* [https://habr.com/ru/company/wirenboard/blog/713274/ Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED]
</pre>
* [https://habr.com/ru/companies/wirenboard/articles/750640/ Подключаем Zigbee-устройства к контроллеру Wiren Board и пишем сценарии на wb-rules]
* [[zigbee2mqtt-src| Сборка zigbee2mqtt из исходников]]