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

Материал из Wiren Board
(не показаны 83 промежуточные версии 6 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:Подключение устройств Zigbee к контроллеру Wiren Board}}
{{DISPLAYTITLE:Подключение устройств Zigbee к контроллеру Wiren Board}}
== Описание ==
== Описание ==
Для использования Zigbee-устройств с контроллером Wiren Board понадобится:
Для использования Zigbee-устройств с контроллером [[Wiren Board]] понадобится:
# Модуль расширения [[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|WBE2R-R-ZIGBEE]] или любой USB Zigbee стик.
# Дополнительное ПО:
# Дополнительное ПО:
#* zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через [[MQTT]], [https://www.zigbee2mqtt.io/supported-devices/ поддерживаемые устройства].
#* [[#zigbee2mqtt | zigbee2mqtt]] — мост, с помощью которого можно управлять Zigbee-устройствами через MQTT.
#* wb-zigbee2mqtt — конвертер данных из топиков zigbee2mqtt в [https://github.com/wirenboard/conventions/ Wiren Board MQTT Conventions].
#* [[#wb-zigbee2mqtt | wb-zigbee2mqtt]] — конвертер из zigbee2mqtt в Wiren Board MQTT Conventions.


Инструкции по установке смотрите ниже на этой странице.  
== Установка и настройка zigbee2mqtt ==
 
