Was mich wundert ist, dass die Rule ausgelöst wird auch wenn kein Fenster geöffnet wird. Den Eintrag um 21:55:26 habe ich ausgelöst, die anderen nicht.2022-03-08 21:54:25.196 [INFO ] [rg.openhab.core.model.script.gwindow] - Rule ausgelöst: gFenster_Hobbyraum
2022-03-08 21:54:25.198 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Badezimmer
2022-03-08 21:54:25.199 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'updatewindowgroupstatus-1' failed: 'members' is not a member of 'org.openhab.core.items.Item'; line 8, column 12, length 9 in updatewindowgroupstatus
2022-03-08 21:55:26.402 [INFO ] [rg.openhab.core.model.script.gwindow] - Rule ausgelöst: gFenster_Buero
2022-03-08 21:55:26.404 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Paul
2022-03-08 21:55:26.406 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'updatewindowgroupstatus-1' failed: 'members' is not a member of 'org.openhab.core.items.Item'; line 8, column 12, length 9 in updatewindowgroupstatus
2022-03-08 21:56:28.336 [ERROR] [org.openhab.core.items.GenericItem ] - Tried to set invalid state CLOSED (StringType) on item gFenster_Vorratskeller of type ContactItem, ignoring it
2022-03-08 21:56:28.341 [INFO ] [rg.openhab.core.model.script.gwindow] - Rule ausgelöst: gFenster_Vorratskeller
2022-03-08 21:56:28.343 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Paul
2022-03-08 21:56:28.344 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'updatewindowgroupstatus-1' failed: 'members' is not a member of 'org.openhab.core.items.Item'; line 8, column 12, length 9 in updatewindowgroupstatus
Fensterkontakt Status
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Fensterkontakt Status
Openhabian 4.0.4
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Fensterkontakt Status
Gut, der Trigger ist auch der falsche. Korrekt muss der when-Teil so aussehen:
aber er müsste schon realisieren, dass g jeweils ein Group Item ist, und das geht ja auch schief...
Code: Alles auswählen
when
Member of gFenster_Schlafzimmer changed or
Member of gFenster_Paul changed or
Member of gFenster_Julia changed or
Member of gFenster_Badezimmer changed or
Member of gFenster_WC changed or
Member of gFenster_Garage changed or
Member of gFenster_Kueche changed or
Member of gFenster_Esszimmer changed or
Member of gFenster_Wohnzimmer changed or
Member of gFenster_Buero changed or
Member of gFenster_Waschkeller changed or
Member of gFenster_Vorratskeller changed or
Member of gFenster_Gaestezimmer changed or
Member of gFenster_Hobbyraum changed
then
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Fensterkontakt Status
Ah, gerade im englischen Forum fündig geworden... Man muss den Itemtyp mit angeben...
openHAB verwendet für das Lambda als Default einfach GenericItem als Typ. Man wird alt wie ne Kuh und lernt immer noch was dazu...
Noch was... Ich hatte ja schon befürchtet, dass die Group Items nicht zum Speichern des Status funktionieren werden (Status springt zurück). Kann aber auch mit der Typkollision zu tun haben, mal schauen, wie es sich verhält, wenn die Rule nun funktioniert...
Code: Alles auswählen
rule "update group status"
when
Member of gFenster_Schlafzimmer changed or
Member of gFenster_Paul changed or
Member of gFenster_Julia changed or
Member of gFenster_Badezimmer changed or
Member of gFenster_WC changed or
Member of gFenster_Garage changed or
Member of gFenster_Kueche changed or
Member of gFenster_Esszimmer changed or
Member of gFenster_Wohnzimmer changed or
Member of gFenster_Buero changed or
Member of gFenster_Waschkeller changed or
Member of gFenster_Vorratskeller changed or
Member of gFenster_Gaestezimmer changed or
Member of gFenster_Hobbyraum changed
then
logInfo("gwindow","Rule ausgelöst: {}",triggeringItem.name)
gFenster_alle.members.forEach[GroupItem g|
logInfo("gwindow","aktuelles Item: {}",g.name)
if(g.members.filter[i|i.state != "CLOSED"].size > 0)
g.postUpdate(OPEN)
else
g.postUpdate(CLOSED)
]
end
Noch was... Ich hatte ja schon befürchtet, dass die Group Items nicht zum Speichern des Status funktionieren werden (Status springt zurück). Kann aber auch mit der Typkollision zu tun haben, mal schauen, wie es sich verhält, wenn die Rule nun funktioniert...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Fensterkontakt Status
Jetzt passiert folgendes:
Fenster von zu nach offen
Fenster von offen nach gekippt
Fenster von gekippt nach offen
von offen nach geschlossen
openhab.log
Fenster von zu nach offen
Code: Alles auswählen
2022-03-08 22:18:04.622 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'FensterBueroVorneSTATE' changed from CLOSED to OPEN
2022-03-08 22:18:04.624 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from CLOSED to UNDEF through FensterBueroVorneSTATE
Code: Alles auswählen
2022-03-08 22:18:09.972 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'FensterBueroVorneSTATE' changed from OPEN to TILTED
2022-03-08 22:18:09.974 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from OPEN to UNDEF through FensterBueroVorneSTATE
Code: Alles auswählen
2022-03-08 22:18:14.243 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'FensterBueroVorneSTATE' changed from TILTED to OPEN
2022-03-08 22:18:14.244 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from OPEN to UNDEF through FensterBueroVorneSTATE
Code: Alles auswählen
2022-03-08 22:18:17.928 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from OPEN to CLOSED through FensterBueroVorneSTATE
2022-03-08 22:18:17.929 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'FensterBueroVorneSTATE' changed from OPEN to CLOSED
Code: Alles auswählen
2022-03-08 22:18:17.926 [ERROR] [org.openhab.core.items.GenericItem ] - Tried to set invalid state CLOSED (StringType) on item gFenster_Buero of type ContactItem, ignoring it
2022-03-08 22:18:17.928 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
Openhabian 4.0.4
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Fensterkontakt Status
Hä? Das heißt, die Rule wird überhaupt nicht ausgeführt? Gab es da vielleicht beim Laden eine Fehlermeldung?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Fensterkontakt Status
Jetzt passiert das. Beim Laden erscheinen jetzt keine Fehler mehr.
Code: Alles auswählen
2022-03-08 22:35:50.491 [INFO ] [rg.openhab.core.model.script.gwindow] - Rule ausgelöst: FensterBueroVorneSTATE
2022-03-08 22:35:50.492 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Paul
2022-03-08 22:35:50.496 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Garage
2022-03-08 22:35:50.500 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Julia
2022-03-08 22:35:50.504 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Vorratskeller
2022-03-08 22:35:50.507 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Buero
2022-03-08 22:35:50.511 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Hobbyraum
2022-03-08 22:35:50.513 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
2022-03-08 22:35:50.516 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Wohnzimmer
2022-03-08 22:35:50.520 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Schlafzimmer
2022-03-08 22:35:50.524 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Esszimmer
2022-03-08 22:35:50.527 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Gaestezimmer
2022-03-08 22:35:50.531 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_WC
2022-03-08 22:35:50.534 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Kueche
2022-03-08 22:35:50.537 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Waschkeller
2022-03-08 22:35:50.540 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Badezimmer
2022-03-08 22:36:02.736 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
2022-03-08 22:36:15.834 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
2022-03-08 22:36:24.110 [ERROR] [org.openhab.core.items.GenericItem ] - Tried to set invalid state CLOSED (StringType) on item gFenster_Buero of type ContactItem, ignoring it
2022-03-08 22:36:24.112 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
2022-03-08 22:36:42.281 [ERROR] [org.openhab.core.items.GenericItem ] - Tried to set invalid state CLOSED (StringType) on item gFenster_Schlafzimmer of type ContactItem, ignoring it
2022-03-08 22:36:42.285 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'storeItemValue':
Openhabian 4.0.4
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Fensterkontakt Status
Das sieht doch jetzt schon viel besser aus! Wie sieht es mit den Status der Gruppenitems aus?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Fensterkontakt Status
Das scheint jetzt zu funktionieren. Heute morgen stand eine Gruppe auf UNDEF, nachdem ich dann einmal auf und zu gemacht habe, war der Zustand wieder korrekt.
Erstmal vielen Dank für Deine Hilfe und Deine Geduld
Erstmal vielen Dank für Deine Hilfe und Deine Geduld
Openhabian 4.0.4
-
- Beiträge: 70
- Registriert: 15. Nov 2021 10:02
Re: Fensterkontakt Status
Ich muss meine Anfangseuphorie etwas zurücknehmen. Leider sind immer wieder Group Items auf UNDEF, ich kann mir noch nicht ganz erklären wann und warum. Ich hatte eben in einem Raum mit 2 Fenstern eins gekippt und das andere geöffnet, der Group Status war UNDEF. Jetzt sind beide geschlossen und das Group Item steht auf OPEN. Können wir die RULE mal testweise so umbauen, dass der Group Status in einem Dummy Item gespeichert wird oder muss ich dann für jede Gruppe eine eigene RULE erstellen? Oder hast Du sonst noch eine Idee wie das so funktionieren könnte?
Openhabian 4.0.4
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Fensterkontakt Status
Es war ja meine Befürchtung, dass die Group Items von irgendwo ein Update bekommen könnten (woher das OPEN kommt erschließt sich mir nicht).
Die Rule ist übrigens so ausgelegt, dass sie die Status aller Gruppen berechnet, wenn eines der Fenster bewegt wird.
Für getrennte Items musst Du nur zusätzliche Items anlegen, die den gleicehn Namen tragen wie die Gruppenitems, nur dass Du noch einen Teil ergänzt, z.B. stategFenster_WC für die Gruppe gFenster_WC. Wichtig dabei: die Schreibweise des Namens muss identisch sein, also Groß/Kleinschreibung pro Zeichen. Diese Items kommen alle in eine Gruppe (ich nenne sie mal gstate)
Nun müssen wir die Rule ein wenig anders gestalten (ich lasse den trigger-Teil weg, der ist identisch):
Bei jedem Durchlauf für g wird ein Item ziel aus der Gruppe gstate bestimmt, welches den Namen von g enthält. Der Status wird dann in ziel gespeichert.
Die Rule ist übrigens so ausgelegt, dass sie die Status aller Gruppen berechnet, wenn eines der Fenster bewegt wird.
Für getrennte Items musst Du nur zusätzliche Items anlegen, die den gleicehn Namen tragen wie die Gruppenitems, nur dass Du noch einen Teil ergänzt, z.B. stategFenster_WC für die Gruppe gFenster_WC. Wichtig dabei: die Schreibweise des Namens muss identisch sein, also Groß/Kleinschreibung pro Zeichen. Diese Items kommen alle in eine Gruppe (ich nenne sie mal gstate)
Nun müssen wir die Rule ein wenig anders gestalten (ich lasse den trigger-Teil weg, der ist identisch):
Code: Alles auswählen
then
logInfo("gwindow","Rule ausgelöst: {}",triggeringItem.name)
gFenster_alle.members.forEach[GroupItem g|
ziel = gstate.members.filter[j|j.name.contains(g.name)].head
logInfo("gwindow","aktuelle Gruppe: {} Item: {}",g.name,ziel.name)
if(g.members.filter[i|i.state != "CLOSED"].size > 0)
ziel.postUpdate(OPEN)
else
ziel.postUpdate(CLOSED)
]
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet