Seite 6 von 12

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 09:05
von tommesd
Hallo zusammen,
ich hänge mich mal hier ran, da ich ein ähnliches Problem habe und nicht weiter komme.
Ich nutze die Fenstergriffsensoren von Homematic und habe jetzt auch die Übersetzung mittels der map Datei der Stati ins deutsche hinbekommen. Auch mit den drei verschiedenen Icons funktioniert. Nun zu meinem Problem.
Ich habe die Fenster pro Raum in einer Window Gruppe zusammengefasst, als Base Type der Gruppe habe ich Contact gewählt, als Aggregate Function ALL CLOSED the CLOSED else OPEN eingestellt. Nun sind die Räume (Gruppen) bei denen die MAP Transformation eingestellt ist immer OPEN buw steht da offen. Kann mann bzw wo kann man die MAP Transformation für die Gruppen einstellen, damit dort auch die richtigen Zustände ablesbar sind?
Danke und Gruß
Thomas

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 13:17
von udo1toni
Wie meinst Du das? Welchen Itemtyp hast Du denn in der Gruppe zusammengefasst? Contact kann es ja nicht sein, denn Contact hat nur zwei gültige Status, nämlich OPEN und CLOSED. Deine Fenstergriffsensoren liefern aber die Status 0, 1, 2 oder evtl. auch die Strings OPEN, CLOSED und TILTED (ich habe kein Homematic). Du kannst den Groupitem Typ nicht einfach frei wählen. Stattdessen musst Du den Status der Gruppe in diesem Fall selbst bestimmen und am besten auch nicht das Group Item selbst für den Status verwenden. So:

Code: Alles auswählen

rule "update group status" 
when
    Member of gWindow changed
then
    if(gWindow.members.filter[i|i.state != "CLOSED"].size > 0)
        myWindowSum.postUpdate(OPEN)
    else
        myWindowSum.postUpdate(CLOSED)
end
Wenn einer der Member der Gruppe gWindow seinen Status ändert, triggert die Rule.
Die Liste der Groupmember wird auf diejenigen gefiltert, welche nicht den Status CLOSED haben (dort muss natürlich der zum Itemtyp passende Status eingetragen werden). Enthält die entstehende Liste Einträge, so wird der Status von myWindowSum auf OPEN gesetzt, ansonsten auf CLOSED.

Und ja, die Mehrzahl von Status heißt Status, nicht Stati (sorry, alter Lateiner...).

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 13:26
von peter-pan
Ich nehme an, dass sind die HmIP_SRH Sensoren. Das dazugehörige Status Item ist vom Typ"String". Es werden die Zustände "OPEN, CLOSED und TILTED" gemeldet. Dein Gruppen-Item kennt aber nur die Zustände "OPEN und CLOSED" und ist vom Typ "Contact". Ich habe das Problem mit einem Dummy-Item und einer Regel gelöst.

Die Items:

Code: Alles auswählen

Group:Contact:OR(OPEN,CLOSED)      gHaustur                           "Haustür [MAP(de.map):%s]"                                 <frontdoor>         (gInnen)                              ["Door","OpenState"]

String                 HmIP_SRH_0515_1STATE                           "Terrassentuer Status[MAP(de.map):%s]"                     <door>              (gSen_0515)                           ["Point"]                    {channel="homematic:HmIP-SRH:3014F711A0001F98A9AABCAF:0007D7099D0515:1#STATE"}
Contact                HmIP_SRH_0515_1STATECONTACT                    "Terrassentür Essen Status Kontakt[MAP(de.map):%s]"        <door>              (gSen_0515,gHaustur)                  ["OpenState"]              // Dummy-Contact Item 

Die Regel:

Code: Alles auswählen

rule "HM Status Terrassentuer Esszimmer Umwandlung"
    when
