Könnte mal wieder Hilfe gebrauchen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Könnte mal wieder Hilfe gebrauchen

Beitrag 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.
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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:
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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.
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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.
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Snatsch
Beiträge: 343
Registriert: 9. Jan 2021 22:55

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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 :?:
openhab4.1.1 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Könnte mal wieder Hilfe gebrauchen

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten