Оповещение о событии в Telegram

Всем доброго дня ! Недавно на даче сорвало шланг и вода из станции очистки питьевой воды хлестала почти весь день на улицу, хорошо соседи услышали. Поэтому хочу сделать себе оповещение в телеграм о падении давления в водопроводе и потом о восстановлении рабочего давления. У меня есть правило для крышки газгольдера ( когда открываешь, приходит сообщение , что она открыта, закрываешь ее - приходит сообщение, что она закрыта). Сообщение приходит один раз. Решил это же правило применить для давления в водопроводе, но столкнулся с проблемой, что когда давление падает ниже уставки начинается постоянная отсылка сообщений в чат. Подскажите как сделать, что при прохождении например отметки в 2 бар однократно отправлялось сообщение в чат ? Правило выглядит вот так

var setpoint = 2
defineRule("Alarm_water_pressure", { 
  whenChanged: ["pressure/Pressure sensor"],
  then: function (newValue, devName, cellName) {
	if (newValue=setpoint) {
		SendTelegramMsg('Давление в водопроводе в норме'); 
		log ("Message 1 sent");                    
	} else {
		SendTelegramMsg('АВАРИЯ, низкое давление в водопроводе ');
		log ("Message 2 sent");                   	
	}
  }
});

log("added in Alarm_water_pressure.js"); 

Добрый день.

Можно добавить переменную флаг, значение которой будет говорить о том, что сообщение уже было отправлено.

Так же обратите внимание, что у вас при проверке if (newValue=setpoint) стоит оператор присваивания, вместо оператора сравнения. Если значение может быть чуть больше, то лучше используйте оператор >=.

Общий код будет выглядеть примерно так:

var setpoint = 2;
var flag = false;
defineRule("Alarm_water_pressure", {
    whenChanged: ["pressure/Pressure sensor"],
    then: function(newValue, devName, cellName) {
        if (newValue == setpoint) {
            if (flag) {
                SendTelegramMsg('Давление в водопроводе в норме');
                log("Message 1 sent");
                flag = false;
            }
        } else {
            if (!flag) {
                SendTelegramMsg('АВАРИЯ, низкое давление в водопроводе ');
                log("Message 2 sent");
                flag = true;
            }
        }
    }
});

log("added in Alarm_water_pressure.js");

Все работает, спасибо. А где можно про флаги почитать?

Флаг, как правило — это обычная переменная логического типа, значение которой характеризует некоторое состояние. В данном случае это отправленное сообщение. Почитать лучше в учебнике по JS, например learn.javascript.ru.

Большое спасибо!!!