Подключение устройств Zigbee к контроллеру Wiren Board
Описание
Для использования Zigbee-устройств с контроллером Wiren Board понадобится:
- Модуль расширения WBE2R-R-ZIGBEE или любой USB Zigbee стик.
- Дополнительное ПО:
- zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через MQTT, поддерживаемые устройства.
- wb-zigbee2mqtt — конвертер данных из топиков zigbee2mqtt в Wiren Board MQTT Conventions.
Инструкции по установке смотрите ниже на этой странице.
Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.
Установка и настройка zigbee2mqtt
Процесс установки
Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Самая свежая версия всегда доступна в тестовом релизе.
Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:
- zigbee2mqtt — всегда свежая версия, рекомендуем ставить её.
- zigbee2mqtt-1.18.1 — версия для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года. Таблица ревизий.
Для установки свежей версии, введите команду:
apt update && apt install zigbee2mqtt
Для установки старой версии 1.18.1 версии, введите команду:
apt update && apt install zigbee2mqtt-1.18.1
Альтернативный способ установки — сборка из исходников по инструкции.
После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt
Обновление
Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по инструкции. Будут сохранены все настройки и подключенные устройства.
Если у вас старый адаптер WBE2R-R-ZIGBEE v.1, выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:
- Прошить старый адаптер свежей прошивкой, инструкция.
- Поставить пакет с версией, которая работает с этими адаптерами:
apt remove zigbee2mqtt && apt install zigbee2mqtt-1.18.1
- этот пакет не обновляется, поэтому проблем при будущих обновлениях ПО контроллера не будет.
- Заменить адаптер на WBE2R-R-ZIGBEE v.2 или использовать поддерживаемый USB-стик.
Конфигурация
Если вы используете модуль расширения WBE2R-R-ZIGBEE, убедитесь, что правильно выставили модуль в Settings → Configs → Hardware Modules Configuration. При использовании USB-стика порт будет называться /dev/ttyUSBx
, где x — номер порта, нумерация с нуля.
Настройка:
- Откройте файл конфигурации для редактированияː
mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
- Приведите его к виду:
homeassistant: false permit_join: false mqtt: base_topic: zigbee2mqtt server: 'mqtt://localhost' serial: port: /dev/ttyMOD3 advanced: rtscts: false last_seen: epoch
- в параметре port укажите порт, куда физически вставлен модуль.
- Сохраните и закройте файл.
- Перезапустите сервис
zigbee2mqtt
:systemctl restart zigbee2mqtt
Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства будут добавлены на вкладку Devices в стандартном веб-интерфейсе контроллера.
Веб-интерфейс (Frontend)
Веб-интерфейс zigbee2mqtt потребляет ресурсы контроллера — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.
Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:
- Откройте файл
configuration.yaml
для редактированияːmcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
- Добавьте в него блок:
frontend: port: 8081 host: 0.0.0.0
- Сохраните и закройте файл.
- Перезапустите сервис
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 в топики виртуальных устройств, написан на движке правил wb-rules и устанавливается в папку с системными правилами wb-rules-system.
Принцип работы
Конвертер wb-zigbee2mqtt запрашивает у zigbee2mqtt список всех подключенных устройств и подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию.
Так же конвертер создает виртуальное устройство zigbee2mqtt и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка Update devices. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.
Установка
Для установки выполните команду:
apt update && apt install wb-zigbee2mqtt
После этого в стандартном веб-интерфейсе контроллера на вкладке Devices появится устройство zigbee2mqtt.
Добавление устройств
Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:
- Перейдите в стандартный веб-интерфейс контроллера.
- Откройте вкладку Devices.
- Найдите там карточку устройства Zigbee2mqtt и проверьте статус в поле State — должно быть написано online. Если вы только, что установили zigbee2mqtt и указан статус offline — подождите пару минут.
- Включите переключатель Permit join.
- Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку pair на несколько секунд и дождаться мигания индикатора на устростве.
- В процессе добавления устройства в карточке Zigbee2mqtt в поле Log по очереди будут появляться сообщения interview_started → announce → interview_successful. Последнее сообщение означает, что устройство успешно опрошено. В этом сообщении не должно быть параметра supported:false (устройство не поддерживается).
- Повторите шаги 5 и 6 для каждого Zigbee-устройства, которое у вас есть.
- Завершите добавление устройств, для этого выключите переключатель Permit join.
- Нажмите кнопку Update devices, добавленные устройства будут доступны на вкладке Devices.
Иногда, новые устройства не появляются на вкладке Devices — это может быть по двум причинам:
- Произошла ошибка в конвертере при разборе данных от zigbee2mqtt, в этом случае перезапустите движок правил:
systemctl restart wb-rules
- Некоторые устройства не поддерживаются zigbee2mqtt, для таких устройств в сообщении об успешном опросе interview_successful будет указано supported:false. В этом случае убедитесь, что устройство есть в списке поддерживаемых и у вас установлена свежая версия zigbee2mqtt.
Изменение friendly_name
friendly_name — это человекочитаемое имя устройства. Вы можете оставить значение по умолчанию, или настроить своё:
- Откройте файл конфигурации для редактированияː
mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
- Найдите в секции devices ваше устройство.
- Измените friendly_name.
- Сохраните файл настроек и перезапустите сервис:
systemctl restart zigbee2mqtt
- В стандартном веб-интерфейсек контроллера на вкладке Devices должно появиться устройство с заданным именем.
- Удалите карточку устройства со старым именем с вкладки Devices, для этого нажмите на корзинку в заголовке.
Новое имя устройство должно соответствовать этим требованиям и не должно быть одинаковым для нескольких устройств.
- Изменение friendly_name
Управление устройствами
Управление устройствами через конвертер 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);
Удаление устройств
Чтобы удалить устройство нужно:
- Разорвать связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд.
- Проследить, чтобы в карточке с заголовком Zigbee2mqtt в поле Log появилось сообщение left_network.
- Удалить карточку Zigbee-устройства, которое хотите удалить из веб-интерфейса, для этого наведите на него курсор мыши и нажмите на корзинку в заголовке.
- Подключиться к контроллеру по SSH и перезапустить wb-rules:
systemctl restart wb-rules
Диагностика неисправностей
Если вы столкнулись с проблемами в работе zigbee2mqtt, то прояснить ситуацию поможет просмотр статуса сервиса и чтение логов.
Посмотреть текущий статус и последние несколько сообщений из лога можно командой:
# 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'.
Часто бывает так, что из предыдущего шага причина непонятна, в этом случае нужно смотреть логи:
- Остановите сервис командой:
systemctl stop zigbee2mqtt
- Перейдите в каталог с zigbee2mqtt:
cd /mnt/data/root/zigbee2mqtt/
- Запустите zigbee2mqtt в ручном режиме с выводом логов в консоль командой
npm start
:# 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
- здесь сразу видно, что мы в настройках неверно указали порт.
- После того, как вы нашли и устранили проблему, снова запустите сервис:
systemctl start zigbee2mqtt
Если при выполнении npm start
сервис запустился успешно, то остановить его можно нажатием клавиш Ctrl+C.
Иногда может потребоваться отключить автозапуск сервиса, управлять автозапуском можно командами:
systemctl disable zigbee2mqtt
systemctl enable zigbee2mqtt