Fensterkontakt Status

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Fensterkontakt Status

Beitrag von tommesd »

Hier die Gruppen

Code: Alles auswählen

//Fenster
Group:Contact                    gFenster_Schlafzimmer          "Fenster [%s]"          <window>            (gSchlafzimmer,gFenster_alle)     ["Equipment"]
Group:Contact                    gFenster_Paul                  "Fenster [%s]"          <window>            (gPaulg,gFenster_alle)            ["Equipment"]
Group:Contact                    gFenster_Julia                 "Fenster [%s]"          <window>            (gJulia,gFenster_alle)            ["Equipment"]
Group:Contact                    gFenster_Badezimmer            "Fenster [%s]"          <window>            (gBadezimmer,gFenster_alle)       ["Equipment"]
Group:Contact                    gFenster_WC                    "Fenster [%s]"          <window>            (gWC,gFenster_alle)               ["Equipment"]
Group:Contact                    gFenster_Garage                "Fenster [%s]"          <window>            (gGarage,gFenster_alle)           ["Equipment"]
Group:Contact                    gFenster_Kueche                "Fenster [%s]"          <window>            (gKueche,gFenster_alle)           ["Equipment"]
Group:Contact                    gFenster_Esszimmer             "Fenster [%s]"          <window>            (gEsszimmer,gFenster_alle)        ["Equipment"]
Group:Contact                    gFenster_Wohnzimmer            "Fenster [%s]"          <window>            (gWohnzimmer,gFenster_alle)       ["Equipment"]
Group:Contact                    gFenster_Buero                 "Fenster [%s]"          <window>            (gBuero,gFenster_alle)            ["Equipment"]
Group:Contact                    gFenster_Waschkeller           "Fenster [%s]"          <window>            (gWaschkeller,gFenster_alle)      ["Equipment"]
Group:Contact                    gFenster_Vorratskeller         "Fenster [%s]"          <window>            (gVorratskeller,gFenster_alle)    ["Equipment"]
Group:Contact                    gFenster_Gaestezimmer          "Fenster [%s]"          <window>            (gGaestezimmer,gFenster_alle)     ["Equipment"]
Group:Contact                    gFenster_Hobbyraum             "Fenster [%s]"          <window>            (gHobbyraum,gFenster_alle)        ["Equipment"]

Group:Contact:OR(OPEN,CLOSED)    gFenster_alle                  "alle Fenster [%s]"     <window>            (gSonstiges)                      ["Equipment"]
Und hier die Fenster

Code: Alles auswählen

/*______F E N S T E R________*/
/*_________OG_________*/

/* Schlafzimmer */
String     FensterSchlafzimmerDachSTATE      "Schlafzimmer Dach"      <window>       (gFenster_Schlafzimmer)     ["Point"]    {channel="homematic:HmIP-SWDO-PL:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterSchlafzimmerSeiteSTATE     "Schlafzimmer Seite"     <window>       (gFenster_Schlafzimmer)     ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Paul */
String     FensterPaulSeiteSTATE             "Paul Seite"             <window>       (gFenster_Paul)             ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterPaulBalkonSTATE            "Paul Balkon"            <window>       (gFenster_Paul)             ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Julia */
String     FensterJuliaBalkonSTATE           "Julia Balkon"           <window>       (gFenster_Julia)            ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterJuliaSeiteSTATE            "Julia Seite"            <window>       (gFenster_Julia)            ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Badezimmer */
String     FensterBadezimmerSeiteSTATE       "Badezimmer Seite"       <window>       (gFenster_Badezimmer)       ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterBadezimmerDachSTATE        "Badezimmer Dach"        <window>       (gFenster_Badezimmer)       ["Point"]    {channel="homematic:HmIP-SWDO-PL:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/*_________EG_________*/
/* WC */
String     FensterWCSTATE                    "WC"                     <window>       (gFenster_WC)               ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}


/* Garage */
String     FensterGarageSTATE                "Garage"                 <window>       (gFenster_Garage)           ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}


/* Küche */
String     FensterKuecheSTATE                "Küche"                  <window>       (gFenster_Kueche)           ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}


/* Esszimmer */
String     FensterEsszimmerLinksSTATE        "Terrassentür links"     <window>       (gFenster_Esszimmer)        ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterEsszimmerrechtsSTATE       "Terrassentür rechts"    <window>       (gFenster_Esszimmer)        ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}


/* Wohnzimmer */
String     FensterWohnzimmerGartenSTATE      "Wohnzimmer Garten"      <window>       (gFenster_Wohnzimmer)       ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterWohnzimmerSeiteSTATE       "Wohnzimmer Seite"       <window>       (gFenster_Wohnzimmer)       ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}


/* Büro */
String     FensterBueroVorneSTATE            "Büro vorne"             <window>       (gFenster_Buero)            ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterBueroSeiteSTATE            "Büro Seite"             <window>       (gFenster_Buero)            ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}



/*_______Keller_______*/
/* Waschkeller */
String     FensterWaschkellerSTATE           "Waschkeller"            <window>       (gFenster_Waschkeller)      ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Vorratskeller */
String     FensterVorratskellerSTATE         "Vorratskeller"          <window>       (gFenster_Vorratskeller)    ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Gästezimmer */
String     FensterGaestezimmerGartenSTATE    "Gästezimmer Garten"     <window>       (gFenster_Gaestezimmer)     ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String     FensterGaestezimmerSeiteSTATE     "Gästezimmer Seite"      <window>       (gFenster_Gaestezimmer)     ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}

