Warnung bei zu lange geöffneten Fenster

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von udo1toni »

Also grundsätzlich wäre es das einfachste, den Timer nicht zu löschen...

Code: Alles auswählen

var Timer WindowTimer = null

rule "Balkontür Büro Status"
when
    Item OF_CD_01_STATE changed
then
    if(OF_CD_01_STATE.state != CLOSED) {
        WindowTimer = createTimer(now.plusMinutes(10), [ |
            sendBroadcastNotification("Balkontür im Büro seit 10 min offen!")
        ])
    } else { 
        if(WindowTimer !== null) {
            WindowTimer.cancel 
            WindowTimer = null 
            sendBroadcastNotification("Balkontür im Büro wurde geschlossen!")
        }
    }
end
Da die Rule auf changed triggert, kann man (zumindest nachdem das System eine Weile läuft) davon ausgehen, dass der Status entweder CLOSED oder OPEN ist, damit ist dann sicher, dass der Timer schon gelöscht wurde, wenn der Status auf OPEN wechselt. Umgekehrt falls der Status auf CLOSED wechselt und der Timer nicht null war, muss er vorher gelaufen sein, egal ob nun bis zur Ausführung oder nicht.
Es ist halt die Frage, welches Verhalten erwünscht ist.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jens
Beiträge: 7
Registriert: 16. Jan 2020 21:35
Answers: 0

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von Jens »

Vielen Dank für die Antworten.
@ EiGelbGeek
auch mitt der Hilfsvariable war der Effekt der gleiche das ich auch beim schließen die Geöffnet Meldung bekomme.

@ udo1toni
der Neustart und das nicht löschen des Timers haben auch kein Erfolg gebracht

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

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von udo1toni »

Und die Meldung, dass die Balkontür geschlossen wurde, kommt vorher?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jens
Beiträge: 7
Registriert: 16. Jan 2020 21:35
Answers: 0

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von Jens »

Nein ich bekomme zweimal die Meldung, dass das Fenster geöffnet ist

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

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von udo1toni »

Was bedeutet, dass der else-Teil gar nicht erst ausgeführt wird. Welcher Itemtyp ist OF_CD_01_STATE?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jens
Beiträge: 7
Registriert: 16. Jan 2020 21:35
Answers: 0

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von Jens »

Code: Alles auswählen

String                  OF_CD_01_STATE                  "Balkontür Büro [MAP(HmIP-SWDM.map):%s]"            <door>          (OF_CD_01,Contacts)                 {channel=...}

Code: Alles auswählen

// HmIP-SWDM Fenster- und Türkontakt mit Magnet

// WINDOW_STATE
CLOSED=Geschlossen
OPEN=Offen

// UNSET
NULL=unbekannt
-=unbekannt

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

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von udo1toni »

Das erklärt es sofort. Ein String ist ein String. Ein Status ist ein Status. Ich behaupte mal, (ohne homematic selbst zu nutzen), dass Du den Channel mit einem Contact Item verlinken müsstest. Falls das nicht funktionieren sollte (und nur dann!) kannst Du auch weiterhin das String Item verwenden und nun aber die Abfrage anpassen:

Code: Alles auswählen

if(OF_CD_01_STATE.state != "CLOSED") {
Begründung: Das Contact Item ist der korrekte Itemtyp für einen Boolean Wert (vor allem, wenn er sich auf einen Tür- oder Fensterkontakt bezieht).
Ansonsten ist ein Status normalerweise ein Status und kein String, aber in diesem Fall beinhaltet das String Item tatsächlich einen String als Status und eben kein Datum vom Typ OpenClosedType, also muss man auch mit einem String vergleichen.
Dass die Meldung zweimal ausgegeben wird, rührt daher, dass ein zweiter Timer angelegt wird, dabei wird der Zeiger auf den ersten Timer mit dem neuen Timer überschrieben, der erste Timer wird dabei nicht gelöscht!.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jens
Beiträge: 7
Registriert: 16. Jan 2020 21:35
Answers: 0

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von Jens »

Vielen Dank @udo1toni, das war die Lösung.

Bei den Kontakten von HmIP wird beim Einlesen über die PaperUI ein String erstellt, da der Wert auf der CCU als ENUM abgegriffen wird. Für die HmIP-SWDO Kontakte gibt es anscheinend im Binding einen virtual datapoint, den es für die von mir verwendeten HmIP-SWDM Kontakte nicht gibt.
Aber wenn ich es als String vergleiche geht es.

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

Re: Warnung bei zu lange geöffneten Fenster

Beitrag von udo1toni »

Prima!
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten