Seite 1 von 3
Könnte mal wieder Hilfe gebrauchen
Verfasst: 30. Nov 2021 21:48
von Snatsch
Hallo die Regel lief eigentlich immer zuverlässig.
Code: Alles auswählen
var HeizungPartyraum_Solltemperatur = 6 // HeizungPartyraum_Solltemperatur_Fensterkontakt
var Timer AussentuerePartyraumHeizungMeldung = null
rule "Türe Partyraum Auf Heizung aus"
when
Item AussentuerePartyraum_TurFensterstatus changed
then
//cancel timer if running
AussentuerePartyraumHeizungMeldung?.cancel
AussentuerePartyraumHeizungMeldung = null
if (AussentuerePartyraum_TurFensterstatus.state == OPEN)
AussentuerePartyraumHeizungMeldung = createTimer(ZonedDateTime.now.plusMinutes(1), [|
HeizungPartyraum_Solltemperatur = HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(6)
])
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(HeizungPartyraum_Solltemperatur)
}
end
doch jetzt wenn ich die Türe auf und in weniger als 1. Minute zu mache gegt die Heizung immer auf 6 Grad (Aus).Ich finde den Fehler nicht

wenn die Tür länger als 1 Minute auf ist geht die Heizung auf 6 Grad und wenn ich sie wieder schließe auch wieder auf die vor der Öffnung eingestellte Temperatur.
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 30. Nov 2021 22:21
von int5749
Dies liegt daran, das der Timer beim öffnen der Türe startet. Dann schließt Du die Türe < 1Min und die Heizung wird auf den alten Wert gesetzt.
Dann läuft der Timer ab und setzt die 6 Grad.
Lösung: Du musst den Timer beim schließen der Türe beenden. Zudem ist die Var ja schon initialisiert, da kannst Du dies in der Rule sparen.
Code: Alles auswählen
var HeizungPartyraum_Solltemperatur = 6 // HeizungPartyraum_Solltemperatur_Fensterkontakt
var Timer AussentuerePartyraumHeizungMeldung = null
rule "Türe Partyraum Auf Heizung aus"
when
Item AussentuerePartyraum_TurFensterstatus changed
then
//cancel timer if running
AussentuerePartyraumHeizungMeldung?.cancel
if (AussentuerePartyraum_TurFensterstatus.state == OPEN)
AussentuerePartyraumHeizungMeldung = createTimer(ZonedDateTime.now.plusMinutes(1), [|
HeizungPartyraum_Solltemperatur = HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(6)
])
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
//cancel timer if running
AussentuerePartyraumHeizungMeldung?.cancel
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(HeizungPartyraum_Solltemperatur)
}
end
ungetestet und ohne Gewehr

Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 1. Dez 2021 18:07
von Snatsch
he vielen Dank für deine Hilfe. Leider ist es bei deiner Rule das gleiche. Wenn ich die Türe innerhalb von einer Minute schließe geht die Heizung auf 6 Grad.
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 1. Dez 2021 18:40
von int5749
Hmm, was sagt denn das Log dazu? Interessant wäre der Zeitraum wenn Du die Türe öffnest, innerhalb 1 Min wieder schließt und die Temp wieder auf 6 gesetzt wurde. Gerne bereinigt um die o.g. Items.
VG
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 1. Dez 2021 20:55
von Snatsch
frag mich nicht warum es jetzt plötzlich geht
Code: Alles auswählen
2021-12-01 20:50:17.709 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from CLOSED to OPEN
2021-12-01 20:50:23.173 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from OPEN to CLOSED
2021-12-01 20:50:23.187 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' received command 21.0
2021-12-01 20:50:23.206 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' predicted to become 21.0
ist sogar noch die Rule die ich am Anfang gepostet habe
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 1. Dez 2021 21:09
von Snatsch
Ich denke es hängt vielleicht mit den Speichern der Temperatur zusammen oder mit dem Timer Abbruch. Habe es jetzt mehrmals getestet und es läuft so wie es soll.
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 2. Dez 2021 16:45
von Snatsch
so gestern ging es noch heute wieder nicht
Code: Alles auswählen
2021-12-02 16:41:43.113 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from CLOSED to OPEN
2021-12-02 16:41:53.610 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'AussentuerePartyraum_TurFensterstatus' changed from OPEN to CLOSED
2021-12-02 16:41:53.623 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' received command 6.0
2021-12-02 16:41:53.637 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' predicted to become 6.0
2021-12-02 16:41:53.650 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'HeizungPartyraum_Solltemperatur_Fensterkontakt' changed from 21.0 to 6.0
ich habe keine Ahnung an was das liegen könnte

vor der Türöffnung war die Heizung auf 21 Grad gestellt
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 2. Dez 2021 17:27
von udo1toni
Das Problem dürfte sein, dass Du die Temperatur einfach so sicherst, es kann aber sein, dass die Absenkung schon stattgefunden hat. Genauso könnte gar keine gültige Temperatur geliefert werden. Es wäre also sinnvoller, hier ein paar Vorkehrungen zu treffen, was bei ungültigen Werten passieren soll.
Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 2. Dez 2021 17:43
von Snatsch
Bin für Vorschläge offen wie ich es besser machen könnte.

Was mich wundert ist das es manchmal geht und manchmal nicht

Re: Könnte mal wieder Hilfe gebrauchen
Verfasst: 2. Dez 2021 19:58
von udo1toni
Also, die erste Variante wäre diese hier:
Code: Alles auswählen
var Number HeizungPartyraum_Solltemperatur = 6 // HeizungPartyraum_Solltemperatur_Fensterkontakt
var Timer AussentuerePartyraumHeizungMeldung = null
rule "Türe Partyraum Auf Heizung aus"
when
Item AussentuerePartyraum_TurFensterstatus changed
then
AussentuerePartyraumHeizungMeldung?.cancel //cancel timer if running
if(AussentuerePartyraum_TurFensterstatus.state == OPEN)
AussentuerePartyraumHeizungMeldung = createTimer(ZonedDateTime.now.plusMinutes(1), [|
HeizungPartyraum_Solltemperatur = if(HeizungPartyraum_Solltemperatur_Fensterkontakt.state instanceof Number) (HeizungPartyraum_Solltemperatur_Fensterkontakt.state as Number) else 21
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(6)
])
if(AussentuerePartyraum_TurFensterstatus.state == CLOSED)
HeizungPartyraum_Solltemperatur_Fensterkontakt.sendCommand(HeizungPartyraum_Solltemperatur)
end
Falls kein gültiger Wert geliefert wird, nimm die 21 an.