Перейти к основному содержимому

Оповещение о некорректной работе системы управления климатом

В этой статье рассмотрим ситуацию, когда текущая температура на протяжении долгого времени не достигает установленного значения. В таком случае, необходимо оповещать пользователя о неправильной работе оборудования.

Для примера, необходимо оповещать пользователя, если разница между текущей и установленной температурой больше 4 градусов на протяжении 4 часов.

Чтобы реализовать этот пример, воспользуйтесь данной инструкцией.

  1. Создайте новый проект или откройте уже имеющийся
  2. Добавьте и настройте драйвер, с которым будете работать
  3. Создайте фидбеки для отображения значений установленной и текущей температуры

TempDeviation_1.png

  1. Создайте новый скрипт и добавьте в него следующее:
IR.AddListener(IR.EVENT_START,0,function() {

var l_nIntervalMilsec = 1000*60*60*4; // conversion 4 hours to a miliseconds
var MinTempDeviation = 4; // Minimum temperature outflow
var l_sDriverName = "KNX IP BAOS 770"; // The name of the driver used in the project.
var l_sSetTemp = "SetTemp"; // Name of the feedback temperature setpoint
var l_sTemp = "TempSensor"; // Name of the temperature sensor feedback

var l_nTimer = 0; // Number of seconds for the interval
var l_nInterval = 0; // Interval

// When the temperature arrives, we check if the temperature is higher than the set one, then we set the interval for counting 4 hours
// Remove interval if everything is ok
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice(l_sDriverName), function(m_sName, m_sValue){
if(m_sName == l_sTemp) {
var m_nSetTemp = IR.GetVariable("Drivers."+l_sDriverName+"."+l_sSetTemp);
if(Math.abs(m_nSetTemp - m_sValue) > MinTempDeviation){
if(l_nInterval == 0){
SetInterval();
}
} else {
if(l_nInterval != 0){
IR.ClearInterval(l_nInterval);
l_nInterval = 0;
}
}
}
});

// The function sets the interval in which the temperature will be compared.
function SetInterval(){
l_nInterval = IR.SetInterval(1000, function(){
var m_nSetTemp = IR.GetVariable("Drivers."+l_sDriverName+"."+l_sSetTemp);
var m_nTemp = IR.GetVariable("Drivers."+l_sDriverName+"."+l_sTemp);
if(Math.abs(m_nSetTemp-m_nTemp) > MinTempDeviation){
l_nTimer++;
if(l_nTimer >= l_nIntervalMilsec){
Alarm();
l_nTimer = 0;
}
}
});
}

// The function that calls the necessary notification - inside this function you can use the necessary notification method
function Alarm(){
IR.Log("Attention temperature difference of 4 degrees is kept for 4 hours");
}
});
  1. В переменные впишите свои значения:
  • l_nIntervalMilsec - интервал времени в милисекундах;
  • MinTempDeviation - разница температур;
  • l_sDriverName - имя драйвера, который используется в проете;
  • l_sSetTemp - имя фидбека, отображающего значение установленной температуры;
  • l_sTemp - имя фидбека, отображающего значение текущей температуры;
  1. В функцию Alarm впишите необходимый метод оповещения пользователя. Например, можно использовать Push-уведомления.
Подсказка

cкачать: пример