Seite 9 von 12

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 14:56
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...

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 18:29
von int5749
Deine Items sind als String definiert?? Die müssten doch Contacts sein.

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 19:00
von tommesd
Nein, die haben 3 Zustände, offen, zu und gekippt und das wird als String gespeichert

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 19:01
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.

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 19:08
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?

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 19:53
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.

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 20:48
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.

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 21:26
von tommesd
Neustart hat auch nichts gebracht. Gibt es sonst noch was was ich testen könnte?

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 21:44
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?

Re: Fensterkontakt Status

Verfasst: 8. Mär 2022 21:45
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