Оповещение о некорректной работе системы управления климатом
В этой статье рассмотрим ситуацию, когда текущая температура на протяжении долгого времени не достигает установленного значения. В таком случае, необходимо оповещать пользователя о неправильной работе оборудования.
Для примера, необходимо оповещать пользователя, если разница между текущей и установленной температурой больше 4 градусов на протяжении 4 часов.
Чтобы реализовать этот пример, воспользуйтесь данной инструкцией.
- Создайте новый проект или откройте уже имеющийся
- Добавьте и настройте драйвер, с которым будете работать
- Создайте фидбеки для отображения значений установленной и текущей температуры
- Создайте новый скрипт и добавьте в него следующее:
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");
}
});
- В переменные впишите свои значения:
- l_nIntervalMilsec - интервал времени в милисекундах;
- MinTempDeviation - разница температур;
- l_sDriverName - имя драйвера, который используется в проете;
- l_sSetTemp - имя фидбека, отображающего значение установленной температуры;
- l_sTemp - имя фидбека, отображающего значение текущей температуры;
- В функцию
Alarmвпишите необходимый метод оповещения пользователя. Например, можно использовать Push-уведомления.
Подсказка
cкачать: пример