Hallo Dirk,
danke dir für deine Anregung. Genau das tut das Skript schon (soll es zumindest), nämlich hier
if (ist < telegramTemp) { // IST-Temperatur ist kleiner als Vergleichstemperatur für Telegram und es sind Fenster offen
setState(pfadRaum +raum, Math.max(12, (telegramTemp-0.5) )); // telegramTemperatur für diesen Raum für den nächsten Abgleich um 0.5 verringern, damit nicht alle paar Sekunden ausgelöst wird. Ab 12 Grad bleibt es konstant, damit ständig erinnert wird
if(debug) log("Telegram-Hürde im "+raum +" wurde auf "+(telegramTemp - 0.5) +" reduziert" );
var nachricht = "Temperatur im " +raum + " beträgt nur noch "+ist +" °C.\n" +fenster +" von "+fensterMax+" Fenstern offen.";
if(telegram) sendTo('telegram.0', nachricht );
}
else {
setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen
}
da (soll zumindest) die Temperatur immer um 0.5 verringert werden, die die erneute Auslöseschwelle ist. Ab 12 Grad wird jede Änderung ein Auslöser.
Aber, ich glaube ich habe den Grund gerade gefunden (Werds testen): mir fehlte die Hysterese. Ich glaube, das Skript wird immer ausgelöst, wenn eine Temperatur neu gesetzt wird. Wenn sie aber so ist wie vorher, dann wurde sie mangels Hysterese die Warntemperatur wieder auf 18 Grad eingestellt.
Das werde ich jetzt mal testen, indem ich diesen Bereich
` > else {
setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen
} `
so abändere:
` > else if (ist > telegramTemp +0.3) {
setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen
} `