Сигнализация об отсутствии показаний с датчика
-
Еще один полезный сценарий для сигнализации об отсутствии показаний с датчиков. Особенно актуален для беспроводных решений, так как показания могут приходит очень редко, например не чаще одного раза в 2 часа.
* @name Отсутствие показаний с датчика * @desc * @version 4 */ const sensor = Device("SensorA","Analog Sensor", [ {"name":"timeAlarm", "note":"Время отсутствия показаний с датчкиа, сек", "type":"number", "val": 7200} ]); startOnChange([sensor]); script({ start() { this.addTimer("T1"); this.startTimer("T1", sensor.getParam("timeAlarm"), "timeAlarm"); sensor.setParam("error",0); this.addListener(sensor, "onChange"); }, onChange() { this.stopTimer("T1"); this.startTimer("T1", sensor.getParam("timeAlarm"), "timeAlarm"); }, timeAlarm() { this.log('Sensor '+ sensor.name +' Alarm'); sensor.setParam("error",1); this.exit(); } });
-
@goodspeed1986, такой сценарий не нужен. Нужно использовать возможности самой системы. У каждого устройства есть свойство "Установить ошибку если нет данных в течении, сек". При этом у устройства свойству 'error' устанавливается 1, на мнемосхеме отображается иконка аварии.
А вот сценарий для уведомления пользователя о таких ошибках желателен. Вот самый простой:/** * @name Сервис - уведомление об ошибке датчика * @desc Уведомление пользователя по Telegram об ошибке датчика * @version 4 */ const sensor = Device("SensorA","Датчик"); startOnChange(sensor); script({ start() { if(this.isChanged(sensor, "err")) { if(sensor.isError()) { //this.info("telegram", "OWNER", "Внимание! '" +sensor.name+ "' - ошибка: " +sensor.error); this.info("pushnotification", "OWNER", "Внимание! '" +sensor.name+ "' - ошибка: " +sensor.error); this.log("Внимание! '" +sensor.name+ "' - ошибка: " +sensor.error); } else { //this.info("telegram", "OWNER", "'" +sensor.name+ "' - ОК. Значение: " +sensor.value); this.info("pushnotification", "OWNER", "'" +sensor.name+ "' - ОК. Значение: " +sensor.value); this.log("'" +sensor.name+ "' - ОК. Значение: " +sensor.value); } } } });