Перейти к содержанию

Навигация

Движок правил wb-rules: различия между версиями

Строка 73: Строка 73:
Кроме этого, правило отключает двигатели спустя заданное время после включения.
Кроме этого, правило отключает двигатели спустя заданное время после включения.


<syntaxhighlight lang="ecmascript">
(function() { //don't touch this line
 
  var suffix = "1"; // must be different in different JS files
  var relay_up_device = "lc103_4";
  var relay_up_control = "Relay 1";
  var relay_down_device = "lc103_4";
  var relay_down_control = "Relay 2";
  var timeout_s = 15;
 
  // End of settings
 
 
  var relay_up_timer_id = null;
  var relay_down_timer_id = null;
 
  defineRule( "roller_shutter_up_on" + suffix, {
  asSoonAs: function() {
    return dev[relay_up_device][relay_up_control];
  },
    then: function () {
      if (relay_up_timer_id) {
        relay_up_timer_id = clearTimeout(relay_up_timer_id);
      };
      relay_up_timer_id = setTimeout(function() {
        return dev[relay_up_device][relay_up_control] = 0;
      }, timeout_s * 1000);
    }
  });
  defineRule("roller_shutter_down_on" + suffix, {
    asSoonAs: function() {
      return dev[relay_down_device][relay_down_control];
    },
    then: function () {
      if (relay_down_timer_id) {
        relay_down_timer_id = clearTimeout(relay_down_timer_id);
      };
     
      relay_down_timer_id = setTimeout(function() {
        dev[relay_down_device][relay_down_control] = 0;
      }, timeout_s * 1000);
    }
  });
  defineRule("roller_shutter_both_on" + suffix, {
    asSoonAs: function() {
      return dev[relay_up_device][relay_up_control] && dev[relay_down_device][relay_down_control];
    },
    then: function () {
      if (relay_up_timer_id) {
        relay_up_timer_id = clearTimeout(relay_up_timer_id);
      };
      if (relay_down_timer_id) {
        relay_down_timer_id = clearTimeout(relay_down_timer_id);
      };
     
      dev[relay_up_device][relay_up_control] = 0;
      dev[relay_down_device][relay_down_control] = 0;
      log("Both roller shutter relays on, switching them off");
    }
  });
})();
</syntaxhighlight>
Более старая версия того же сценария демонстрирует использование alias-ов:
<syntaxhighlight lang="ecmascript">
<syntaxhighlight lang="ecmascript">