Не разобраться с кнопкой и лампочкой


#1

Добрый день, делаю первые шаги с wirenboard, нужно решить простейшую задачу - включать лампочку по нажатию кнопки, а по второму нажатию гасить её же

Простой вариант с фиксированным выключателем осилил по примерам. А вот для кнопки - не могу добиться работы

     whenChanged: "wb-gpio/EXT2_IN14", //при изменении состояния кнопки выключателя
          then: function (newValue, devName, cellName) { //выполняй следующие действия
               if ( newValue > 0) { //если пришло значение 1
                    dev["wb-mrps6_74"]["K6"] = 1; //установи Реле 6 модуля 74 в состояние "включено"
               } else {
                    dev["wb-mrps6_74"]["K6"] = 0; //установи Реле 6 модуля 74 в состояние "выключено"
    }
}
}); 

Если ставить = 0 и = 1 для newValue, то либо включается свет и гаснет при отпускании кнопки, либо загорается и не гаснет.


#2

Добрый день, Alxprv!
Если вы хотите изменять состояние лампочки при каждом нажатии на кнопку, то проще всего сделать так:
dev["wb-mrps6_74"]["K6"] = !dev["wb-mrps6_74"]["K6"]
(восклицательный знак — логическое “не”, то есть изменить состояние на противоположное).


#3

Сделал код вида:

defineRule("switch-on", { //название правила
  whenChanged: "wb-gpio/EXT2_IN14", //при изменении состояния кнопки выключателя
  then: function (newValue, devName, cellName) { //выполняй следующие действия
    	dev["wb-mrps6_74"]["K6"] = !dev["wb-mrps6_74"]["K6"] ; //установи Реле 6 контроллера вкл/выкл
  }  
}); 

Сохранил, не работает
Точнее лампа горит пока нажата кнопка


#4

А вы обрабатывайте только нажатие:
if ( newValue > 0) {dev["wb-mrps6_74"]["K6"] = !dev["wb-mrps6_74"]["K6"] ;}


#5

Спасибо @Kilpio
В итоге получил такой работающий код:

defineRule("switcher", { //название правила
  whenChanged: "wb-gpio/EXT2_IN14", //при изменении состояния кнопки выключателя
then: function (newValue, devName, cellName) { //выполняй следующие действия
    if ( newValue > 0) { //отрабатываем только нажатие кнопки
      dev["wb-mrps6_74"]["K6"] = !dev["wb-mrps6_74"]["K6"] //установи Реле 6 модуля 74 в состояние "включено"
    } else {
    }
}
}); 

Оставлю для таких же новичков


#6

Замечательно, спасибо! Успехов вам!