547
правок
Ian (обсуждение | вклад) |
Ian (обсуждение | вклад) |
||
Строка 121: | Строка 121: | ||
permit_join: true | permit_join: true | ||
mqtt: | mqtt: | ||
base_topic: | base_topic: zigbee2mqtt | ||
server: 'mqtt://localhost' | server: 'mqtt://localhost' | ||
serial: | serial: | ||
Строка 131: | Строка 131: | ||
Полное описание настроек можно найти на [https://www.zigbee2mqtt.io/configuration/configuration.html сайте zigbee2mqtt]. | Полное описание настроек можно найти на [https://www.zigbee2mqtt.io/configuration/configuration.html сайте zigbee2mqtt]. | ||
После изменения настроек введите команду | После изменения настроек введите команду | ||
Строка 159: | Строка 158: | ||
Более подробная информация на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt]. | Более подробная информация на [https://www.zigbee2mqtt.io/ сайте zigbee2mqtt]. | ||
== Написание правил == | |||
Zigbee2mqtt имеет свою структуру топиков, не подходящую под [https://github.com/wirenboard/homeui/blob/master/conventions.md MQTT конвенцию Wiren Board]. На данный момент идет разработка конвертера, который будет пересылать данные из топиков zigbee2mqtt в подходящие под конвенцию топики. | |||
Пока разработка не закончена есть несколько способов взаимодействия с добавленными в zigbee2mqtt устройствамиː | |||
* Установить конвертер от стороннего разработчика ( На пример [https://github.com/avp-avp/zigbee2wb конвертер от пользователя avp-avp] ) | |||
* Использовать для автоматизации [https://wirenboard.com/wiki/index.php?title=Node-Red Node-Red] | |||
* Cделать небольшое изменение в коде zigbee2mqtt, что бы получать данные в топики вида /devices/zigbee2mqtt/controls/../on | |||
Про третий пункт подробнееː | |||
# В файле '''/mnt/data/root/zigbee2mqtt/data/configuration.yaml''' параметр '''base_topic''' измените на '''/devices/zigbee2mqtt/controls''' как это показано на скриншоте ниже. Сохраните файл. [[Файл:Zigbee2.PNG|700px|thumb|center| /mnt/data/root/zigbee2mqtt/data/configuration.yaml]] | |||
# В файле '''/mnt/data/root/zigbee2mqtt/lib/controller.js''' (311 строка) к параметру “'''resolvedEntity.name'''” добавьте '''+ “/on”''', как это показано на скриншоте ниже. Сохраните файл. [[Файл:Zigbee1.PNG|700px|thumb|center| /mnt/data/root/zigbee2mqtt/lib/controller.js]] | |||
# Перезапустите zigbee2mqtt командой service zigbee2mqtt restart | |||
После этих действий данные будут приходить в топики '''/devices/zigbee2mqtt/controls/../on''', где вместо ".." будет имя zigbee устройства. На пример "'''/devices/zigbee2mqtt/controls/0x00158d0002729348/on'''" | |||
Но в веб интерфейсе данных до сих пор не видно. Для этого необходимо зайти в вкладку rules и в правилах создать виртуальный девайс с именем Вашего zigbee устройстваː | |||
<pre> | |||
defineVirtualDevice("zigbee2mqtt", { //Указываем топик, который мы указали в configuration.yamlː /devicec/../controls | |||
title: "Zigbee Devices", | |||
cells: { | |||
'0x00158d0002729348': { //Указываем имя первого zigbee устройства | |||
type: "text", | |||
value: "" | |||
}, | |||
'0x00158d0002389b55': {//Указываем имя второго zigbee устройства итд. | |||
type: "text", | |||
value: "" | |||
}, | |||
} | |||
}); | |||
</pre> | |||
После сохранения правила все данные приходящие от устройств будут видны в веб интерфейсе. Данные приходят в формате JSON и с ними уже можно работать в движке правил. На пример напишем правило - по двойному нажатию на zigbee кнопку с именем '''0x00158d0002729348''' изменяем состояние базера контроллера. | |||
<pre> | |||
defineRule("button_control", { | |||
whenChanged: "zigbee2mqtt/0x00158d0002729348", | |||
then: function(newValue, devName, cellName) { | |||
JSON.parse(newValue, function(k, v) { // Парсим Json. Переменная "k" - ключ, переменная "v" - значение. | |||
if (k == 'click') { | |||
if (v == 'double') { // если значение ключа "click" равно "double" | |||
dev["buzzer"]["enabled"] = !dev["buzzer"]["enabled"]; // изменяем значение баззера на противоположное. | |||
} | |||
} | |||
}) | |||
} | |||
}); | |||
</pre> |
правок