=== Описание ===
Zigbee2mqtt — это мост, с помощью которого вы можете управлять Zigbee устройствами через MQTT. Он работает на Node.js и позволяет интегрировать Zigbee устройства в различные системы автоматизации: Home Assistant, Node Red и тд.
Официальный сайт — [https://www.zigbee2mqtt.io/ zigbee2mqtt].


{{Wbincludes:Installing Software In Console}}
{{Wbincludes:Installing Software In Console}}


== Установка и настройка zigbee2mqtt ==
=== Процесс установки ===
=== Процесс установки ===
Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Самая свежая версия всегда доступна в [[testing | тестовом релизе]].
Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Все свежии версии доступны в [[testing | тестовом релизе]].


Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:
Мы рекомендуем устанавливать готовый пакет из нашего репозитория, введите команду:
* zigbee2mqtt — всегда свежая версия, рекомендуем ставить её.
<syntaxhighlight lang="bash">
* zigbee2mqtt-1.18.1 — версия для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года. [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#revisions |Таблица ревизий]].
 
Для установки свежей версии, введите команду:
:<syntaxhighlight lang="bash">
apt update && apt install zigbee2mqtt
apt update && apt install zigbee2mqtt
</syntaxhighlight>
Чтобы установить 1.18.1, выполните:
:<syntaxhighlight lang="bash">
apt update && apt install zigbee2mqtt-1.18.1
</syntaxhighlight>
</syntaxhighlight>


Альтернативный способ установки — сборка из исходников по [[Zigbee2mqtt-src | инструкции]].
Альтернативный способ установки — сборка из исходников по [[Zigbee2mqtt-src | инструкции]].
Дальше мост надо настроить, смотрите раздел Конфигурация.
После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:
<syntaxhighlight lang="bash">
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt
</syntaxhighlight>


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


Настройка:
Настройка:
# Откройте файл конфигурации для редактированияː
# Откройте файл <code>configuration.yaml</code> для редактированияː
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
</syntaxhighlight>
</syntaxhighlight>
# По умолчанию файл конфигурации выглядит так, в параметре '''port''' укажите порт, куда физически вставлен модуль:
# Приведите его к виду
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
homeassistant: false
homeassistant: false
Строка 56: Строка 41:
   server: 'mqtt://localhost'
   server: 'mqtt://localhost'
serial:
serial:
   port: /dev/ttyMOD4
   port: /dev/ttyMOD3
advanced:
advanced:
   rtscts: false
   rtscts: false
   last_seen: epoch
   last_seen: epoch
  pan_id: GENERATE
  network_key: GENERATE
</syntaxhighlight>
</syntaxhighlight>
#: вместо GENERATE после первого запуска моста появятся значения, '''не изменяйте''' их. Если изменяете - то откорректируйте/удалите бэкап.  
#:в параметре '''port''' укажите порт, куда физически вставлен модуль.
# {{Wbincludes:Save nano}}
# Сохраните и закройте файл.
# Перезапустите сервис <code>zigbee2mqtt</code>:
# Перезапустите сервис <code>zigbee2mqtt</code>:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
systemctl restart zigbee2mqtt
systemctl restart zigbee2mqtt
</syntaxhighlight>
</syntaxhighlight>
Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства будут добавлены на вкладку '''Devices''' в стандартном веб-интерфейсе контроллера.
 
Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства можно будет добавить на вкладку '''Devices'''.
 
=== Управление сервисом ===
Сервис запускается по умолчанию, но вы можете управлять им с помощью команд:
<syntaxhighlight lang="bash">
systemctl start zigbee2mqtt # запуск
systemctl stop zigbee2mqtt # остановка
systemctl restart zigbee2mqtt # перезапуск
systemctl status zigbee2mqtt # получить статус
</syntaxhighlight>


=== Веб-интерфейс (Frontend) ===
=== Веб-интерфейс (Frontend) ===
Строка 77: Строка 70:
# Откройте файл <code>configuration.yaml</code> для редактированияː
# Откройте файл <code>configuration.yaml</code> для редактированияː
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
</syntaxhighlight>
</syntaxhighlight>
# Добавьте в него блок:
# Добавьте в него блок:
Строка 93: Строка 86:
Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера '''192.168.42.1''', а порт указан '''8081''', то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081
Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера '''192.168.42.1''', а порт указан '''8081''', то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081


=== Обновление ===
== Установка конвертера wb-zigbee2mqtt ==
Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по [[Wiren_Board_Software | инструкции]]. Будут сохранены все настройки и подключенные устройства.
=== Описание ===
Wb-zigbee2mqtt — это простой конвертер из zigbee2mqtt в [https://github.com/wirenboard/conventions/ Wiren Board MQTT Conventions]. Конвертер написан на движке правил [[wb-rules]] и устанавливается в папку с системными правилами wb-rules-system.


Если у вас старый адаптер [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module | WBE2R-R-ZIGBEE v.1]], выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:
<gallery mode="traditional" widths ="382px" heights="300px">
* Прошить старый адаптер свежей прошивкой,  [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#flashing | инструкция]].
Image: wb-zigbee2mqtt pair device.png | Добавление устройства в wb-zigbee2mqtt. Найдено устройство '''Aqara single switch module T1 (without neutral)'''
* Поставить пакет с версией, которая работает с этими адаптерами — это возможно сделать только на релизе wb-2207, в более свежих релизах на bullseye этого пакета нет:
Image: wb-zigbee2mqtt new device in Devices.png | Новое Zigbee-устройство на вкладке Devices — в заголовке указан friendly_name
*:<syntaxhighlight lang="bash">
</gallery>
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 ==
=== Описание ===
[[Image: wb-zigbee2mqtt new device in Devices.png |300px|thumb|right| Zigbee-устройство на вкладке Devices — в заголовке указан ''friendly_name'' ]]
Wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил [[wb-rules]] и устанавливается в папку с системными правилами wb-rules-system.


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


Так же конвертер создает виртуальное устройство ''zigbee2mqtt'' и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка ''Update devices''. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.
Так же конвертер создает виртуальное устройство «zigbee2mqtt» и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка «update devices». При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.


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


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


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


=== Изменение friendly_name ===
Добавленные устройства будут доступны на вкладке '''Devices'''.
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>


=== Управление устройствами ===
=== Управление устройствами ===
Управление через конвертер 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)


Пример включения и отключения реле с ''friendly_name'' равным ''0x00158d0001f3fc34'' в правилах [[wb-rules]]:
Пример управления устройством в правилах [[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 секунд.
# Разорвите связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд, смотрите документацию на устройство.
# Проследить, чтобы в карточке с заголовком Zigbee2mqtt в поле Log появилось сообщение ''left_network''.
# Проследите, чтобы в карточке с заголовком ''Zigbee2mqt''t в поле '''Log''' появилось сообщение ''left_network''.
# Удалить карточку Zigbee-устройства, которое хотите удалить из веб-интерфейса, для этого наведите на него курсор мыши и нажмите на корзинку в заголовке.
# Удалите карточку этого Zigbee-устройства из веб-интерфейса, для этого наведите на заголовок карточки курсор мыши и нажмите на корзинку.
# Подключиться к контроллеру по [[SSH]] и перезапустить wb-rules:
# Подключитесь к контроллеру по [[SSH]] и перезапустите wb-rules — это перезапустит конвертер wb-zigbee2mqtt:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
systemctl restart wb-rules
systemctl restart wb-rules
Строка 193: Строка 144:
<gallery mode="packed" heights="180px">  
<gallery mode="packed" heights="180px">  
Image: WebUI Zigbee Device Left Network.png | Сообщение ''left_network''
Image: WebUI Zigbee Device Left Network.png | Сообщение ''left_network''
Image: WebUI Zigbee Device Remove.png | Корзинка для удаления карточки Zigbee-устройства
Image: WebUI Zigbee Device Remove.png | Корзинка для удаления Zigbee-устройства
</gallery>
</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 из исходников]]

Версия 19:47, 12 мая 2022

Описание

Для использования Zigbee-устройств с контроллером Wiren Board понадобится:

  1. Модуль расширения WBE2R-R-ZIGBEE или любой USB Zigbee стик.
  2. Дополнительное ПО:
    • zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через MQTT.
    • wb-zigbee2mqtt — конвертер из zigbee2mqtt в Wiren Board MQTT Conventions.

Установка и настройка zigbee2mqtt

Описание

Zigbee2mqtt — это мост, с помощью которого вы можете управлять Zigbee устройствами через MQTT. Он работает на Node.js и позволяет интегрировать Zigbee устройства в различные системы автоматизации: Home Assistant, Node Red и тд. Официальный сайт — zigbee2mqtt.

Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.

Процесс установки

Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Все свежии версии доступны в тестовом релизе.

Мы рекомендуем устанавливать готовый пакет из нашего репозитория, введите команду:

apt update && apt install zigbee2mqtt

Альтернативный способ установки — сборка из исходников по инструкции.

Конфигурация

Если вы используете модуль расширения WBE2R-R-ZIGBEE, убедитесь, что правильно выставили модуль в SettingsConfigsHardware Modules Configuration. При использовании USB-стика порты будут называться /dev/ttyUSB0 и /dev/ttyUSB1.

Настройка:

  1. Откройте файл configuration.yaml для редактированияː
    mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
    
  2. Приведите его к виду
    homeassistant: false
    permit_join: false
    mqtt:
      base_topic: zigbee2mqtt
      server: 'mqtt://localhost'
    serial:
      port: /dev/ttyMOD3
    advanced:
      rtscts: false
      last_seen: epoch
    
    в параметре port укажите порт, куда физически вставлен модуль.
  3. Сохраните и закройте файл.
  4. Перезапустите сервис zigbee2mqtt:
    systemctl restart zigbee2mqtt
    

Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства можно будет добавить на вкладку Devices.

Управление сервисом

Сервис запускается по умолчанию, но вы можете управлять им с помощью команд:

systemctl start zigbee2mqtt # запуск
systemctl stop zigbee2mqtt # остановка
systemctl restart zigbee2mqtt # перезапуск
systemctl status zigbee2mqtt # получить статус

Веб-интерфейс (Frontend)

Веб-интерфейс zigbee2mqtt потребляет ресурсы контроллера — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.

Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:

  1. Откройте файл configuration.yaml для редактированияː
    mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
    
  2. Добавьте в него блок:
    frontend:
      port: 8081
      host: 0.0.0.0
    
  3. Сохраните и закройте файл.
  4. Перезапустите сервис zigbee2mqtt:
    systemctl restart zigbee2mqtt
    

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

Установка конвертера wb-zigbee2mqtt

Описание

Wb-zigbee2mqtt — это простой конвертер из zigbee2mqtt в Wiren Board MQTT Conventions. Конвертер написан на движке правил wb-rules и устанавливается в папку с системными правилами wb-rules-system.

Принцип работы

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

Так же конвертер создает виртуальное устройство «zigbee2mqtt» и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка «update devices». При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.

Установка

Подключитесь к контроллеру по SSH и выполните команду:

apt update && apt install wb-zigbee2mqtt

После этого в веб-интерфейса контроллера на вкладке Devices появится устройство «zigbee2mqtt».

Добавление устройств

Добавление устройства, сообщение interview_successful

Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:

  1. Перейдите в веб-интерфейс контроллера.
  2. Откройте вкладку Devices.
  3. Найдите там карточку устройства Zigbee2mqtt и проверьте статус в поле State — должно быть написано online.
  4. Включите переключатель Permit join.
  5. Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку pair на несколько секунд и дождаться «мигания» светодиода.
  6. В процессе добавления устройства в карточке Zigbee2mqtt в поле Log по очереди будут появляться сообщения interview_started → announce → interview_successful. Последнее сообщение означает, что устройство добавлено успешно.
  7. Повторите шаги 5 и 6 для каждого Zigbee-устройства, которое у вас есть.
  8. Завершите добавление устройств, для этого выключите переключатель Permit join.
  9. Нажмите кнопку Update devices.

Добавленные устройства будут доступны на вкладке Devices.

Управление устройствами

Управление устройствами через конвертер wb-zigbee2mqtt пока не реализовано. Но управлять устройствами можно стандартными инструментами zigbee2mqtt через wb-rules (функция publish)

Пример управления устройством в правилах wb-rules:

 publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
 publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);

Удаление устройств

Чтобы удалить устройство нужно:

  1. Разорвать связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд.
  2. Проследить, чтобы в карточке с заголовком Zigbee2mqtt в поле Log появилось сообщение left_network.
  3. Удалить карточку Zigbee-устройства, которое хотите удалить из веб-интерфейса, для этого наведите на него курсор мыши и нажмите на корзинку в заголовке.
  4. Подключиться к контроллеру по SSH и перезапустить wb-rules:
    systemctl restart wb-rules