|
|
(не показано 185 промежуточных версий 10 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE:Подключение устройств Zigbee к контроллеру Wiren Board}} | | <languages/> |
| == Описание == | | <!--T:1--> |
| Для использования Zigbee-устройств с контроллером Wiren Board понадобится:
| | {{DISPLAYTITLE:Wiren Board 6: Подключение устройств ZigBee}} |
| # Модуль расширения [[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 стик.
| | == Аппаратная часть == <!--T:4--> |
| # Дополнительное ПО:
| | [[Файл:WBE2R-R-ZIGBEE top.jpg|300px|thumb|right| Лицевая сторона модуля WBE2R-R-ZIGBEE]] |
| #* zigbee2mqtt — мост, с помощью которого можно управлять Zigbee-устройствами через [[MQTT]], [https://www.zigbee2mqtt.io/supported-devices/ поддерживаемые устройства].
| | [[Файл:WBE2R-R-ZIGBEE bot.jpg|300px|thumb|right| Обратная сторона модуля WBE2R-R-ZIGBEE]] |
| #* wb-zigbee2mqtt — конвертер данных из топиков zigbee2mqtt в [https://github.com/wirenboard/conventions/ Wiren Board MQTT Conventions].
| | [[Файл:Flash-programmer.png|thumb|right|300px|FLASH-PROGRAMMER]] |
| | [[Файл:Cc2531-usb.png|300px|thumb|right| USB стик СС2531]] |
|
| |
|
| Инструкции по установке смотрите ниже на этой странице.
| | <!--T:5--> |
| | Для работы контроллера с Zigee устройствами необходимо подключить специальный модуль. Есть несколько вариантовː |
|
| |
|
| {{Wbincludes:Installing Software In Console}} | | * [[Wbe2r-r-zigbee|WBE2R-R-ZIGBEE - Модуль расширения Zigbee]] |
| | * 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 |
| | |} |
|
| |
|
| == Установка и настройка zigbee2mqtt ==
| | <!--T:7--> |
| === Процесс установки ===
| |
| Версия пакета zigbee2mqtt в стабильном релизе может отставать от актуальной версии, которая доступна у автора. Самая свежая версия всегда доступна в [[testing | тестовом релизе]].
| |
|
| |
|
| Мы рекомендуем устанавливать готовый пакет из нашего репозитория, их там два:
| | == Прошивка == <!--T:8--> |
| * zigbee2mqtt — всегда свежая версия, рекомендуем ставить её.
| |
| * zigbee2mqtt-1.18.1 — версия для старых адаптеров WBE2R-R-ZIGBEE v.1, выпущенных до января 2022 года. [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#revisions |Таблица ревизий]].
| |
|
| |
|
| Для установки свежей версии, введите команду:
| | <!--T:9--> |
| :<syntaxhighlight lang="bash"> | | Для корректной работы модуля рекомендуется прошивка [https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin Z-Stack]. |
| apt update && apt install zigbee2mqtt
| |
| </syntaxhighlight>
| |
|
| |
|
| Чтобы установить 1.18.1, выполните:
| | Для прошивки [[WBE2R-R-ZIGBEE]] или USB стика потребуется CC Debugger и загрузочный кабель. (Можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531+загрузочный+кабель Aliexpress.com]) |
| :<syntaxhighlight lang="bash">
| |
| apt update && apt install zigbee2mqtt-1.18.1
| |
| </syntaxhighlight>
| |
|
| |
|
| Альтернативный способ установки — сборка из исходников по [[Zigbee2mqtt-src | инструкции]].
| | Подключите 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]. |
|
| |
|
| Дальше мост надо настроить, смотрите раздел Конфигурация.
| | == zigbee2mqtt == <!--T:10--> |
|
| |
|
| После установки пакета сервис zigbee2mqtt будет запускаться автоматически при старте контроллера, вы можете отключать и включать автозапуск командами:
| | <!--T:11--> |
| <syntaxhighlight lang="bash"> | | [https://github.com/Koenkk/zigbee2mqtt zigbee2mqtt] - Это мост, позволяющий управлять Zigbee устройствами через MQTT. Работает на Node.js, позволяет легко интегрировать Zigbee устройства в различные системы автоматизации такие как Home Assistant, Node Red и тд. |
| systemctl disable zigbee2mqtt
| | <!--T:12--> |
| systemctl enable zigbee2mqtt
| | Вы найдете всю необходимую информацию на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt]. |
| </syntaxhighlight>
| |
|
| |
|
| === Конфигурация === | | == zigbee2mqtt версия для WB == <!--T:13--> |
| <div id="config"> | | <!--T:14--> |
| Если вы используете модуль расширения [[WBE2R-R-ZIGBEE]], убедитесь, что правильно выставили модуль в '''Settings''' → '''Configs''' → '''Hardware Modules Configuration'''. При использовании USB-стика порт будет называться <code>/dev/ttyUSBx</code>, где x — номер порта, нумерация с нуля.
| | Мы немного изменили код zigbee2mqtt для поддержки Wiren Board MQTT Conventions. Измененную версию вы можете найти в нашем [https://github.com/contactless/zigbee2mqtt репозитории на GitHub] |
|
| |
|
| Настройка:
| | == Установка == <!--T:15--> |
| # Откройте файл конфигурации для редактированияː
| | |
| #:<syntaxhighlight lang="bash">
| | |
| nano /mnt/data/root/zigbee2mqtt/data/configuration.yaml
| | Настраиваем репозиторий Node JS |
| </syntaxhighlight> | | <pre> |
| # По умолчанию файл конфигурации выглядит так, в параметре '''port''' укажите порт, куда физически вставлен модуль. Если порт уже указан и он верен, не изменяйте файл:
| | curl -sL https://deb.nodesource.com/setup_10.x | bash - |
| #:<syntaxhighlight lang="bash">
| | </pre> |
| homeassistant: false
| | |
| permit_join: false
| | Устанавливаем необходимые компоненты |
| mqtt:
| | <pre> |
| base_topic: zigbee2mqtt
| | apt-get install -y nodejs git make g++ gcc |
| server: 'mqtt://localhost'
| | </pre> |
| serial:
| | |
| port: /dev/ttyMOD4
| | ''Если хотите установить версию c поддержкой Wiren Board MQTT Conventions'' |
| advanced:
| | <pre> |
| rtscts: false
| | git clone https://github.com/contactless/zigbee2mqtt /opt/zigbee2mqtt |
| last_seen: epoch
| | </pre> |
| pan_id: GENERATE
| | |
| network_key: GENERATE
| | ''Либо если хотите установить оригинальную версию'' |
| </syntaxhighlight> | | <pre> |
| #: вместо GENERATE после первого запуска моста появятся значения, '''не изменяйте''' их. Если изменяете - то откорректируйте/удалите бэкап.
| | git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt |
| # {{Wbincludes:Save nano}}
| | </pre> |
| # Перезапустите сервис <code>zigbee2mqtt</code>:
| | |
| #:<syntaxhighlight lang="bash">
| | Настраиваем права |
| systemctl restart zigbee2mqtt
| | <pre> |
| </syntaxhighlight>
| | chown -R root:root /opt/zigbee2mqtt |
| Теперь вы можете установить конвертер wb-zigbee2mqtt и Zigbee-устройства будут добавлены на вкладку '''Devices''' в стандартном веб-интерфейсе контроллера.
| | </pre> |
| | |
| | Заходим в директорию и запускаем установку |
| | <pre> |
| | cd /opt/zigbee2mqtt |
| | npm install |
| | </pre> |
| | |
| | В процессе установки будет показано несколько предупреждений. Их можно игнорировать. |
| | |
| | <!--T:16--> |
| | Для автоматического запуска zigbee2mqtt необходимо создать сервис. Для этого зайдите в папку /etc/systemd/system/ и создайте файл zigbee2mqtt.service |
| | |
| | Откройте файл и скопируйте в него следующий текстː |
| | <pre> |
| | [Unit] |
| | Description=zigbee2mqtt |
| | After=network.target |
| | |
| | [Service] |
| | ExecStart=/usr/bin/npm start |
| | WorkingDirectory=/opt/zigbee2mqtt |
| | StandardOutput=inherit |
| | StandardError=inherit |
| | Restart=always |
| | User=root |
| | |
| | [Install] |
| | WantedBy=multi-user.target |
| | </pre> |
|
| |
|
| === Веб-интерфейс (Frontend) ===
| | И сохраните файл. После этого для активации сервиса следует ввести в консоль команду |
| Веб-интерфейс zigbee2mqtt потребляет ресурсы контроллера — не включайте его, если не используете: добавлять и удалять устройства можно через наш конвертер wb-zigbee2mqtt.
| | <pre> |
| | systemctl enable zigbee2mqtt.service |
| | </pre> |
| | <!--T:17--> |
| | Полную инструкцию можно найти на [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html сайте zigbee2mqtt]. |
|
| |
|
| Если вам всё же нужен родной веб-интерфейс zigbee2mqtt, то его можно включить в файле настроек:
| | == Конфигурация == <!--T:18--> |
| # Откройте файл <code>configuration.yaml</code> для редактированияː
| | <!--T:19--> |
| #:<syntaxhighlight lang="bash">
| | После установки нужно настроить контроллер. |
| 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>
| |
|
| |
|
| Веб-интерфейс моста zigbee2mqtt будет доступен по адресу http://wb-ip-address:PORT, например, если IP-адрес контроллера '''192.168.42.1''', а порт указан '''8081''', то веб-интерфейс будет доступен по адресу http://192.168.42.1:8081
| | Если Вы используете [[Wbe2r-r-zigbee|WBE2R-R-ZIGBEE - Модуль расширения Zigbee]] - убедитесь, что правильно выставили модуль в Configs => Hardware Modules Configuration. |
|
| |
|
| === Обновление ===
| | Далее зайдите в папку /opt/zigbee2mqtt/data и отредактируйте файл configuration.yaml ː |
| Для обновления zigbee2mqtt на свежую версию просто обновите программное обеспечение контроллера по [[Wiren_Board_Software | инструкции]]. Будут сохранены все настройки и подключенные устройства.
| |
|
| |
|
| Если у вас старый адаптер [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module | WBE2R-R-ZIGBEE v.1]], выпущенный до января 2022 года, то новая версия работать не будет, в этом случае у вас есть три варианта:
| | <pre> |
| * Прошить старый адаптер свежей прошивкой, [[WBE2R-R-ZIGBEE v.1 ZigBee Extension Module#flashing | инструкция]].
| | # Настройка для интеграции с homeassistant |
| * Поставить пакет с версией, которая работает с этими адаптерами — это возможно сделать только на релизе wb-2207, в более свежих релизах на bullseye этого пакета нет:
| | homeassistant: false |
| *:<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 ==
| | # Разрешение на добавление новых устройств (Измените этот параметр на falsе после добавления всех необходимых устройств) |
| === Описание ===
| | permit_join: true |
| [[Image: wb-zigbee2mqtt new device in Devices.png |300px|thumb|right| Zigbee-устройство на вкладке Devices — в заголовке указан ''friendly_name'' ]]
| |
| Wb-zigbee2mqtt — конвертер данных zigbee2mqtt в топики виртуальных устройств, написан на движке правил [[wb-rules]] и устанавливается в папку с системными правилами wb-rules-system.
| |
|
| |
|
| === Принцип работы ===
| | # Настройки MQTT сервера |
| Конвертер '''wb-zigbee2mqtt''' запрашивает у zigbee2mqtt список всех подключенных устройств и подписывается на их топики. При получении данных от физических устройств конвертер парсит json, создает виртуальное устройство и посылает в него полученную информацию.
| | mqtt: |
| | server: 'mqtt://localhost' |
|
| |
|
| Так же конвертер создает виртуальное устройство ''zigbee2mqtt'' и передает в него логи, версию и состояние (online\offline) моста zigbee2mqtt. Можно включить и выключить режим добавления устройств. Также там расположена кнопка ''Update devices''. При нажатии на эту кнопку конвертер заново запрашивает у моста список добавленных устройств и, если они появились — подписывается на них.
| | # Настройка порта |
| | serial: |
| | port: /dev/ttyMOD3 |
| | advanced: |
| | # Если вы используете CC2530. (удалите этот параметр, если используете USB стик CC2531) |
| | rtscts: false |
|
| |
|
| === Установка ===
| | # штамп времени |
| | last_seen: epoch |
|
| |
|
| wb-zigbee2mqtt ставится автоматически при установке пакета zigbee2mqtt, если этого не произошло, установите его командой:
| | </pre> |
| <syntaxhighlight lang="bash">
| |
| apt update && apt install wb-zigbee2mqtt
| |
| </syntaxhighlight> | |
|
| |
|
| После этого в стандартном веб-интерфейсе контроллера на вкладке ''Devices'' появится устройство ''zigbee2mqtt''.
| | Полное описание настроек можно найти на [https://www.zigbee2mqtt.io/configuration/configuration.html сайте zigbee2mqtt]. |
|
| |
|
| === Добавление устройств ===
| |
| [[Image: WebUI Add Zigbee Device.png |300px|thumb|right| Добавление устройства, сообщение ''Device '0x00158d0007013f71' is supported.'']]
| |
| [[Image: WebUI Add Zigbee Device Unsupported.png |300px|thumb|right| Неподдерживаемое устройство, сообщение ''Device '0x2c1165fffeabe0b8' not supported.'']]
| |
| Устройства можно добавлять по одному или все разом. Чтобы добавить новые устройства:
| |
| # Перейдите в [[Wiren Board Web Interface | стандартный веб-интерфейс контроллера]].
| |
| # Откройте вкладку '''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'''.
| |
|
| |
|
| Иногда, новые устройства не появляются на вкладке 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.
| |
|
| |
|
| Ещё бывает так, что карточка устройства появилась, но пустая — это значит, что устройство добавлено, но данные пока не были получены. Если это датчик, то тут нужно немного подождать, а в случае с выключателем — выключить или включить его.
| | <pre> |
| | service zigbee2mqtt restart |
| | </pre> |
|
| |
|
| === Изменение 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"> | | <pre> |
| Image: friendly_name-old-device.png | Карточка устройства с ''friendly_name'' по умолчанию
| | service zigbee2mqtt start |
| Image: friendly_name-config.png | Изменение ''friendly_name'' в файле конфигурации
| | service zigbee2mqtt stop |
| Image: friendly_name-new-device.png | Карточка устройства с новым ''friendly_name''
| | service zigbee2mqtt restart |
| </gallery> | | </pre> |
|
| |
|
| === Управление устройствами ===
| |
| Управление через конвертер wb-zigbee2mqtt пока не реализовано, но вы можете управлять устройствами [https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttfriendly_nameset стандартными инструментами zigbee2mqtt] через wb-rules, отправляя команды с помощью функции ''publish''.
| |
|
| |
|
| Пример включения и отключения реле с ''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>
| |
|
| |
|
| Вместо wb-rules вы можете использовать [[Node-RED]].
| | Что бы добавить Zigbee устройство убедитесь, что в настройках моста включен параметр "permit_join" : |
|
| |
|
| === Удаление устройств ===
| | <pre> |
| Чтобы удалить устройство:
| | permit_join: true |
| # Убедитесь, что в карточке устройства с заголовком ''Zigbee2mqtt'' перключатель '''Permit join''' находится в положении ''OFF''.
| | </pre> |
| # Разорвите связь устройства с координатором. Обычно для этого нужно зажать кнопку сопряжения на 5 секунд, смотрите документацию на устройство.
| |
| # Проследите, чтобы в карточке с заголовком ''Zigbee2mqt''t в поле '''Log''' появилось сообщение ''left_network''.
| |
| # Удалите карточку этого Zigbee-устройства из веб-интерфейса, для этого наведите на заголовок карточки курсор мыши и нажмите на корзинку.
| |
| # Подключитесь к контроллеру по [[SSH]] и перезапустите wb-rules — это перезапустит конвертер wb-zigbee2mqtt:
| |
| #:<syntaxhighlight lang="bash">
| |
| systemctl restart wb-rules
| |
| </syntaxhighlight> | |
|
| |
|
| <gallery mode="packed" heights="180px">
| | Далее следуйте инструкции к устройству. В основном требуется зажать кнопку "pair" на несколько секунд и дождаться "мигания" светодиода. После этого устройство должно передать информацию о себе на контроллер. Иногда требуется дополнительно нажимать на кнопку каждую секунду, что бы устройство не "уснуло". После успешного добавления устройство автоматически появится во вкладке Devices. |
| Image: WebUI Zigbee Device Left Network.png | Сообщение ''left_network''
| |
| Image: WebUI Zigbee Device Remove.png | Корзинка для удаления карточки Zigbee-устройства
| |
| </gallery>
| |
|
| |
|
| === Как переустановить с сохранением данных ===
| | Более подробная информация на [http://www.zigbee2mqtt.io/getting_started/pairing_devices.html сайте zigbee2mqtt]. |
|
| |
|
| В некоторых случаях может потребоваться переустановить конвертер с сохранением данных, например, если мост не стартует после обновления.
| | == MQTT == |
| | Описание структуры топиков и сообщений вы можете найти на [http://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html сайте zigbee2mqtt]. |
|
| |
|
| Инструкция:
| | В версии адаптированной под Wiren Board MQTT Conventions структура топиков иная: |
| # Перейдите в домашний каталог:
| |
| #:<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>
| |
|
| |
|
| == Диагностика неисправностей == | | {| class="wikitable" |
| Если вы столкнулись с проблемами в работе zigbee2mqtt, то прояснить ситуацию поможет статус сервиса и чтение подробных логов. Для выполнения команд подключитесь к контроллеру по [[SSH]].
| | ! Оригинальный топик |
| | ! WB MQTT |
| | |- |
| | | zigbee2mqtt/bridge/state |
| | | /devices/zigbee/controls/state |
| | |- |
| | | zigbee2mqtt/bridge/config |
| | | /devices/zigbee/controls/config |
| | |- |
| | | zigbee2mqtt/bridge/log |
| | | /devices/zigbee/controls/log |
| | |- |
| | | zigbee2mqtt/bridge/config/devices/get |
| | | /devices/zigbee/controls/config/devices/get |
| | |- |
| | | zigbee2mqtt/bridge/config/permit_join |
| | | /devices/zigbee/controls/config/permit_join |
| | |- |
| | | 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] |
| | |} |
|
| |
|
| Посмотреть текущий статус и последние несколько сообщений из лога можно командой:
| |
| <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
| | Для управления Zigbee устройствами необходимо отправить json с командой в /devices/[DEVICE_ID]/set |
| > 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>.
| | <pre> |
| | defineRule("control_zigbee", { |
| | whenChanged: "0x00158d0002333f93/click", //следим за кнопкой |
| | then: function (newValue, devName, cellName) { |
| | |
| | if(newValue == "single"){ //если было одинарное нажатие на кнопку |
|
| |
|
| Иногда может потребоваться отключить автозапуск сервиса, управлять автозапуском можно командами:
| | publish("/devices/0x00158d0002333f93/controls/click", "processed", 2, true); // Что бы отличать старый клик от нового - записываем любое значение в топик. |
| <syntaxhighlight lang="bash">
| | //вместо этого можно просто следить за штампом времени "last_seen" |
| systemctl disable zigbee2mqtt
| | publish("/devices/0x00124b0009fe360d/set", JSON.stringify({state: "TOGGLE"}), 2, true); // отправляем JSON на zigbee розетку. TOGGLE - переключить состояние. |
| 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]
| | </pre> |
| * [[zigbee2mqtt-src| Сборка zigbee2mqtt из исходников]]
| |
Аппаратная часть
Лицевая сторона модуля WBE2R-R-ZIGBEE
Обратная сторона модуля WBE2R-R-ZIGBEE
Для работы контроллера с Zigee устройствами необходимо подключить специальный модуль. Есть несколько вариантовː
USB-Serial Adaper
|
CC2530
|
3V3
|
VCC
|
GND
|
GND
|
TXD
|
P02
|
RXD
|
P03
|
Прошивка
Для корректной работы модуля рекомендуется прошивка Z-Stack.
Для прошивки WBE2R-R-ZIGBEE или USB стика потребуется CC Debugger и загрузочный кабель. (Можно приобрести на Aliexpress.com)
Подключите CC Debugger к WBE2R-R-ZIGBEE или к USB стику через загрузочный кабель. Подключите USB кабель CC Debugger(a) к компьютеру. Скачайте и установите приложение FLASH-PROGRAMMER ( обычную версию, не v2) c сайта TI. Устройство должно определиться в таблице. Укажите путь к файлу прошивки. В области "Actions" выберите "Erase, program and verify" и нажмите кнопку "Perform actions". Полезную информацию по прошивке вы так же можете найти на сайте zigbee2mqtt.
zigbee2mqtt
zigbee2mqtt - Это мост, позволяющий управлять Zigbee устройствами через MQTT. Работает на Node.js, позволяет легко интегрировать Zigbee устройства в различные системы автоматизации такие как Home Assistant, Node Red и тд.
Вы найдете всю необходимую информацию на сайте zigbee2mqtt.
zigbee2mqtt версия для WB
Мы немного изменили код zigbee2mqtt для поддержки Wiren Board MQTT Conventions. Измененную версию вы можете найти в нашем репозитории на GitHub
Установка
Настраиваем репозиторий Node JS
curl -sL https://deb.nodesource.com/setup_10.x | bash -
Устанавливаем необходимые компоненты
apt-get install -y nodejs git make g++ gcc
Если хотите установить версию c поддержкой Wiren Board MQTT Conventions
git clone https://github.com/contactless/zigbee2mqtt /opt/zigbee2mqtt
Либо если хотите установить оригинальную версию
git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
Настраиваем права
chown -R root:root /opt/zigbee2mqtt
Заходим в директорию и запускаем установку
cd /opt/zigbee2mqtt
npm install
В процессе установки будет показано несколько предупреждений. Их можно игнорировать.
Для автоматического запуска zigbee2mqtt необходимо создать сервис. Для этого зайдите в папку /etc/systemd/system/ и создайте файл zigbee2mqtt.service
Откройте файл и скопируйте в него следующий текстː
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=root
[Install]
WantedBy=multi-user.target
И сохраните файл. После этого для активации сервиса следует ввести в консоль команду
systemctl enable zigbee2mqtt.service
Полную инструкцию можно найти на сайте zigbee2mqtt.
Конфигурация
После установки нужно настроить контроллер.
Если Вы используете WBE2R-R-ZIGBEE - Модуль расширения Zigbee - убедитесь, что правильно выставили модуль в Configs => Hardware Modules Configuration.
Далее зайдите в папку /opt/zigbee2mqtt/data и отредактируйте файл configuration.yaml ː
# Настройка для интеграции с 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
Полное описание настроек можно найти на сайте zigbee2mqtt.
После изменения настроек введите команду
service zigbee2mqtt restart
Запуск
Для запуска, остановки и перезапуска сервиса используйте команды
service zigbee2mqtt start
service zigbee2mqtt stop
service zigbee2mqtt restart
Добавление устройств
Что бы добавить Zigbee устройство убедитесь, что в настройках моста включен параметр "permit_join" :
permit_join: true
Далее следуйте инструкции к устройству. В основном требуется зажать кнопку "pair" на несколько секунд и дождаться "мигания" светодиода. После этого устройство должно передать информацию о себе на контроллер. Иногда требуется дополнительно нажимать на кнопку каждую секунду, что бы устройство не "уснуло". После успешного добавления устройство автоматически появится во вкладке Devices.
Более подробная информация на сайте zigbee2mqtt.
MQTT
Описание структуры топиков и сообщений вы можете найти на сайте zigbee2mqtt.
В версии адаптированной под Wiren Board MQTT Conventions структура топиков иная:
Оригинальный топик
|
WB MQTT
|
zigbee2mqtt/bridge/state
|
/devices/zigbee/controls/state
|
zigbee2mqtt/bridge/config
|
/devices/zigbee/controls/config
|
zigbee2mqtt/bridge/log
|
/devices/zigbee/controls/log
|
zigbee2mqtt/bridge/config/devices/get
|
/devices/zigbee/controls/config/devices/get
|
zigbee2mqtt/bridge/config/permit_join
|
/devices/zigbee/controls/config/permit_join
|
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]
|
Пример правил
Для управления Zigbee устройствами необходимо отправить json с командой в /devices/[DEVICE_ID]/set
Пример:
defineRule("control_zigbee", {
whenChanged: "0x00158d0002333f93/click", //следим за кнопкой
then: function (newValue, devName, cellName) {
if(newValue == "single"){ //если было одинарное нажатие на кнопку
publish("/devices/0x00158d0002333f93/controls/click", "processed", 2, true); // Что бы отличать старый клик от нового - записываем любое значение в топик.
//вместо этого можно просто следить за штампом времени "last_seen"
publish("/devices/0x00124b0009fe360d/set", JSON.stringify({state: "TOGGLE"}), 2, true); // отправляем JSON на zigbee розетку. TOGGLE - переключить состояние.
}
}
});