Виртуальная кнопка присылает только отжатие, но не нажатие


#1

Здравствуйте! Хотел сделать виртуальную кнопку, написал такое правило:

defineVirtualDevice("system_control", {
    title: "System control",
    cells: {
	powerOn: {
	    type: "pushbutton"
	},
	powerOff: {
	    type: "pushbutton"
	}
    }
});

defineRule("power_on_pressed", { 
  whenChanged: ["wb-gpio/A1_IN", "system_control/powerOn"], 
  then: function (newValue, devName, cellName) { 
  log("Power On button changed: " + newValue);
 }
});

defineRule("power_off_pressed", { 
  whenChanged: ["wb-gpio/A2_IN", "system_control/powerOff"], 
  then: function (newValue, devName, cellName) { 
  log("Power On button changed: " + newValue);
 }
});

Что имеем:
При замыкании контакта gpio - в newValue прилетает true , при размыкании - false.
При нажатии кнопки в веб-интерфейсе ничего не прилетает. А при отпускании прилетает false.

И это, вроде бы, даже соответствует документации, где написано, что у кнопки value - всегда 1.
А почему так сделано?
Получается, объединить контакт и веб-кнопку одним правилом не получится, нужно писать отдельное правило для обработки кнопок?

П.С.
Еще вопрос - а ячейкам (cells) никак не задать человеческое имя для отображения в вебе?
Пробовал добавить им параметр title, как у самого устройства, но это не привело к изменению отображаемых названий.


#2

Добрый день. Вы можете использовать тип switch, вместо pushbutton. Ячейкам имя не задать. Вкладка Devices не предназначенна для пользователя, а только для отладки и настройки. Вы можете настроить виджеты с любым человеческим названием и добавить их в дешборд, Так пользователю будет удобнее.


#3

Спасибо, понятно.
Судя, по тому, что pushbutton с виджетами тоже не дружит (есть тут тема про это), единственный вариант - менять на switch.