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

Строка 225: Строка 225:
             }
             }
         });
         });
</code>
</div></div>
====Ручное управление выключателями====
<div class="mw-collapsible mw-collapsed">
Код правила
<div class="mw-collapsible-content">
<code>
    defineAlias("lamp1_switcher_control", "wb-gpio/EXT2_K1");
    defineAlias("lamp2_switcher_control", "wb-mdm2_2/Channel 1");
    defineAlias("lamp3_switcher_control", "wb-mr3_3/K1");
   
    var MANUAL_SWITCHER_1_FLAG = false;
    var MANUAL_SWITCHER_2_FLAG = false;
    var MANUAL_SWITCHER_3_FLAG = false;
       
   
    defineRule("switcher_1", {
        whenChanged: "wb-gpio/EXT5_DR1",
        then: function(newValue, devName, cellName) {
        if (newValue == true) {
            MANUAL_SWITCHER_1_FLAG = true;
          lamp1_switcher_control = 1;
        }
        else {
        MANUAL_SWITCHER_1_FLAG = false;
        lamp1_switcher_control = 0;
        }
        }
    });
   
   
   
    defineRule("switcher_2", {
        whenChanged: "wb-gpio/EXT5_DR2",
        then: function(newValue, devName, cellName) {
        if (newValue == true) {
            MANUAL_SWITCHER_2_FLAG = true;
          lamp2_switcher_control = 100;
        }
        else {
        MANUAL_SWITCHER_2_FLAG = false;
        lamp2_switcher_control = 0;
        }
        }
    });
   
   
   
    defineRule("switcher_3", {
        whenChanged: "wb-gpio/EXT5_DR3",
        then: function(newValue, devName, cellName) {
        if (newValue == true) {
            MANUAL_SWITCHER_3_FLAG = true;
          lamp3_switcher_control = 1;
        }
        else {
        MANUAL_SWITCHER_3_FLAG = false;
        lamp3_switcher_control = 0;
        }
        }
    });
</code>
</div></div>
====Имитация управления кондиционером====
<div class="mw-collapsible mw-collapsed">
Код правила
<div class="mw-collapsible-content">
<code>
    defineAlias("virtual_dimmer", "climate_system_control/Диммирование нагревателя");
    defineAlias("physical_dimmer", "wb-mdm2_2/Channel 1");
    defineAlias("temperature_sensor", "wb-m1w2_7/External Sensor 2")
    defineAlias("low_temp_value", "climate_system_control/Слишком низкая температура");
    defineAlias("norm_temp_value", "climate_system_control/Комфортная температура");
    defineAlias("high_temp_value", "climate_system_control/Слишком высокая температура");
   
    defineAlias("turn_on_red", "wb-mir-simple_10/Play from ROM1");
    defineAlias("turn_on_green", "wb-mir-simple_10/Play from ROM3");
    defineAlias("turn_on_blue", "wb-mir-simple_10/Play from ROM2");
   
    defineVirtualDevice("climate_system_control", {
        title: "Управление климатом",
        cells: {
            "Диммирование нагревателя": {
                type: "range",
                value: 20,
                min: 1,
                max: 100
            },
            "Слишком низкая температура": {
                type: "range",
                value: 24,
                min: 1,
                max: 35
            },
            "Слишком высокая температура": {
                type: "range",
                value: 28,
                min: 1,
                max: 45
            }
   
   
   
   
        }
    });
   
   
   
    defineRule("virtual_dimmer_to_physical", {
        whenChanged: "climate_system_control/Диммирование нагревателя",
        then: function(newValue, devName, cellName) {
            if (MANUAL_SWITCHER_2_FLAG == false) {
                physical_dimmer = newValue;
            }
        }
    });
   
   
   
    defineRule("indicate_temp", {
        whenChanged: "wb-m1w2_7/External Sensor 2",
        then: function(newValue, devName, cellName) {
            log(newValue);
            if (newValue <= low_temp_value) {
                turn_on_blue = 1;
                log("Low");
            }
   
            if ((newValue > low_temp_value) && (newValue < high_temp_value)) {
                turn_on_green = 1;
                log("normal");
            }
   
            if (newValue >= high_temp_value) {
                log(high_temp_value);
                turn_on_red = 1;
                log("High");
            }
        }
    });
</code>
</div></div>
====Управление вентилятором и миниреле====
<div class="mw-collapsible mw-collapsed">
Код правила
<div class="mw-collapsible-content">
<code>
    defineAlias("relay1_control", "wb-mrm2_11/Relay 1");
    defineAlias("relay_button_lamp", "wb-gpio/EXT3_HS4");
   
    defineAlias("fan_control", "wb-gpio/EXT3_HS5");
    defineAlias("fan_button_lamp", "wb-gpio/EXT3_HS6");
    defineAlias("virtual_fan_switch", "virtual_fan/Включить вручную");
    defineAlias("virtual_mrm2_mini_switch", "virtual_mrm2_mini/Включить вручную");
   
    defineVirtualDevice("virtual_fan", {
        title: "Управление вентилятором",
        cells: {
            "Включить вручную": {
                type: "switch",
                value: false
            }
        }
    });
   
    defineVirtualDevice("virtual_mrm2_mini", {
        title: "Управление миниреле",
        cells: {
            "Включить вручную": {
                type: "switch",
                value: false
            }
        }
    });
   
   
    defineRule("fan_virtual_to_physical", {
        whenChanged: "virtual_fan/Включить вручную",
        then: function(newValue, devName, cellName) {
            fan_control = newValue;
            fan_button_lamp = newValue;
   
        }
    });
   
   
    defineRule("mrm2_mini_virtual_to_physical", {
        whenChanged: "virtual_mrm2_mini/Включить вручную",
        then: function(newValue, devName, cellName) {
            relay1_control = newValue;
            relay_button_lamp = newValue;
   
        }
    });
   
   
   
    defineRule("fan_manual_turn_on", {
        whenChanged: "wb-gpio/EXT5_DR7",
        then: function(newValue, devName, cellName) {
            if (newValue == true) {
                virtual_fan_switch = !virtual_fan_switch;
   
            }
        }
    });
   
   
   
    defineRule("mini_relay_manual_turnon", {
        whenChanged: "wb-gpio/EXT5_DR9",
        then: function(newValue, devName, cellName) {
            if (newValue == true) {
                virtual_mrm2_mini_switch = !virtual_mrm2_mini_switch;
   
            }
        }
    });
</code>
</code>
</div></div>
</div></div>
wb_editors
556

правок