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

Материал из Wiren Board
Строка 5: Строка 5:
[[Файл:WBE2R-R-ZIGBEE top.jpg|300px|thumb|right| Лицевая сторона модуля  WBE2R-R-ZIGBEE]]  
[[Файл:WBE2R-R-ZIGBEE top.jpg|300px|thumb|right| Лицевая сторона модуля  WBE2R-R-ZIGBEE]]  
[[Файл:WBE2R-R-ZIGBEE bot.jpg|300px|thumb|right| Обратная сторона модуля WBE2R-R-ZIGBEE]]  
[[Файл:WBE2R-R-ZIGBEE bot.jpg|300px|thumb|right| Обратная сторона модуля WBE2R-R-ZIGBEE]]  
[[Файл:Flash-programmer.png|thumb|right|300px|FLASH-PROGRAMMER]]
[[Файл:Cc2531-usb.png|300px|thumb|right| USB стик СС2531]]  
[[Файл:Cc2531-usb.png|300px|thumb|right| USB стик СС2531]]  


Строка 36: Строка 35:


<!--T:9-->
<!--T:9-->
Для корректной работы модуля рекомендуется прошивка [https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator Z-Stack].
С завода модуль [[WBE2R-R-ZIGBEE]] уже прошит оптимизированной для WB и SprutHub прошивкой. Однако если это необходимо, его можно перепрошить.


Для прошивки [[WBE2R-R-ZIGBEE]] или USB стика потребуется CC Debugger и загрузочный кабель. (Можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531+загрузочный+кабель Aliexpress.com]) Перед прошивкой установите [http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swrc212&fileType=zip драйвер.]
Для прошивки [[WBE2R-R-ZIGBEE]] или USB стика потребуется CC Debugger и загрузочный кабель. (Можно приобрести на [https://ru.aliexpress.com/wholesale?SearchText=CC2531+загрузочный+кабель Aliexpress.com]) Перед прошивкой установите [http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swrc212&fileType=zip драйвер.]
Строка 48: Строка 47:
<!--T:12-->
<!--T:12-->
Вы найдете всю необходимую информацию на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt].
Вы найдете всю необходимую информацию на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt].
== zigbee2mqtt версия для WB == <!--T:13-->
<!--T:14-->
Мы немного изменили код zigbee2mqtt для поддержки Wiren Board MQTT Conventions. Измененную версию вы можете найти в нашем [https://github.com/contactless/zigbee2mqtt репозитории на GitHub]


== Установка == <!--T:15-->
== Установка == <!--T:15-->
Строка 58: Строка 53:
Настраиваем репозиторий Node JS
Настраиваем репозиторий Node JS
<pre>
<pre>
curl -sL https://deb.nodesource.com/setup_10.x | bash -
curl -sL https://deb.nodesource.com/setup_12.x | bash -
</pre>
</pre>


Строка 66: Строка 61:
</pre>
</pre>


''Копируем версию c поддержкой Wiren Board MQTT Conventions''
''Копируем файлы из репозитория zigbee2mqtt''
<pre>
<pre>
git clone https://github.com/contactless/zigbee2mqtt /mnt/data/root/zigbee2mqtt
git clone https://github.com/Koenkk/zigbee2mqtt.git /mnt/data/root/zigbee2mqtt
</pre>
</pre>


Строка 79: Строка 74:
<pre>
<pre>
cd /mnt/data/root/zigbee2mqtt
cd /mnt/data/root/zigbee2mqtt
npm install
npm ci
</pre>  
</pre>  


В процессе установки будет показано несколько предупреждений. Их можно игнорировать.
В процессе установки будет показано несколько предупреждений. Их можно игнорировать.


'''Что бы установить оригинальную версию zigbee2mqtt воспользуйтесь [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html официальной инструкцией zigbee2mqtt.io]'''
'''Оригинальная инструкция по установке zigbee2mqtt на [https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html официальном сайте zigbee2mqtt.io]'''


<!--T:16-->
<!--T:16-->
Строка 123: Строка 118:


<pre>
<pre>
# Настройка для интеграции с homeassistant
homeassistant: false
homeassistant: false
# Разрешение на добавление новых устройств (Измените этот параметр на falsе после добавления всех необходимых устройств)
permit_join: true
permit_join: true
# Настройки MQTT сервера
mqtt:
mqtt:
  base_topic: zigbee2mqtt
   server: 'mqtt://localhost'
   server: 'mqtt://localhost'
# Настройка порта
serial:
serial:
   port: /dev/ttyMOD3
   port: /dev/ttyMOD3
advanced:
advanced:
  # Если вы используете CC2530 или модуль WBE2R-R-ZIGBEE. (удалите этот параметр, если используете USB стик CC2531)
   rtscts: false
   rtscts: false
  # штамп времени
   last_seen: epoch
   last_seen: epoch
</pre>
</pre>


Строка 174: Строка 159:


Более подробная информация на [http://www.zigbee2mqtt.io/getting_started/pairing_devices.html сайте zigbee2mqtt].
Более подробная информация на [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 структура топиков иная:
{| class="wikitable"
! Оригинальный топик
! 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
Пример:
<syntaxhighlight lang="js">
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 - переключить состояние.
        }
    }
});
</syntaxhighlight>

Версия 13:29, 19 мая 2020


Аппаратная часть

Лицевая сторона модуля WBE2R-R-ZIGBEE
Обратная сторона модуля WBE2R-R-ZIGBEE
USB стик СС2531

Для работы контроллера с ZigBee устройствами необходимо подключить специальный модуль. Есть несколько вариантовː

USB-Serial Adaper CC2530
3V3 VCC
GND GND
TXD P02
RXD P03

Прошивка

С завода модуль WBE2R-R-ZIGBEE уже прошит оптимизированной для WB и SprutHub прошивкой. Однако если это необходимо, его можно перепрошить.

Для прошивки 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.

Установка

Настраиваем репозиторий Node JS

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Устанавливаем необходимые компоненты

apt-get 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

Заходим в директорию и запускаем установку

cd /mnt/data/root/zigbee2mqtt
npm ci

В процессе установки будет показано несколько предупреждений. Их можно игнорировать.

Оригинальная инструкция по установке zigbee2mqtt на официальном сайте zigbee2mqtt.io

Для автоматического запуска zigbee2mqtt необходимо создать сервис. Для этого зайдите в папку /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

Полную инструкцию можно найти на сайте zigbee2mqtt.

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

После установки нужно настроить контроллер.

Если Вы используете модуль расширения WBE2R-R-ZIGBEE,то убедитесь, что правильно выставили модуль в Configs => Hardware Modules Configuration.

Далее зайдите в папку /mnt/data/root/zigbee2mqtt/data и отредактируйте файл configuration.yaml ː

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
serial:
  port: /dev/ttyMOD3
advanced:
  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.