ich habe in Openhab eine Regel erstellt, welche bei aktiver Wärmepumpensteuerung in regelmäßigen Abständen prüft ob sich die Außentemperatur in einem bestimmten Bereich befindet z.B. zwischen (3° und 16°) und darunter oder darüber die Wärmepumpe abschaltet (Frostschutz bleibt aktiv

Meine Rule habe ich nach einem Beispiel von udo1toni aus einem anderen Beitrag gebastelt. und sieht so aus.
Code: Alles auswählen
val Number nHysterese = 0.2
rule "Heizung"
when
Item wetter_temperatur changed or
Item WP_REGELUNG changed
then
Heizen.postUpdate(OFF)
var Number ist = -100
var Number wp_sollu = WP_TEMPU.state as DecimalType
var Number wp_sollo = WP_TEMPO.state as DecimalType
if(WP_REGELUNG.state == ON) {
if(!(wetter_temperatur.state instanceof Number))
logWarn("heizen","Isttemperatur Fehler!")
else
ist = wetter_temperatur.state as Number
if(ist > 0 && wp_sollu > 0 && wp_sollo > 0 && ((WP_SCHALTER.state != ON && ist > wp_sollu + nHysterese && ist < wp_sollo - nHysterese) || (WP_SCHALTER.state == ON && ist < wp_sollo && ist > wp_sollu)))
Heizen.postUpdate(ON)
}
if(WP_SCHALTER.state != Heizen.state.toString) WP_SCHALTER.sendCommand(Heizen.state.toString)
end
Problem daran ist mir aufgefallen, dass die Wärmepumpe trotz korrekt eingestelltem Temperaturbereich ab und zu Abschaltet. Grund dafür habe ich im Log von Openhab gefunden. Dort wird der virtuelle Schalter (Heizen) am Anfang der Rule auf Off geschaltet (was so auch sein soll), und der Status und die Schaltung des Schalter (WP_SCHALTER) weiter unten in der Regel wird ausgeführt bevor der virtuelle Schalter (Heizen) den Status ON wieder bekommt.
Ich habe hier eine kleine Verzögerung eingebaut bevor der WP_SCHALTER gesetzt wird. Da es sich im Millisekunden Bereich bewegt habe ich das durch Thread.sleep(500) hinter dem Heizen.postUpdate(ON) gelöst.
Würde das aber gerne mit einer Timer Funktion machen, bekomme dass allerdings, als Laie, nicht sauber in der Regel platziert.
Hat da jemand eine Idee?
Gruß Marco