Движок правил: примеры кода

Можно расширять, через WBIO-DI-DR-16 например.

Про двойные и долгие нажатия: можно поэкспериментировать с правилами. Сделайте правило с whenChanged на канал кнопки, добавьте отладочный вывод на срабатывание (log). Он должен выводиться на каждое нажатие кнопки, хоть и с небольшой (<~100ms) задержкой. Дальше можете в правиле завести глобальную переменную-счётчик и сбрасывать её значение по таймеру.
Как-то так (код не проверял):

    (function() { //don't touch this line
      var button_counter = 0;
      var counter_clear_timer_id = null;

      defineRule( "on_button_press", {
        whenChanged: "wb-gpio/A1_IN",
        then: function (newValue, devName, cellName) {

          // если поймали нажатие, увеличиваем счётчик
          if (newValue) {
            button_counter += 1;
          }
          
          // счётчик равен двум, значит было двойное нажатие
          if (button_counter == 2) {
            log("double press!");
          }
 
          // после каждого нажатия сбрасываем таймер (удяляем старый)
          if (counter_clear_timer_id) {
            clearTimeout(counter_clear_timer_id);
          }
         
          // и взводим новый таймер, который сбросит счётчик через 2 секунды
          counter_clear_timer_id = setTimeout(function() {
            button_counter = 0;
          }, 2000);
        }
      });
    })();
1 лайк