NEWS
Внести гистерезис в скрипт
-
Помогите добавить к существующему скрипту функцию гистерезиса, был бы очень признателен готовому скрипту.
! ````
function checkTemperature () {
if (getState('megadd.1.p30_P30_-unknown').val < getState('need_temp1').val - 2 && getState('megadd.0.p9_P9-unknown').val === false) {
log('Включаем пол');
setState ('megadd.0.p9_P9-unknown', true);
}
else if(getState('megadd.1.p30_P30-unknown').val > getState('need_temp1').val && getState('megadd.0.p9_P9-unknown').val === true){
log('Выключаем пол');
setState ('megadd.0.p9_P9-unknown', false);
}
}
! createState('need_temp1', function () {
on('need_temp1', checkTemperature);
});
on('megadd.1.p30_P30-_unknown', checkTemperature); -
Помогите добавить к существующему скрипту функцию гистерезиса, был бы очень признателен готовому скрипту.
!
function checkTemperature () { if (getState('megadd.1.p30_P30_-_unknown').val < getState('need_temp1').val - 2 && getState('megadd.0.p9_P9_-_unknown').val === false) { log('Включаем пол'); setState ('megadd.0.p9_P9_-_unknown', true); } else if(getState('megadd.1.p30_P30_-_unknown').val > getState('need_temp1').val && getState('megadd.0.p9_P9_-_unknown').val === true){ log('Выключаем пол'); setState ('megadd.0.p9_P9_-_unknown', false); } } ! createState('need_temp1', function () { on('need_temp1', checkTemperature); }); on('megadd.1.p30_P30_-_unknown', checkTemperature);
`так?
! ````
createState('need_temp1', 21);
! on({id: "megadd.1.p30_P30_-unknown", change: "any"}, function (data){
var need = getState('javascript.0.need_temp1').val;
var p9 = getState('megadd.0.p9_P9-unknown').val;
if((data.state.val < (need - 2)) && !p9){
log('Включаем пол');
setState ('megadd.0.p9_P9-unknown', true);
} else if (data.state.val > need && p9){
log('Выключаем пол');
setState ('megadd.0.p9_P9-_unknown', false);
}
}); -
Не. Это требуемая температура, я её задаю в hqwidjet.
А нужно чтобы к примеру установил температуру 18 градусов, когда будет фактически 18, выключение не должно произойти, оно должно произойти при достижении температуры (гистерезис 0.5 или любой) 18.5.
Грубо говоря чтобы не клацало в минимальном диапазоне отключения включения (18 выключилось 17.99 включилось)
вот что то подобное
! 3
! 4
! 5
! 6
! 7
! 8
! 9
! 10
! 11
! 12
! 13
! 14
! 15
! 16
! 17
! 18
! 19
! 20
! 21
! 22
! 23
! 24
! 25
! 26
! 27
! 28
! 29
! 30
! // 2-Punkt-Regler Raumheizung
! // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
! var raum = name.split(".")[2];
! // halbe Hysterese in K
! var hh = 0.1;
! var xid = getIdByName(raum + ".Temperatur");
! var wid = getIdByName(raum + ".Sollwert");
! var yid = getIdByName(raum + ".Heizen");
! var x = getState(xid).val; // Istwert in °C
! var w = getState(wid).val; // Sollwert in °C
! function hys() {
! if (x <= w - hh) setState(yid, true);
! else if (x >= w + hh) setState(yid, false);
! }
! hys(); // Script start
! on(xid, function(dp) {
! x = dp.state.val;
! hys();
! });
! on(wid, function(dp) {
! w = dp.state.val;
! hys();
! }); -
Не. Это требуемая температура, я её задаю в hqwidjet.
А нужно чтобы к примеру установил температуру 18 градусов, когда будет фактически 18, выключение не должно произойти, оно должно произойти при достижении температуры (гистерезис 0.5 или любой) 18.5.
Грубо говоря чтобы не клацало в минимальном диапазоне отключения включения (18 выключилось 17.99 включилось) `
так?
! ````
createState('need_temp1', 21);
! on({id: "megadd.1.p30_P30_-unknown", change: "any"}, function (data){
var need = getState('javascript.0.need_temp1').val;
var p9 = getState('megadd.0.p9_P9-unknown').val;
if((data.state.val < (need - 2)) && !p9){
log('Включаем пол');
setState ('megadd.0.p9_P9-unknown', true);
} else if ((data.state.val > (need + 0,5)) && p9){
log('Выключаем пол');
setState ('megadd.0.p9_P9-_unknown', false);
}
}); -
Да наверное это оно! Спасибо!
Простите сразу не заметил в первом сообщении это if((data.state.val < (need - 2)) && !p9){
-
Смотрю в книгу вижу фи"у
Он же изначально (гистерезис) есть в скрипте который я вложил в первом сообщении
if (getState('megadd.1.p30_P30_-unknown').val < getState('need_temp1').val - 0.5 && getState('megadd.0.p9_P9-_unknown').val === false) {
log('Включаем пол');
Красненьким выделил 0.5 градуса гистерезис (это уже я поставил 0.5) по умолчанию было 2 - это и смутило что не срабатывал клапан. Ставил 19 градусов он выключался смотрю уже 18 ,а не включается, конечно он же должен был включиться снова на 17