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 :) :lol:

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 :o

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 :cry:

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.