Сигнализация об отсутствии показаний с датчика



  • Еще один полезный сценарий для сигнализации об отсутствии показаний с датчиков. Особенно актуален для беспроводных решений, так как показания могут приходит очень редко, например не чаще одного раза в 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);
            }
          }
        } 
    });
    

Авторизуйтесь, чтобы ответить