Требуется намутить сигнализацию наличия напряжения в электросети. Пока для теста подключил обычную кнопку.
Написал такое правило
defineRule(“voltage_control”, {
whenChanged: “wb-gpio/EXT1_DR8”, //при изменении состояния реле
then: function (newValue, devName, cellName) { //выполняй следующие действия
if (newValue) { //если реле замкнутое
dev[“wb-gpio”][“EXT2_HS5”] = 1; //включаем лампу
runShellCommand (“gammu sendsms TEXT +70000000000 -unicode -textutf8 ‘Нажали кнопку’”);
} else {
dev[“wb-gpio”][“EXT2_HS5”] = 0; //установи Реле 1 модуля WB-MRM2 с адресом 130 в состояние “включено”
runShellCommand (“gammu sendsms TEXT +700000000000 -unicode -textutf8 ‘Кнопку отпустили’”);
}
}
});
Обнаружилась такая проблема -
Кнопку нажимаешь и держишь не отпуская - прилетает СМС о нажатии.
Кнопку отпускаешь - прилетает СМС о том, что отпустили кнопку.
А вот если кратковременно нажать и отпустить кнопку, то прилетает только СМС о нажатии. Об отпуске ни слова.
Как я понимаю, проблема заключается в том, что, если первая СМС еще не успело отправиться, то команда на отправку второй, просто не срабатывает.
С практической же точки зрения, эта проблема будет выглядеть так - в случае кратковременного (1-2 секунды) отруба напряжения я буду проинформирован о том, что напряжение пропало и не восстановилось. И надо срочно принимать действия по восстановлению напряжения, пока не исчерпался запас бесперебойников в серверной. А это печаль.