//      Item Dummy4 changed to ON or
      Item HmIP_SRH_0515_1STATE changed 
    then
      if ( HmIP_SRH_0515_1STATE.state == "OPEN" ) {
          HmIP_SRH_0515_1STATECONTACT.postUpdate(OPEN)
          logInfo("homematic","Terrassentür offen {} ", HmIP_SRH_0515_1STATECONTACT.state )
          return ;
      }
      else if (HmIP_SRH_0515_1STATE.state == "CLOSED") {
          HmIP_SRH_0515_1STATECONTACT.postUpdate(CLOSED)
          logInfo("homematic","Terrassentür geschlossen {} ", HmIP_SRH_0515_1STATECONTACT.state)
      }
      else if (HmIP_SRH_0515_1STATE.state == "TILTED") {
          HmIP_SRH_0515_1STATECONTACT.postUpdate(OPEN)
          logInfo("homematic","Terrassentür gekippt {} ", HmIP_SRH_0515_1STATECONTACT.state )
      }
      else {
          logInfo("homematic","Terrassentür nix passiert {} ", HmIP_SRH_0515_1STATE )
      }
end
Ich bin mir sicher, dass sich die Regel noch optimieren lässt, vor allem in Bezug auf die "Allgemeingültigkeit" für alle Fenster-Sensoren. Da ich das aber bisher nicht gebraucht habe (ich habe fast nur SWDO), hab ich mir das halt einfach gemacht. Aber vielleicht schaffst du's ja selber oder es findet sich ein "Mitstreiter" ;)

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 13:28
von peter-pan
...na siehst du, während ich noch am "formulieren" war hat sich Udo der Sache schon angenommen. Vielleicht kann er ja mit meinen Informationen zu den Sensoren schon etwas anfangen.

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 13:51
von udo1toni
Ja, genau, dann muss nur der Status entsprechend angepasst werden (habe ich oben gemacht)

Re: Fensterkontakt Status

Verfasst: 15. Feb 2022 21:56
von tommesd
Hallo zusammen, erst einmal Danke für eure Hilfe. Ich habe eure Ansätze noch nicht ausprobiert, da ich noch ein Verständnisproblem habe. Wenn ich keine MAP Transformation einstelle funktioniert es auch mit den String Items der HmIP Sensoren, sprich wenn ich ein Fenster einer Gruppe öffne oder kippe zeigt die Gruppe OPEN an, wenn alle Fenster geschlossen sind CLOSED. Das Gruppenitem ist ein CONTACT und das AGGREGATE ALL CLOSED THEN CLOSED...
Mit Map Transformation werden die Fensterzustände wie in der MAP Datei übersetzt, jedoch steht das Gruppenitem dann auf offen, auch wenn alle Fenster geschlossen sind.

Re: Fensterkontakt Status

Verfasst: 16. Feb 2022 00:57
von udo1toni
Dann machst Du das Mapping an der falschen Stelle. Dennoch ist der Ansatz mit String Items in einer Contact Group eher fragwürdig.

Re: Fensterkontakt Status

Verfasst: 16. Feb 2022 10:34
von tommesd
Danke für Deine Rückmeldung. Sehe ich das richtig, dass bei Deiner Lösung myWindowSum das Dummy-Item für jeden Raum ist und ich die Rule dann auch entsprechend für jeden Raum / Gruppe erstellen muss?

Re: Fensterkontakt Status

Verfasst: 16. Feb 2022 10:52
von udo1toni
Nein? myWindowSum ist ein Contact Item, welches den Zustand OPEN annimmt, wenn eines der Items in der Gruppe gWindow nicht den Zustand "CLOSED" hat. Ansonsten (alle Items haben den Zustand "CLOSED") hat das Item myWindowSum den Zustand CLOSED.

Der Code der Rule ist nun nicht wirklich so umfangreich, und ich habe die Funktion auch im Text erläutert. ;)

Re: Fensterkontakt Status

Verfasst: 16. Feb 2022 11:29
von tommesd
Sorry wenn ich nochmal fragen muss. Vielleicht etwas mehr Hintergrund wieso ich frage. Ich habe eine Übersichtsseite aus einer Vorlage umgebaut, wo ich für jeden Raum ein Widget angelegt habe. In jedem Widget ist eine Gruppe für alle Lichter in dem Raum eingetragen und wenn eine Lampe im Raum leuchtet wird das im Widget visualisiert. Genauso wird auch die Fenstergruppe eingebunden, wenn ein Fenster im Raum offen ist, sieht man das an einem offenen Fenster Icon im Widget. Das funktioniert auch mit meinem CONTACT / String Mischmasch, so lange ich kein Mapping verwende.
Ich nehme an ich müsste dann das myWindowSum Item als Fenstergruppen Item eintragen.