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

920 байт добавлено ,  3 года назад
Строка 187: Строка 187:
     title: "Zigbee Devices",
     title: "Zigbee Devices",
     cells: {
     cells: {
         '0x00158d0002729348': { //Указываем имя первого zigbee устройства
         '0x00158d0002729348': { // zigbee кнопка
             type: "text",
             type: "text",
             value: ""
             value: ""
         },
         },
         '0x00158d0002389b55': {//Указываем имя второго zigbee устройства итд.
         '0x00158d0002389b55': { // zigbee датчик температуры и влажности
            type: "text",
            value: ""
        },
        '0x00158d0001f3fc34': { // zigbee выключатель в подрозетник
             type: "text",
             type: "text",
             value: ""
             value: ""
Строка 199: Строка 203:
</syntaxhighlight>
</syntaxhighlight>


После сохранения все данные приходящие от указанных в правиле zigbee устройств будут видны в веб интерфейсе. Данные приходят в формате JSON и с ними уже можно работать в движке правил. На пример напишем правило - по двойному нажатию на zigbee кнопку с именем '''0x00158d0002729348''' изменяем состояние баззера контроллера.  
После сохранения все данные приходящие от указанных в правиле zigbee устройств будут видны в веб интерфейсе. Данные приходят в формате JSON и с ними уже можно работать в движке правил.  


<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
// Правило: При двойном нажатии на zigbee кнопку переключаем левую кнопку zigbee выключателя в подрозетник
defineRule("button_control", {
defineRule("button_control", {
     whenChanged: "zigbee2mqtt/0x00158d0002729348",
     whenChanged: "zigbee2mqtt/0x00158d0002729348",
Строка 207: Строка 212:
         JSON.parse(newValue, function(k, v) { // Парсим Json. Переменная "k" - ключ, переменная "v" - значение.   
         JSON.parse(newValue, function(k, v) { // Парсим Json. Переменная "k" - ключ, переменная "v" - значение.   
             if (k == 'click') {
             if (k == 'click') {
                 if (v == 'double') { // если значение ключа "click" равно "double"
                 if (v == 'double') { // если значение ключа "click" равно "double"  
                     dev["buzzer"]["enabled"] = !dev["buzzer"]["enabled"]; // изменяем значение баззера на противоположное.
                     publish("/devices/zigbee2mqtt/controls/0x00158d0001f3fc34/set", JSON.stringify({ state_left: "TOGGLE" }), 2, false); // переключаем левую кнопку выключателя.
                }
            }
        })
    }
});
 
// Правило: Если влажность выше 50% - включаем правую кнопку zigbee выключателя (канальный вентилятор). Если ниже - выключаем.
defineRule("temp_control", {
    whenChanged: "zigbee2mqtt/0x00158d0002389b55",
    then: function(newValue, devName, cellName) {
        JSON.parse(newValue, function(k, v) {
            if (k == 'humidity') {
                if (parseFloat(v) >= 50.0) {
                    publish("/devices/zigbee2mqtt/controls/0x00158d0001f3fc34/set", JSON.stringify({ state_right: "ON" }), 2, false);
                } else {
                    publish("/devices/zigbee2mqtt/controls/0x00158d0001f3fc34/set", JSON.stringify({ state_right: "OFF" }), 2, false);
                 }
                 }
             }
             }
547

правок