Wb-zigbee2mqtt

From Wiren Board
This is the approved revision of this page, as well as being the most recent.

Конвертер wb-zigbee2mqtt

Описание

Zigbee-устройство на вкладке Devices — в заголовке указан friendly_name

Был помечен как устаревший с релиза 2606

wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил wb-rules и устанавливается в папку с системными правилами wb-rules-system. Умеет отображать Zigbee-устройства в интерфейсе контроллера Wiren Board, но для управления пользователь должен сам писать в контролы zigbee2mqtt с помощью функции publish.

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

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

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

Установка

wb-zigbee2mqtt ставится автоматически при установке пакета zigbee2mqtt, если этого не произошло, установите его командой:

apt update && apt install wb-zigbee2mqtt

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

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

Добавление устройства, сообщение Device '0x00158d0007013f71' is supported.
Неподдерживаемое устройство, сообщение Device '0x2c1165fffeabe0b8' not supported.

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

  1. Перейдите в стандартный веб-интерфейс контроллера.
  2. Откройте вкладку Devices.
  3. Найдите там карточку устройства Zigbee2mqtt и проверьте статус в поле State — должно быть написано online. Если вы только, что установили zigbee2mqtt и указан статус offline — подождите пару минут.
  4. Включите переключатель Permit join.
  5. Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку pair на несколько секунд и дождаться мигания индикатора на устройстве.
  6. В процессе добавления устройства в карточке Zigbee2mqtt в поле Log по очереди будут появляться сообщения Starting interview on 0xN → Device 0xN is supported. Последнее сообщение означает, что устройство успешно опрошено.
  7. Повторите шаги 5 и 6 для каждого Zigbee-устройства, которое у вас есть.
  8. Завершите добавление устройств, для этого выключите переключатель Permit join.
  9. Нажмите кнопку Update devices, добавленные устройства будут доступны на вкладке Devices.

Иногда, новые устройства не появляются на вкладке Devices — это может быть по причинам:

  1. Произошла ошибка в конвертере при разборе данных от zigbee2mqtt, в этом случае перезапустите движок правил:
    systemctl restart wb-rules
    
  2. Некоторые устройства не поддерживаются zigbee2mqtt, для таких устройств в сообщении будет указано Starting interview on 0xN → Device 0xN ... is NOT supported. В этом случае убедитесь, что устройство есть в списке поддерживаемых и у вас установлена свежая версия zigbee2mqtt.

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

Изменение friendly_name

friendly_name — это человекочитаемое имя устройства. Вы можете оставить значение по умолчанию, или настроить своё:

  1. Откройте файл конфигурации для редактированияː
    nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
    
  2. Найдите в секции devices ваше устройство.
  3. Измените friendly_name.
  4. Сохраните файл настроек и перезапустите сервис:
    systemctl restart zigbee2mqtt
    
  5. В стандартном веб-интерфейсе контроллера на вкладке Devices должно появиться устройство с заданным именем.
  6. Удалите карточку устройства со старым именем с вкладки Devices, для этого нажмите на корзинку в заголовке.

Новое имя устройства должно соответствовать этим требованиям (плюс нельзя использовать косую черту /) и не должно быть одинаковым для нескольких устройств, а также соответствовать определённым правилам — так называемым соглашениям (Wiren Board MQTT Conventions).

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

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

Другими словами, вместо ожидаемого по традиции wb-rules:

dev["friendly_name/control_name"] = "OFF"

надо в скрипте делать:

publish("zigbee2mqtt/friendly_name/set", JSON.stringify({ control_name: "OFF" }), 2, false);

Вот пример включения и отключения реле с friendly_name равным 0x00158d0001f3fc34 в правилах wb-rules:

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

Если wb-rules для вас сложен, вы всегда можете использовать визуальный редактор автоматизаций Node-RED.

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

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

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

Как переустановить с сохранением данных

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

Инструкция:

  1. Перейдите в домашний каталог:
    cd ~
    
  2. Сохраните настройки:
    cp -R /mnt/data/root/zigbee2mqtt/data data-backup
    
  3. Удалите zigbee2mqtt командой:
    apt purge zigbee2mqtt
    
  4. Если остался каталог с node-modules — удалите его:
    rm -r /mnt/data/root/zigbee2mqtt/node_modules
    
  5. Заново поставьте zigbee2mqtt:
    apt install zigbee2mqtt
    
  6. Восстановите настройки из архива:
    cp -R data-backup/* /mnt/data/root/zigbee2mqtt/data
    
  7. Перезапустите сервис:
    systemctl restart zigbee2mqtt