/* Hobbyraum */ 
String  FensterHobbyraumSeiteSTATE           "Hobbyraum Seite"        <window>       (gFenster_Hobbyraum)        ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
String  FensterHobbyraumVorneSTATE           "Hobbyraum vorne"        <window>       (gFenster_Hobbyraum)        ["Point"]    {channel="homematic:HmIP-SRH:HomematicBridge:0007XXXXXXXXXX:1#STATE"}
Brauchst Du noch mehr? Die Channels habe ich anonymisiert...
Openhabian 4.0.4

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

Re: Fensterkontakt Status

Beitrag von int5749 »

Deine Items sind als String definiert?? Die müssten doch Contacts sein.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Fensterkontakt Status

Beitrag von tommesd »

Nein, die haben 3 Zustände, offen, zu und gekippt und das wird als String gespeichert
Openhabian 4.0.4

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Fensterkontakt Status

Beitrag von peter-pan »

tommesd hat geschrieben: 8. Mär 2022 14:56 Hier die Gruppen
Ich hatte ja schon weiter vorne mal beschrieben, dass ich bei mir dieses Problem mit einem Dummy-Item und einer Rule gelöst habe. Jetzt habe ich noch mal etwas experimentiert. Eine alternative Lösung mit könnte evtl. darin liegen, dass du die Group-Items (für deine String-Items) so deklarierst:

Code: Alles auswählen

Group:Contact:OR(CLOSED,OPEN)      gWindowtest
also die Parameter "OPEN" und "CLOSED" im Gruppen-Item umdrehst. Dann wird CLOSED als CLOSED erkannt und der Rest als OPEN., zumindest in meinem Test.
Wie sich das auf die Rules auswirkt kann ich aber nicht sagen.

Ein Versuch ist's aber allemal Wert.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Nein, bitte nicht experimentieren! Wir arbeiten hier an einer Lösung per Rule, die sollte auch funktionieren. Es kann eigentlich nur irgendwo in der Konfiguration ein kleiner Fehler versteckt sein.

Hast Du das System mal neu gestartet?

Nutzt Du VSCode? Falls ja, wie sieht der Itemzweig gFenster_alle aus, wenn Du alles aufklappst?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Fensterkontakt Status

Beitrag von peter-pan »

udo1toni hat geschrieben: 8. Mär 2022 19:08 Nein, bitte nicht experimentieren!
Sorry, hab's doch getan. ;)

ich hab nämlich auch diese Fehlermeldung beim Erstellen der Rule bekommen:

Code: Alles auswählen

2022-03-08 19:42:33.991 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'test_persistence.rules', using it anyway:
here is no context to infer the closure's argument types from. Consider typing the arguments or put the closures into a typed context.
VSC sagt:

Code: Alles auswählen

The method or field members is undefined for the type Item
Es geht dabei um die Regel-Zeile:

Code: Alles auswählen

if(g.members.filter [i | i.state != CLOSED].size > 0)
Wenn ich aus dem "g.members".filter ein "gFenster_alle.members.filter" mache, ist der Fehler weg. Aber ich weiss nicht, ob das im Sinne der Rule ist.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Nein, das ist nicht im Sinne der Rule. g wird mittels forEach über alle unmittelbaren Member von gFenster_alle iteriert, und solange ausschließlich Group Items in gFenster_alle enthalten sind, muss das funktionieren. Dass diese Fehlermeldung beim Validieren kommt, ist aber leicht erklärbar, denn openHAB kann zu dem Zeitpunkt nicht sicherstellen, dass hier nur Group Items angeliefert werden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Fensterkontakt Status

Beitrag von tommesd »

Neustart hat auch nichts gebracht. Gibt es sonst noch was was ich testen könnte?
Openhabian 4.0.4

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Es hilft ja alles nix, wir müssen da mal etwas logging betreiben...

Code: Alles auswählen

rule "update group status" 
when
    Member of gFenster_alle changed
then
    logInfo("gwindow","Rule ausgelöst: {}",triggeringItem.name)
    gFenster_alle.members.forEach[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
Die Logzeilen werden in /var/log/openhab/openhab.log mitgeschrieben. was passiert, wenn Du ein Fenster öffnest oder schließt?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Fensterkontakt Status

Beitrag von tommesd »

scheinbar geht das Group Item immer wieder in den Zustand UNDEF, auch wenn es kurz vorher den Zustand CLOSED bekommen hat

Code: Alles auswählen

2022-03-08 21:39:33.273 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from UNDEF to CLOSED through FensterBueroVorneSTATE

==> /var/log/openhab/openhab.log <==

2022-03-08 21:41:12.036 [ERROR] [org.openhab.core.items.GenericItem  ] - Tried to set invalid state CLOSED (StringType) on item gFenster_Wohnzimmer of type ContactItem, ignoring it

2022-03-08 21:41:12.043 [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 7, column 12, length 9 in updatewindowgroupstatus

==> /var/log/openhab/events.log <==

2022-03-08 21:41:12.038 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Wohnzimmer' changed from UNDEF to CLOSED through FensterWohnzimmerGartenSTATE

==> /var/log/openhab/openhab.log <==

2022-03-08 21:42:20.501 [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 21:42:20.506 [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 7, column 12, length 9 in updatewindowgroupstatus

==> /var/log/openhab/events.log <==

2022-03-08 21:42:20.503 [INFO ] [hab.event.GroupItemStateChangedEvent] - Item 'gFenster_Buero' changed from UNDEF to CLOSED through FensterBueroSeiteSTATE
Openhabian 4.0.4

Antworten