Подключение устройств Zigbee к контроллеру Wiren Board
Описание
Для использования Zigbee-устройств с контроллером Wiren Board понадобится:
- Модуль расширения WBE2R-R-ZIGBEE или любой USB Zigbee стик.
- Дополнительное ПО:
- zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через MQTT.
- wb-zigbee2mqtt — конвертер из zigbee2mqtt в Wiren Board MQTT Conventions.
zigbee2mqtt
Описание
Zigbee2mqtt — это мост, с помощью которого вы можете управлять Zigbee устройствами через MQTT. Он работает на Node.js и позволяет интегрировать Zigbee устройства в различные системы автоматизации: Home Assistant, Node Red и тд. Официальный сайт — zigbee2mqtt.
Установка
Установка с помощью apt
Так как пакет в свой репозиторий мы собираем сами, его версия может отличаться от текущей актуальной версии zigbee2mqtt.
Запустите консоль и введите команду:
apt update && apt install -y zigbee2mqtt
Сборка из исходников
zigbee2mqtt версии 1.22 и выше может не работать с прошивкой модулей WBE2R-R-ZIGBEE, выпущенных до конца 2021 года. Такие модули нужно прошить свежей прошивкой. Это альтернативный метод установки, который позволяет установить актуальную версию zigbee2mqtt. Оригинальная инструкция.
- Установите необходимые компоненты
apt install -y nodejs git make g++ gcc
- Скопируйте файлы из репозитория zigbee2mqtt:
git clone https://github.com/Koenkk/zigbee2mqtt.git /mnt/data/root/zigbee2mqtt
- Настройте права на папку:
chown -R root:root /mnt/data/root/zigbee2mqtt
- Перейдите в папку с исходниками zigbee2mqtt:
cd /mnt/data/root/zigbee2mqtt
- Запустите установку:
npm ci
- В процессе установки будет показано несколько предупреждений. Их можно игнорировать.
Настройте автоматический запуск zigbee2mqtt, для этого создайте сервис:
- Создайте новый файл и откройте его на редактирование:
mcedit /etc/systemd/system/zigbee2mqtt.service
- Скопируйте в него следующий текст:
[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
- Сохраните файл.
- Разрешите автозапуск сервиса командой:
systemctl enable zigbee2mqtt.service
Конфигурация
Если вы используете модуль расширения WBE2R-R-ZIGBEE, убедитесь, что правильно выставили модуль в Settings → Configs → Hardware Modules Configuration.
- Откройте файл
configuration.yaml
для редактированияː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.
Управление сервисом
Сервис запускается по умолчанию, но вы можете управлять им с помощью команд:
systemctl start zigbee2mqtt # запуск
systemctl stop zigbee2mqtt # остановка
systemctl restart zigbee2mqtt # перезапуск
systemctl status zigbee2mqtt # получить статус
Добавление устройств
Если вы не используете wb-zigbee2mqtt, то для добавления нового устройства в настройках zigbee2mqtt включите параметр permit_join:
permit_join: true
Далее следуйте инструкции к устройству. В основном требуется зажать кнопку «pair» на несколько секунд и дождаться «мигания» светодиода. После этого устройство должно передать информацию о себе на контроллер. Иногда требуется дополнительно нажимать на кнопку каждую секунду, что бы устройство не «уснуло». После успешного добавления устройство автоматически появится во вкладке Devices.
Более подробная информация на сайте zigbee2mqtt.
Веб-интерфейс (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 в Wiren Board MQTT Conventions. Конвертер написан на движке правил wb-rules и устанавливается в папку с системными правилами wb-rules-system.
Принцип работы
Конвертер wb-zigbee2mqtt запрашивает у zigbee2mqtt список всех подключенных устройств, подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию. Так же конвертер создает виртуальное устройство «zigbee2mqtt» и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка «update devices». При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и если они появились — подписывается на них.
Установка
Для установки откройте консоль и введите команду:
apt update && apt install wb-zigbee2mqtt
Если вы собирали zigbee2mqtt версии 1.22 и новее из исходников, то не устанавливайте пакет, а положите этот скрипт в папку /usr/share/wb-rules-system/rules/
.
Правильная настройка zigbee2mqtt
Если вы установили zigbee2mqtt через apt, то мост уже настроен для правильной работы с конвертером и этот шаг можно пропустить.
Если вы установили zigbee2mqtt исходников, то убедитесь, что параметр базового топика выставлен верно:
- Откройте файл
configuration.yaml
mcedit /mnt/data/root/zigbee2mqtt/data/configuration.yaml
- Проверьте строки:
mqtt: base_topic: zigbee2mqtt server: 'mqtt://localhost'
- другие настройки на работу конвертера не влияют.
Добавление устройств
Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:
- Перейдите в веб-интерфейс контроллера.
- Откройте вкладку Devices.
- Найдите там карточку устройства Zigbee2mqtt и проверьте статус в поле State — должно быть написано online.
- Включите переключатель Permit join.
- Следуйте инструкции к Zigbee-устройству: в основном требуется зажать на устройстве кнопку pair на несколько секунд и дождаться «мигания» светодиода.
- В процессе добавления устройства в карточке Zigbee2mqtt в поле Log по очереди будут появляться сообщения interview_started → announce → interview_successful. Последнее сообщение означает, что устройство добавлено успешно.
- Повторите шаг 5 для каждого Zigbee-устройства, которое у вас есть.
- Завершите добавление устройств, для этого выключите переключатель Permit join.
Добавленные устройства появятся на вкладке 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);
Удаление устройств
Чтобы удалить устройство нужно:
- Разорвать связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд.
- Проследить, чтобы в карточке с заголовком Zigbee2mqtt в поле Log появилось сообщение left_network.
- Удалить карточку Zigbee-устройства, которое хотите удалить из веб-интерфейса, для этого наведите на него курсор мыши и нажмите на корзинку в заголовке.
- Подключиться к контроллеру по SSH и перезапустить wb-rules:
systemctl restart wb-rules