Fensterkontakt Status

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Fensterkontakt Status

Beitrag von tommesd »

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
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.
Openhabian 4.0.4

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Gut, der Trigger ist auch der falsche. Korrekt muss der when-Teil so aussehen:

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
aber er müsste schon realisieren, dass g jeweils ein Group Item ist, und das geht ja auch schief...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Ah, gerade im englischen Forum fündig geworden... Man muss den Itemtyp mit angeben...

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

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Fensterkontakt Status

Beitrag von tommesd »

Jetzt passiert folgendes:
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
Fenster von offen nach gekippt

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
Fenster von gekippt nach offen

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
von offen nach geschlossen

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
openhab.log

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

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

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

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Fensterkontakt Status

Beitrag von tommesd »

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

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

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

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Fensterkontakt Status

Beitrag von tommesd »

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 ;-)
Openhabian 4.0.4

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02
Answers: 0

Re: Fensterkontakt Status

Beitrag von tommesd »

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

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

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

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

Antworten