Fenster/Tür Status bei mehreren Reedkontakten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

Liebe Forengemeinde,

dies ist mein erster Beitrag hier im Forum.

Ich hoffe ihr könnt mir ein wenig weiterhelfen, bisher hab ich hier immer viel Inspiration gefunden.

Wir haben bei uns im Haus Reedkontakte mit Kipp/Offen Funktion in den Fenstern eingebaut. Diese habe ich über KNX Binäreingänge an OpenHab angebunden.

In der Sitemap werden die Fenster auch schon als Geschlossen/Geöffnet/Gekippt bei den einzelnen Räumen angezeigt.

Nun möchte ich jedoch am Anfang der Sitemap über ein Gruppen Item anzeigen lassen ob Fenster geöffnet sind. Im weiteren Schritt möchte ich darüber die "Alarmanlage" ansteuern.

Mein Gruppen Item zeigt leider nur die geöffneten Fenster, nicht jedoch die gekippten Fenster an.

Habt ihr eine Lösung für das Problem?

Vielen Dank!

Hier meine Konfiguration:

Gruppen Item:

Code: Alles auswählen

//--> Fenster & Türen
Group:Contact:OR(OPEN, OPEN)   gFensterTuerenOffen                       "Fenster u. Türen offen [%d]"             <motion>
Auszug von Fenster Items:

Code: Alles auswählen

Contact                Kontakt_Kellertuer                     "Kellertür [MAP(fenster.map):%s]"                                  <door>        (gFensterTuerenOffen)               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Kellertuer" }
  Group:Number:SUM       Fenster_Lueftungskeller_Gruppe         "Fenster Lüftungskeller [MAP(fenster_gruppen.map):%s]"             <fenster>     (gFensterTuerenOffen)
  Number                 Fenster_Lueftungskeller_Gruppe_Kipp    "Fenster Lüftungskeller kipp [MAP(fenster.map):%s]"                <fenster>     (Fenster_Lueftungskeller_Gruppe)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller_Kipp" }
  Number                 Fenster_Lueftungskeller_Gruppe_Offen   "Fenster Lüftungskeller offen [MAP(fenster.map):%s]"               <fenster>     (Fenster_Lueftungskeller_Gruppe)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller" }
  Group:Number:SUM       Fenster_Werkstatt_Gruppe               "Fenster Werkstatt [MAP(fenster_gruppen.map):%s]"                  <fenster>     (gFensterTuerenOffen)
  Number                 Fenster_Werkstatt_Gruppe_Kipp          "Fenster Werkstatt kipp [MAP(fenster.map):%s]"                     <fenster>     (Fenster_Werkstatt_Gruppe)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt_Kipp" }
  Number                 Fenster_Werkstatt_Gruppe_Offen         "Fenster Werkstatt offen [MAP(fenster.map):%s]"                    <fenster>     (Fenster_Werkstatt_Gruppe)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt" }
  Contact                Kontakt_Haustuer                       "Haustür [MAP(fenster.map):%s]"                                    <frontdoor>   (gFensterTuerenOffen)               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Haustuer" }
  Group:Number:SUM       Kontakt_Hebeschiebetuer_Gruppe         "Hebeschiebetür [MAP(fenster.map):%s]"                             <fenster>     (gFensterTuerenOffen)
  Number                 Kontakt_Hebeschiebetuer                "Hebeschiebetür [MAP(fenster.map):%s]"                             <fenster>     (Kontakt_Hebeschiebetuer_Gruppe)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Hebeschiebetuer" }
  Group:Number:SUM       Fenster_Kueche_Gruppe                  "Fenster Küche [MAP(fenster_gruppen.map):%s]"                      <fenster>     (gFensterTuerenOffen)
  Number                 Fenster_Kueche_Gruppe_Kipp             "Fenster Küche kipp [MAP(fenster.map):%s]"                         <fenster>     (Fenster_Kueche_Gruppe)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche_Kipp" }
  Number                 Fenster_Kueche_Gruppe_Offen            "Fenster Küche offen [MAP(fenster.map):%s]"                        <fenster>     (Fenster_Kueche_Gruppe)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche" }
  Group:Number:SUM       Fenster_Esszimmer_Gruppe               "Fenster Esszimmer [MAP(fenster_gruppen.map):%s]"                  <fenster>     (gFensterTuerenOffen)
  Number                 Fenster_Esszimmer_Gruppe_Kipp          "Fenster Esszimmer kipp [MAP(fenster.map):%s]"                     <fenster>     (Fenster_Esszimmer_Gruppe)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer_Kipp" }
  Number                 Fenster_Esszimmer_Gruppe_Offen         "Fenster Esszimmer offen [MAP(fenster.map):%s]"                    <fenster>     (Fenster_Esszimmer_Gruppe)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer" }
  Group:Number           Fenster_GaesteWC_Gruppe                "Fenster Gäste-WC [MAP(fenster_gruppen.map):%s]"                   <fenster>     (gFenster_GaesteWC)
  Group:Number:SUM       Fenster_GaesteWC_links_Gruppe          "Fenster Gäste-WC links [MAP(fenster_gruppen.map):%s]"             <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Number                 Fenster_GaesteWC_links_Gruppe_Kipp     "Fenster Gäste-WC links kipp [MAP(fenster.map):%s]"                <fenster>     (Fenster_GaesteWC_links_Gruppe)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links_Kipp" }
  Number                 Fenster_GaesteWC_links_Gruppe_Offen    "Fenster Gäste-WC links offen [MAP(fenster.map):%s]"               <fenster>     (Fenster_GaesteWC_links_Gruppe)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links" }
  Group:Number:SUM       Fenster_GaesteWC_rechts_Gruppe         "Fenster Gäste-WC rechts [MAP(fenster_gruppen.map):%s]"            <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Number                 Fenster_GaesteWC_rechts_Gruppe_Kipp    "Fenster Gäste-WC rechts kipp [MAP(fenster.map):%s]"               <fenster>     (Fenster_GaesteWC_rechts_Gruppe)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts_Kipp" }
  Number                 Fenster_GaesteWC_rechts_Gruppe_Offen   "Fenster Gäste-WC rechts offen [MAP(fenster.map):%s]"              <fenster>     (Fenster_GaesteWC_rechts_Gruppe)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts" }
Sitemap:

Code: Alles auswählen

Group item=gFensterTuerenOffen
fenster_gruppen.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
2=Gekippt
fenster.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
CLOSED=Geschlossen
OPEN=Geöffnet
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von udo1toni »

Das Problem ist, Du versuchst über ein Contact Item Number Items einzusammeln. Die Group:Number Items haben ja keinen Zustand OPEN oder CLOSED, sondern 0, 1 oder 2. Die OR Aggregation kann nur mit zwei Werten umgehen (und wie sollte das auch anders funktionieren?)

Wenn es nur darum geht, im Gruppenitem anzeigen zu lassen, ob alle Fenster geschlossen sind oder nicht (incl. gekippt) dann nutze als Group Item eines vom Typ Number und nutze als Aggregation Funktion SUM. Anschließend mappst Du mit SCALE. Ein Wert 0 entspricht dann eben "Alle Fenster zu", ein Wert über 0 entspricht "Mindestens ein Fenster offen oder gekippt"
Alternativ kannst Du auch anders vorgehen:
1. alle Kontakte werden als Contact abgebildet.
2. Die Group Items pro Fenster werden OR(OPEN,CLOSED) abgebildet. Du änderst das Mapping in der Anzeige dahingehhend, dass Du %d übergibst, das ist automatisch die Anzahl offener Kontakte (0=geschlossen, 1=offen, 2=gekippt)
2. Du bildest pro Kontakttyp ein Group:Contact:OR(OPEN,CLOSED) und hast damit die Anzahl irgendwie geöffneter sowie die Anzahl gekippter Fenster.
Die Differenz der Anzahlen beider Fenster ergibt die Anzahl nicht gekippter, aber geöffneter Fenster.

Alternativ kannst Du aber auch eine Rule verwenden, um über die Contact Items zu zählen. Dazu packst Du am einfachsten alle Kontakte in eine gemeinsame Gruppe (im Beispiel gAlleFK)

Code: Alles auswählen

rule "offene Fenster zählen"
when
    Member of gAlleFK changed
then
    var Integer iKipp = 0
    var Integer iOffen = 0
    gAlleFK.members.filter[m|m.state==OPEN].forEach[i|
        if(i.name.endsWith("Kipp"))
            iKipp += 1
        else
            iOffen += 1
    ]
    logInfo("fenster","geöffnet: {} gekippt: {} offen: {}",iOffen,iKipp,iOffen-iKipp)
    alleFensterText.postUpdate(iOffen.toString+"/"+iKipp.toString+"/"+(iOffen-iKipp).toString)
end
Jedes Mal, wenn ein Member der Gruppe seinen Zustand ändert, wird die Rule gestartet.
Die Rule filtert die Gruppe nach geöffneten Kontakten.
Anschließend zählt sie auf zwei Zählern abhängig vom Vorhandensein des Namensteils "Kipp".
Zum Schluss wird das Ergebnis ins Log und in ein String Item geschrieben.

Wahlweise kannst Du natürlich auch die Number Items weiter verwenden, Du musst dann nur statt auf .state==OPEN auf .state.toString=="1" filtern.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

udo1toni hat geschrieben: 24. Apr 2023 13:12 Das Problem ist, Du versuchst über ein Contact Item Number Items einzusammeln. Die Group:Number Items haben ja keinen Zustand OPEN oder CLOSED, sondern 0, 1 oder 2. Die OR Aggregation kann nur mit zwei Werten umgehen (und wie sollte das auch anders funktionieren?)

Wenn es nur darum geht, im Gruppenitem anzeigen zu lassen, ob alle Fenster geschlossen sind oder nicht (incl. gekippt) dann nutze als Group Item eines vom Typ Number und nutze als Aggregation Funktion SUM. Anschließend mappst Du mit SCALE. Ein Wert 0 entspricht dann eben "Alle Fenster zu", ein Wert über 0 entspricht "Mindestens ein Fenster offen oder gekippt"
Alternativ kannst Du auch anders vorgehen:
1. alle Kontakte werden als Contact abgebildet.
2. Die Group Items pro Fenster werden OR(OPEN,CLOSED) abgebildet. Du änderst das Mapping in der Anzeige dahingehhend, dass Du %d übergibst, das ist automatisch die Anzahl offener Kontakte (0=geschlossen, 1=offen, 2=gekippt)
2. Du bildest pro Kontakttyp ein Group:Contact:OR(OPEN,CLOSED) und hast damit die Anzahl irgendwie geöffneter sowie die Anzahl gekippter Fenster.
Die Differenz der Anzahlen beider Fenster ergibt die Anzahl nicht gekippter, aber geöffneter Fenster.

Alternativ kannst Du aber auch eine Rule verwenden, um über die Contact Items zu zählen. Dazu packst Du am einfachsten alle Kontakte in eine gemeinsame Gruppe (im Beispiel gAlleFK)

Code: Alles auswählen

Rule "offene Fenster zählen"
when
    Member of gAlleFK changed
then
    var Integer iKipp = 0
    var Integer iOffen = 0
    gAlleFK.members.filter[m|m.state==OPEN].forEach[i|
        if(i.name.endsWith("Kipp"))
            iKipp += 1
        else
            iOffen += 1
    ]
    logInfo("fenster","geöffnet: {} gekippt: {} offen: {}",iOffen,iKipp,iOffen-iKipp)
    alleFensterText.postUpdate(iOffen.toString+"/"+iKipp.toString+"/"+(iOffen-iKipp).toString)
end
Jedes Mal, wenn ein Member der Gruppe seinen Zustand ändert, wird die Rule gestartet.
Die Rule filtert die Gruppe nach geöffneten Kontakten.
Anschließend zählt sie auf zwei Zählern abhängig vom Vorhandensein des Namensteils "Kipp".
Zum Schluss wird das Ergebnis ins Log und in ein String Item geschrieben.

Wahlweise kannst Du natürlich auch die Number Items weiter verwenden, Du musst dann nur statt auf .state==OPEN auf .state.toString=="1" filtern.

Das ist schon mal ein guter Ansatz!

Ich hab das ganze mal versucht direkt einzubauen, doch leider bekomme ich bei der Rule folgende Fehlermeldung:

Code: Alles auswählen

2023-04-24 13:40:14.226 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'fensterkontakte.rules'
2023-04-24 13:40:14.233 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'fensterkontakte.rules' is either empty or cannot be parsed correctly!
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

Ich hab die Items mal ein bisschen umstrukturiert. Nun zeigt mein Gruppen Item auch den Status der gekippten Fenster als offen an.

Leider bekomme ich nun diese Fehlermeldungen (ist natürlich nur ein Ausschnitt von vielen)..

Fehlermeldungen:

Code: Alles auswählen

[rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_FlurOG_rechts_Gruppe_Kipp' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.763 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_Werkstatt_Gruppe' with pattern 'MAP(fenster_gruppen.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.777 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_Kueche_Gruppe' with pattern 'MAP(fenster_gruppen.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.782 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_GaesteWC_rechts_Gruppe_Offen' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
Items:

Code: Alles auswählen

// BinaereingangPotentialfrei1 - MDT Binäreingang Potentialfrei 32-fach (A17)
 
  Group:Contact:OR(OPEN,CLOSED)       Fenster_FlurOG_links_Gruppe            "Fenster Flur OG links  [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_FlurOG_links_Gruppe_Kipp       "Fenster Flur OG links kipp [MAP(fenster.map):%d]"                 <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links_Kipp" }
  Contact                             Fenster_FlurOG_links_Gruppe_Offen      "Fenster Flur OG links offen [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_FlurOG_rechts_Gruppe           "Fenster Flur OG rechts [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen) 
  Contact                             Fenster_FlurOG_rechts_Gruppe_Kipp      "Fenster Flur OG rechts kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts_Kipp" }
  Contact                             Fenster_FlurOG_rechts_Gruppe_Offen     "Fenster Flur OG rechts offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Schlafzimmer_Gruppe            "Fenster Schlafzimmer [MAP(fenster_gruppen.map):%d]"               <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Schlafzimmer_Gruppe_Kipp       "Fenster Schlafzimmer kipp [MAP(fenster.map):%d]"                  <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer_Kipp" }
  Contact                             Fenster_Schlafzimmer_Gruppe_Offen      "Fenster Schlafzimmer offen [MAP(fenster.map):%d]"                 <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Kind1_Gruppe                   "Fenster Kind1 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind1_Gruppe_Kipp              "Fenster Kind1 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1_Kipp" }
  Contact                             Fenster_Kind1_Gruppe_Offen             "Fenster Kind1 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Kind2_Gruppe                   "Fenster Kind2 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind2_Gruppe_Kipp              "Fenster Kind2 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2_Kipp" }
  Contact                             Fenster_Kind2_Gruppe_Offen             "Fenster Kind2 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Bad_links_Gruppe               "Fenster Bad links [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Bad_links                      "Fenster Bad links [MAP(fenster.map):%d]"                          <fenster>     (Fenster_Bad_links_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Bad_rechts_Gruppe              "Fenster Bad rechts [MAP(fenster_gruppen.map):%d]"                 <fenster>     (gFensterTuerenOffen)    
  Contact                             Fenster_Bad_rechts                     "Fenster Bad rechts [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Bad_rechts_Gruppe, gAlleFensterkontakte)        { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Giebel_links_Gruppe         "Fenster DG Giebel links [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_links_Gruppe_Kipp    "Fenster DG Giebel links kipp  [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_links_Gruppe_Offen   "Fenster DG Giebel links offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Giebel_rechts_Gruppe        "Fenster DG Giebel rechts [MAP(fenster_gruppen.map):%d]"           <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Kipp   "Fenster DG Giebel rechts kipp  [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Offen  "Fenster DG Giebel rechts offen [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Dachfenster_Gruppe          "Fenster DG Dachfenster [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Dachfenster                 "Fenster DG Dachfenster  [MAP(fenster.map):%d]"                    <fenster>     (Fenster_DG_Dachfenster_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss" }
  //Contact                           Kontakt_Briefkasten_Briefschlitz       "Briefkasten Briefschlitz [MAP(kontakt.map):%s]"                   <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Briefschlitz" }
  //Contact                           Kontakt_Briefkasten_Klappe             "Briefkasten Entnahmeklappe [MAP(kontakt.map):%s]"                 <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Klappe" }
  Contact                             Kontakt_LED_Sicherung_1                "LED Sicherung 1 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_1" }
  Contact                             Kontakt_LED_Sicherung_2                "LED Sicherung 2 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_2" }
  Number                              Stromzaehler_WP_kWh                    "Stromzähler WP [%.2f kWh]"                                        <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_kWh" }
  Number                              Stromzaehler_WP_Watt                   "Stromzähler WP [%.0f W]"                                          <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_Watt" }
  Number                              Stromzaehler_Garage_kWh                "Stromzähler Garage [%.2f kWh]"                                    <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_kWh" }
  Number                              Stromzaehler_Garage_Watt               "Stromzähler Garage [%.0f W]"                                      <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_Watt" }
  Contact                             Kontakt_Fernmelde_UeSchutz_Zaehler     "FM Überspannungsschutz Zähler [MAP(fernmeldekontakt.map):%s]"     <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_Zaehler" }
  Contact                             Kontakt_Fernmelde_UeSchutz_UV          "FM Überspannungsschutz UV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_UV" }
  Contact                             Kontakt_Fernmelde_UeSchutz_PV          "FM Überspannungsschutz PV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_PV" }
  Number                              Wasserzaehler_Brunnenpumpe_m3          "Brunnenpumpe [%.2f m3]"                                           <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Zaehlerstand" }
  Number                              Wasserzaehler_Brunnenpumpe_lh          "Brunnenpumpe [%.0f l/h]"                                          <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Durchfluss" }
  
      
 // BinaereingangPotentialfrei2 - MDT Binäreingang Potentialfrei 32-fach (A18)


  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Kellertuer_Gruppe              "Kellertür [MAP(fenster_gruppen.map):%d]"                          <door>        (gFensterTuerenOffen)
  Contact                          Kontakt_Kellertuer                     "Kellertür [MAP(fenster.map):%d]"                                  <door>        (Kontakt_Kellertuer_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Kellertuer" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Lueftungskeller_Gruppe         "Fenster Lüftungskeller [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Lueftungskeller_Gruppe_Kipp    "Fenster Lüftungskeller kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller_Kipp" }
  Contact                          Fenster_Lueftungskeller_Gruppe_Offen   "Fenster Lüftungskeller offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Werkstatt_Gruppe               "Fenster Werkstatt [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Werkstatt_Gruppe_Kipp          "Fenster Werkstatt kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt_Kipp" }
  Contact                          Fenster_Werkstatt_Gruppe_Offen         "Fenster Werkstatt offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt" }
  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Haustuer_Gruppe                "Haustür [MAP(fenster_gruppen.map):%d]"                            <frontdoor>   (gFensterTuerenOffen)
  Contact                          Kontakt_Haustuer                       "Haustür [MAP(fenster.map):%d]"                                    <frontdoor>   (Kontakt_Haustuer_Gruppe, gAlleFensterkontakte)           { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Haustuer" }
  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Hebeschiebetuer_Gruppe         "Hebeschiebetür [MAP(fenster_gruppen.map):%d]"                     <fenster>     (gFensterTuerenOffen)
  Contact                          Kontakt_Hebeschiebetuer                "Hebeschiebetür [MAP(fenster.map):%d]"                             <fenster>     (Kontakt_Hebeschiebetuer_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Hebeschiebetuer" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Kueche_Gruppe                  "Fenster Küche [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Kueche_Gruppe_Kipp             "Fenster Küche kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche_Kipp" }
  Contact                          Fenster_Kueche_Gruppe_Offen            "Fenster Küche offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Esszimmer_Gruppe               "Fenster Esszimmer [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Esszimmer_Gruppe_Kipp          "Fenster Esszimmer kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer_Kipp" }
  Contact                          Fenster_Esszimmer_Gruppe_Offen         "Fenster Esszimmer offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer" }
  Group:Contact                    Fenster_GaesteWC_Gruppe                "Fenster Gäste-WC [MAP(fenster_gruppen.map):%d]"                   <fenster>     (gFenster_GaesteWC)
  Group:Contact:OR(OPEN,CLOSED)    Fenster_GaesteWC_links_Gruppe          "Fenster Gäste-WC links [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_links_Gruppe_Kipp     "Fenster Gäste-WC links kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links_Kipp" }
  Contact                          Fenster_GaesteWC_links_Gruppe_Offen    "Fenster Gäste-WC links offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_GaesteWC_rechts_Gruppe         "Fenster Gäste-WC rechts [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Kipp    "Fenster Gäste-WC rechts kipp [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts_Kipp" }
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Offen   "Fenster Gäste-WC rechts offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts" }
  Contact                          Kontakt_Rauchmelder                    "Rauchmelder [MAP(gefahrenmelder.map):%s]"                         <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Rauchmelder" }
  Contact                          Kontakt_CoMelder                       "CO Melder [MAP(gefahrenmelder.map):%s]"                           <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_COMelder" }
  
Gruppen Item:

Code: Alles auswählen

Group:Contact:OR(OPEN, OPEN)   gFensterTuerenOffen                       "Fenster u. Türen offen [%d]"             <motion>
Sitemap:

Code: Alles auswählen

Group item=gFensterTuerenOffen
fenster_gruppen.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
2=Gekippt
CLOSED=Geschlossen
fenster.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
CLOSED=Geschlossen
OPEN=Geöffnet
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von udo1toni »

Da hat sich ein großes R am Anfang von rule eingeschlichen...

Bezüglich dieses Fehlers:

Code: Alles auswählen

Failed transforming the state 'CLOSED' on item 'Fenster_FlurOG_rechts_Gruppe_Kipp' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
wundert mich etwas, das hat mal funktioniert. Wobei, vielleicht stand der Wert nie für die Transformation zur Verfügung...
Egal, ändere das Group Item zum Typ Number und verwende COUNT als Aggregation:

Code: Alles auswählen

Group:Number:COUNT("OPEN") Fenster_FlurOG_rechts_Gruppe_Kipp "..."
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

Habe das :%d nun durch ein :%s ersetzt, Fehler sind weg. Die Anzeige der gekippten Fenster innerhalb der Gruppe wird aber nun nicht mehr angezeigt :(

Hast du dazu eine Idee?

spirit hat geschrieben: 24. Apr 2023 17:57 Ich hab die Items mal ein bisschen umstrukturiert. Nun zeigt mein Gruppen Item auch den Status der gekippten Fenster als offen an.

Leider bekomme ich nun diese Fehlermeldungen (ist natürlich nur ein Ausschnitt von vielen)..

Fehlermeldungen:

Code: Alles auswählen

[rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_FlurOG_rechts_Gruppe_Kipp' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.763 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_Werkstatt_Gruppe' with pattern 'MAP(fenster_gruppen.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.777 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_Kueche_Gruppe' with pattern 'MAP(fenster_gruppen.map):%d': Cannot format state 'CLOSED' to format '%d'
2023-04-24 17:39:33.782 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state 'CLOSED' on item 'Fenster_GaesteWC_rechts_Gruppe_Offen' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
Items:

Code: Alles auswählen

// BinaereingangPotentialfrei1 - MDT Binäreingang Potentialfrei 32-fach (A17)
 
  Group:Contact:OR(OPEN,CLOSED)       Fenster_FlurOG_links_Gruppe            "Fenster Flur OG links  [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_FlurOG_links_Gruppe_Kipp       "Fenster Flur OG links kipp [MAP(fenster.map):%d]"                 <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links_Kipp" }
  Contact                             Fenster_FlurOG_links_Gruppe_Offen      "Fenster Flur OG links offen [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_FlurOG_rechts_Gruppe           "Fenster Flur OG rechts [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen) 
  Contact                             Fenster_FlurOG_rechts_Gruppe_Kipp      "Fenster Flur OG rechts kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts_Kipp" }
  Contact                             Fenster_FlurOG_rechts_Gruppe_Offen     "Fenster Flur OG rechts offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Schlafzimmer_Gruppe            "Fenster Schlafzimmer [MAP(fenster_gruppen.map):%d]"               <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Schlafzimmer_Gruppe_Kipp       "Fenster Schlafzimmer kipp [MAP(fenster.map):%d]"                  <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer_Kipp" }
  Contact                             Fenster_Schlafzimmer_Gruppe_Offen      "Fenster Schlafzimmer offen [MAP(fenster.map):%d]"                 <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Kind1_Gruppe                   "Fenster Kind1 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind1_Gruppe_Kipp              "Fenster Kind1 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1_Kipp" }
  Contact                             Fenster_Kind1_Gruppe_Offen             "Fenster Kind1 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Kind2_Gruppe                   "Fenster Kind2 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind2_Gruppe_Kipp              "Fenster Kind2 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2_Kipp" }
  Contact                             Fenster_Kind2_Gruppe_Offen             "Fenster Kind2 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Bad_links_Gruppe               "Fenster Bad links [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Bad_links                      "Fenster Bad links [MAP(fenster.map):%d]"                          <fenster>     (Fenster_Bad_links_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_Bad_rechts_Gruppe              "Fenster Bad rechts [MAP(fenster_gruppen.map):%d]"                 <fenster>     (gFensterTuerenOffen)    
  Contact                             Fenster_Bad_rechts                     "Fenster Bad rechts [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Bad_rechts_Gruppe, gAlleFensterkontakte)        { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Giebel_links_Gruppe         "Fenster DG Giebel links [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_links_Gruppe_Kipp    "Fenster DG Giebel links kipp  [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_links_Gruppe_Offen   "Fenster DG Giebel links offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Links" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Giebel_rechts_Gruppe        "Fenster DG Giebel rechts [MAP(fenster_gruppen.map):%d]"           <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Kipp   "Fenster DG Giebel rechts kipp  [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Offen  "Fenster DG Giebel rechts offen [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Rechts" }
  Group:Contact:OR(OPEN,CLOSED)       Fenster_DG_Dachfenster_Gruppe          "Fenster DG Dachfenster [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Dachfenster                 "Fenster DG Dachfenster  [MAP(fenster.map):%d]"                    <fenster>     (Fenster_DG_Dachfenster_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss" }
  //Contact                           Kontakt_Briefkasten_Briefschlitz       "Briefkasten Briefschlitz [MAP(kontakt.map):%s]"                   <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Briefschlitz" }
  //Contact                           Kontakt_Briefkasten_Klappe             "Briefkasten Entnahmeklappe [MAP(kontakt.map):%s]"                 <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Klappe" }
  Contact                             Kontakt_LED_Sicherung_1                "LED Sicherung 1 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_1" }
  Contact                             Kontakt_LED_Sicherung_2                "LED Sicherung 2 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_2" }
  Number                              Stromzaehler_WP_kWh                    "Stromzähler WP [%.2f kWh]"                                        <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_kWh" }
  Number                              Stromzaehler_WP_Watt                   "Stromzähler WP [%.0f W]"                                          <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_Watt" }
  Number                              Stromzaehler_Garage_kWh                "Stromzähler Garage [%.2f kWh]"                                    <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_kWh" }
  Number                              Stromzaehler_Garage_Watt               "Stromzähler Garage [%.0f W]"                                      <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_Watt" }
  Contact                             Kontakt_Fernmelde_UeSchutz_Zaehler     "FM Überspannungsschutz Zähler [MAP(fernmeldekontakt.map):%s]"     <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_Zaehler" }
  Contact                             Kontakt_Fernmelde_UeSchutz_UV          "FM Überspannungsschutz UV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_UV" }
  Contact                             Kontakt_Fernmelde_UeSchutz_PV          "FM Überspannungsschutz PV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_PV" }
  Number                              Wasserzaehler_Brunnenpumpe_m3          "Brunnenpumpe [%.2f m3]"                                           <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Zaehlerstand" }
  Number                              Wasserzaehler_Brunnenpumpe_lh          "Brunnenpumpe [%.0f l/h]"                                          <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Durchfluss" }
  
      
 // BinaereingangPotentialfrei2 - MDT Binäreingang Potentialfrei 32-fach (A18)


  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Kellertuer_Gruppe              "Kellertür [MAP(fenster_gruppen.map):%d]"                          <door>        (gFensterTuerenOffen)
  Contact                          Kontakt_Kellertuer                     "Kellertür [MAP(fenster.map):%d]"                                  <door>        (Kontakt_Kellertuer_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Kellertuer" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Lueftungskeller_Gruppe         "Fenster Lüftungskeller [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Lueftungskeller_Gruppe_Kipp    "Fenster Lüftungskeller kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller_Kipp" }
  Contact                          Fenster_Lueftungskeller_Gruppe_Offen   "Fenster Lüftungskeller offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Werkstatt_Gruppe               "Fenster Werkstatt [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Werkstatt_Gruppe_Kipp          "Fenster Werkstatt kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt_Kipp" }
  Contact                          Fenster_Werkstatt_Gruppe_Offen         "Fenster Werkstatt offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt" }
  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Haustuer_Gruppe                "Haustür [MAP(fenster_gruppen.map):%d]"                            <frontdoor>   (gFensterTuerenOffen)
  Contact                          Kontakt_Haustuer                       "Haustür [MAP(fenster.map):%d]"                                    <frontdoor>   (Kontakt_Haustuer_Gruppe, gAlleFensterkontakte)           { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Haustuer" }
  Group:Contact:OR(OPEN,CLOSED)    Kontakt_Hebeschiebetuer_Gruppe         "Hebeschiebetür [MAP(fenster_gruppen.map):%d]"                     <fenster>     (gFensterTuerenOffen)
  Contact                          Kontakt_Hebeschiebetuer                "Hebeschiebetür [MAP(fenster.map):%d]"                             <fenster>     (Kontakt_Hebeschiebetuer_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Hebeschiebetuer" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Kueche_Gruppe                  "Fenster Küche [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Kueche_Gruppe_Kipp             "Fenster Küche kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche_Kipp" }
  Contact                          Fenster_Kueche_Gruppe_Offen            "Fenster Küche offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_Esszimmer_Gruppe               "Fenster Esszimmer [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Esszimmer_Gruppe_Kipp          "Fenster Esszimmer kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer_Kipp" }
  Contact                          Fenster_Esszimmer_Gruppe_Offen         "Fenster Esszimmer offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer" }
  Group:Contact                    Fenster_GaesteWC_Gruppe                "Fenster Gäste-WC [MAP(fenster_gruppen.map):%d]"                   <fenster>     (gFenster_GaesteWC)
  Group:Contact:OR(OPEN,CLOSED)    Fenster_GaesteWC_links_Gruppe          "Fenster Gäste-WC links [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_links_Gruppe_Kipp     "Fenster Gäste-WC links kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links_Kipp" }
  Contact                          Fenster_GaesteWC_links_Gruppe_Offen    "Fenster Gäste-WC links offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links" }
  Group:Contact:OR(OPEN,CLOSED)    Fenster_GaesteWC_rechts_Gruppe         "Fenster Gäste-WC rechts [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Kipp    "Fenster Gäste-WC rechts kipp [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts_Kipp" }
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Offen   "Fenster Gäste-WC rechts offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts" }
  Contact                          Kontakt_Rauchmelder                    "Rauchmelder [MAP(gefahrenmelder.map):%s]"                         <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Rauchmelder" }
  Contact                          Kontakt_CoMelder                       "CO Melder [MAP(gefahrenmelder.map):%s]"                           <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_COMelder" }
  
Gruppen Item:

Code: Alles auswählen

Group:Contact:OR(OPEN, OPEN)   gFensterTuerenOffen                       "Fenster u. Türen offen [%d]"             <motion>
Sitemap:

Code: Alles auswählen

Group item=gFensterTuerenOffen
fenster_gruppen.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
2=Gekippt
CLOSED=Geschlossen
fenster.map:

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
CLOSED=Geschlossen
OPEN=Geöffnet
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

Das :%d macht immer noch Probleme :(
udo1toni hat geschrieben: 24. Apr 2023 18:08 Da hat sich ein großes R am Anfang von rule eingeschlichen...

Bezüglich dieses Fehlers:

Code: Alles auswählen

Failed transforming the state 'CLOSED' on item 'Fenster_FlurOG_rechts_Gruppe_Kipp' with pattern 'MAP(fenster.map):%d': Cannot format state 'CLOSED' to format '%d'
wundert mich etwas, das hat mal funktioniert. Wobei, vielleicht stand der Wert nie für die Transformation zur Verfügung...
Egal, ändere das Group Item zum Typ Number und verwende COUNT als Aggregation:

Code: Alles auswählen

Group:Number:COUNT("OPEN") Fenster_FlurOG_rechts_Gruppe_Kipp "..."
Fehlermeldung:

Code: Alles auswählen

==> /var/log/openhab/openhab.log <==
2023-04-24 18:29:57.185 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '0' on item 'Fenster_Esszimmer_Gruppe' with pattern 'MAP(fenster_gruppen.map):%d': Cannot format state '0' to format '%d'
Items:

Code: Alles auswählen

// BinaereingangPotentialfrei1 - MDT Binäreingang Potentialfrei 32-fach (A17)
 
  Group:Number:COUNT("OPEN")          Fenster_FlurOG_links_Gruppe            "Fenster Flur OG links  [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_FlurOG_links_Gruppe_Kipp       "Fenster Flur OG links kipp [MAP(fenster.map):%d]"                 <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links_Kipp" }
  Contact                             Fenster_FlurOG_links_Gruppe_Offen      "Fenster Flur OG links offen [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_links_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links" }
  Group:Number:COUNT("OPEN")          Fenster_FlurOG_rechts_Gruppe           "Fenster Flur OG rechts [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen) 
  Contact                             Fenster_FlurOG_rechts_Gruppe_Kipp      "Fenster Flur OG rechts kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts_Kipp" }
  Contact                             Fenster_FlurOG_rechts_Gruppe_Offen     "Fenster Flur OG rechts offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_FlurOG_rechts_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts" }
  Group:Number:COUNT("OPEN")          Fenster_Schlafzimmer_Gruppe            "Fenster Schlafzimmer [MAP(fenster_gruppen.map):%d]"               <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Schlafzimmer_Gruppe_Kipp       "Fenster Schlafzimmer kipp [MAP(fenster.map):%d]"                  <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer_Kipp" }
  Contact                             Fenster_Schlafzimmer_Gruppe_Offen      "Fenster Schlafzimmer offen [MAP(fenster.map):%d]"                 <fenster>     (Fenster_Schlafzimmer_Gruppe, gAlleFensterkontakte)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Schlafzimmer" }
  Group:Number:COUNT("OPEN")          Fenster_Kind1_Gruppe                   "Fenster Kind1 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind1_Gruppe_Kipp              "Fenster Kind1 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1_Kipp" }
  Contact                             Fenster_Kind1_Gruppe_Offen             "Fenster Kind1 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind1_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind1" }
  Group:Number:COUNT("OPEN")          Fenster_Kind2_Gruppe                   "Fenster Kind2 [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Kind2_Gruppe_Kipp              "Fenster Kind2 kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2_Kipp" }
  Contact                             Fenster_Kind2_Gruppe_Offen             "Fenster Kind2 offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kind2_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Kind2" }
  Group:Number:COUNT("OPEN")          Fenster_Bad_links_Gruppe               "Fenster Bad links [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_Bad_links                      "Fenster Bad links [MAP(fenster.map):%d]"                          <fenster>     (Fenster_Bad_links_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Links" }
  Group:Number:COUNT("OPEN")          Fenster_Bad_rechts_Gruppe              "Fenster Bad rechts [MAP(fenster_gruppen.map):%d]"                 <fenster>     (gFensterTuerenOffen)    
  Contact                             Fenster_Bad_rechts                     "Fenster Bad rechts [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Bad_rechts_Gruppe, gAlleFensterkontakte)        { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Bad_Rechts" }
  Group:Number:COUNT("OPEN")          Fenster_DG_Giebel_links_Gruppe         "Fenster DG Giebel links [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_links_Gruppe_Kipp    "Fenster DG Giebel links kipp  [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_links_Gruppe_Offen   "Fenster DG Giebel links offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_DG_Giebel_links_Gruppe, gAlleFensterkontakte)   { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Links" }
  Group:Number:COUNT("OPEN")          Fenster_DG_Giebel_rechts_Gruppe        "Fenster DG Giebel rechts [MAP(fenster_gruppen.map):%d]"           <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Kipp   "Fenster DG Giebel rechts kipp  [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_LiRe_Kipp" }
  Contact                             Fenster_DG_Giebel_rechts_Gruppe_Offen  "Fenster DG Giebel rechts offen [MAP(fenster.map):%d]"             <fenster>     (Fenster_DG_Giebel_rechts_Gruppe, gAlleFensterkontakte)  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss_Giebel_Rechts" }
  Group:Number:COUNT("OPEN")          Fenster_DG_Dachfenster_Gruppe          "Fenster DG Dachfenster [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                             Fenster_DG_Dachfenster                 "Fenster DG Dachfenster  [MAP(fenster.map):%d]"                    <fenster>     (Fenster_DG_Dachfenster_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_Dachgeschoss" }
  //Contact                           Kontakt_Briefkasten_Briefschlitz       "Briefkasten Briefschlitz [MAP(kontakt.map):%s]"                   <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Briefschlitz" }
  //Contact                           Kontakt_Briefkasten_Klappe             "Briefkasten Entnahmeklappe [MAP(kontakt.map):%s]"                 <settings>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Briefkasten_Klappe" }
  Contact                             Kontakt_LED_Sicherung_1                "LED Sicherung 1 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_1" }
  Contact                             Kontakt_LED_Sicherung_2                "LED Sicherung 2 [MAP(fernmeldekontakt.map):%s]"                   <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_LED_Sicherung_2" }
  Number                              Stromzaehler_WP_kWh                    "Stromzähler WP [%.2f kWh]"                                        <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_kWh" }
  Number                              Stromzaehler_WP_Watt                   "Stromzähler WP [%.0f W]"                                          <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_WP_Watt" }
  Number                              Stromzaehler_Garage_kWh                "Stromzähler Garage [%.2f kWh]"                                    <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_kWh" }
  Number                              Stromzaehler_Garage_Watt               "Stromzähler Garage [%.0f W]"                                      <energy>                                                               { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Stromzaehler_Garage_Watt" }
  Contact                             Kontakt_Fernmelde_UeSchutz_Zaehler     "FM Überspannungsschutz Zähler [MAP(fernmeldekontakt.map):%s]"     <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_Zaehler" }
  Contact                             Kontakt_Fernmelde_UeSchutz_UV          "FM Überspannungsschutz UV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_UV" }
  Contact                             Kontakt_Fernmelde_UeSchutz_PV          "FM Überspannungsschutz PV [MAP(fernmeldekontakt.map):%s]"         <softener>    (gUeberspannungsschutz)                                  { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fernemelde_Ueberspannungsschutz_PV" }
  Number                              Wasserzaehler_Brunnenpumpe_m3          "Brunnenpumpe [%.2f m3]"                                           <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Zaehlerstand" }
  Number                              Wasserzaehler_Brunnenpumpe_lh          "Brunnenpumpe [%.0f l/h]"                                          <pressure>                                                             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Wasserzaehler_Brunnenpumpe_Durchfluss" }
  
      
 // BinaereingangPotentialfrei2 - MDT Binäreingang Potentialfrei 32-fach (A18)


  Group:Number:COUNT("OPEN")       Kontakt_Kellertuer_Gruppe              "Kellertür [MAP(fenster_gruppen.map):%d]"                          <door>        (gFensterTuerenOffen)
  Contact                          Kontakt_Kellertuer                     "Kellertür [MAP(fenster.map):%d]"                                  <door>        (Kontakt_Kellertuer_Gruppe, gAlleFensterkontakte)         { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Kellertuer" }
  Group:Number:COUNT("OPEN")       Fenster_Lueftungskeller_Gruppe         "Fenster Lüftungskeller [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Lueftungskeller_Gruppe_Kipp    "Fenster Lüftungskeller kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller_Kipp" }
  Contact                          Fenster_Lueftungskeller_Gruppe_Offen   "Fenster Lüftungskeller offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_Lueftungskeller_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Lueftungskeller" }
  Group:Number:COUNT("OPEN")       Fenster_Werkstatt_Gruppe               "Fenster Werkstatt [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Werkstatt_Gruppe_Kipp          "Fenster Werkstatt kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt_Kipp" }
  Contact                          Fenster_Werkstatt_Gruppe_Offen         "Fenster Werkstatt offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Werkstatt_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Werkstatt" }
  Group:Number:COUNT("OPEN")       Kontakt_Haustuer_Gruppe                "Haustür [MAP(fenster_gruppen.map):%d]"                            <frontdoor>   (gFensterTuerenOffen)
  Contact                          Kontakt_Haustuer                       "Haustür [MAP(fenster.map):%d]"                                    <frontdoor>   (Kontakt_Haustuer_Gruppe, gAlleFensterkontakte)           { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Haustuer" }
  Group:Number:COUNT("OPEN")       Kontakt_Hebeschiebetuer_Gruppe         "Hebeschiebetür [MAP(fenster_gruppen.map):%d]"                     <fenster>     (gFensterTuerenOffen)
  Contact                          Kontakt_Hebeschiebetuer                "Hebeschiebetür [MAP(fenster.map):%d]"                             <fenster>     (Kontakt_Hebeschiebetuer_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Hebeschiebetuer" }
  Group:Number:COUNT("OPEN")       Fenster_Kueche_Gruppe                  "Fenster Küche [MAP(fenster_gruppen.map):%d]"                      <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Kueche_Gruppe_Kipp             "Fenster Küche kipp [MAP(fenster.map):%d]"                         <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche_Kipp" }
  Contact                          Fenster_Kueche_Gruppe_Offen            "Fenster Küche offen [MAP(fenster.map):%d]"                        <fenster>     (Fenster_Kueche_Gruppe, gAlleFensterkontakte)             { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Kueche" }
  Group:Number:COUNT("OPEN")       Fenster_Esszimmer_Gruppe               "Fenster Esszimmer [MAP(fenster_gruppen.map):%d]"                  <fenster>     (gFensterTuerenOffen)
  Contact                          Fenster_Esszimmer_Gruppe_Kipp          "Fenster Esszimmer kipp [MAP(fenster.map):%d]"                     <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer_Kipp" }
  Contact                          Fenster_Esszimmer_Gruppe_Offen         "Fenster Esszimmer offen [MAP(fenster.map):%d]"                    <fenster>     (Fenster_Esszimmer_Gruppe, gAlleFensterkontakte)          { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_Esszimmer" }
  Group:Contact                    Fenster_GaesteWC_Gruppe                "Fenster Gäste-WC [MAP(fenster_gruppen.map):%d]"                   <fenster>     (gFenster_GaesteWC)
  Group:Number:COUNT("OPEN")       Fenster_GaesteWC_links_Gruppe          "Fenster Gäste-WC links [MAP(fenster_gruppen.map):%d]"             <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_links_Gruppe_Kipp     "Fenster Gäste-WC links kipp [MAP(fenster.map):%d]"                <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links_Kipp" }
  Contact                          Fenster_GaesteWC_links_Gruppe_Offen    "Fenster Gäste-WC links offen [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_links_Gruppe, gAlleFensterkontakte)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Links" }
  Group:Number:COUNT("OPEN")       Fenster_GaesteWC_rechts_Gruppe         "Fenster Gäste-WC rechts [MAP(fenster_gruppen.map):%d]"            <fenster>     (gFensterTuerenOffen, Fenster_GaesteWC_Gruppe)
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Kipp    "Fenster Gäste-WC rechts kipp [MAP(fenster.map):%d]"               <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts_Kipp" }
  Contact                          Fenster_GaesteWC_rechts_Gruppe_Offen   "Fenster Gäste-WC rechts offen [MAP(fenster.map):%d]"              <fenster>     (Fenster_GaesteWC_rechts_Gruppe, gAlleFensterkontakte)    { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Fenster_GaesteWC_Rechts" }
  Contact                          Kontakt_Rauchmelder                    "Rauchmelder [MAP(gefahrenmelder.map):%s]"                         <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_Rauchmelder" }
  Contact                          Kontakt_CoMelder                       "CO Melder [MAP(gefahrenmelder.map):%s]"                           <smoke>                                                                 { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei2:Kontakt_COMelder" }
  
Gruppen Item:

Code: Alles auswählen

Group:Contact:OR(OPEN, OPEN)   gFensterTuerenOffen                       "Fenster u. Türen offen [%d]"             <motion>
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von udo1toni »

Ja, wie oben beschrieben... (ich hatte mein Posting noch ergänzt) Das Problem ist offensichtlich, dass %d nicht für die Transformation zur Verfügung steht. %s ist der Status selbst als String, %d ist die Anzahl mit dem dominanten Zustand als Ganzzahl.

Kann gut sein, dass MAP nur noch Strings als Input erlaubt, probiere es bitte mit %s (nachdem das Item jetzt mit COUNT arbeitet, kommt ja auf jeden Fall eine Zahl)

Denke auch daran, dass Du hier mit MAP nicht weiter kommst, Du musst SCALE verwenden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

spirit
Beiträge: 25
Registriert: 28. Nov 2019 08:19
Answers: 0

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von spirit »

Ich dachte das hatte ich jetzt hier schon so umgesetzt wie du es vorgeschlagen hast (siehe meine letzten Items) :D

Okay von scale habe ich keine Ahnung. Schade das Openhab bei dieser Funktion echt nicht gut umgesetzt ist.
udo1toni hat geschrieben: 24. Apr 2023 18:36 Ja, wie oben beschrieben... (ich hatte mein Posting noch ergänzt) Das Problem ist offensichtlich, dass %d nicht für die Transformation zur Verfügung steht. %s ist der Status selbst als String, %d ist die Anzahl mit dem dominanten Zustand als Ganzzahl.

Kann gut sein, dass MAP nur noch Strings als Input erlaubt, probiere es bitte mit %s (nachdem das Item jetzt mit COUNT arbeitet, kommt ja auf jeden Fall eine Zahl)

Denke auch daran, dass Du hier mit MAP nicht weiter kommst, Du musst SCALE verwenden.
openHAB 4.2.0 Release Build (openHABian auf Proxmox - Dell Optiplex 7040)

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

Re: Fenster/Tür Status bei mehreren Reedkontakten

Beitrag von udo1toni »

Nein, das ist wunderbar umgesetzt, man muss sich nur davon verabschieden, es "genauso wie bei..." zu machen. Ich lasse aber gerne gelten, dass ein Enum Item kein Luxus wäre (also ein Item, bei dem man frei über eine Liste alle gültigen Zustände definieren kann). Allerdings - im Fall der Contact Channel hast Du dann das nächste Problem, nämlich zwei voneinander unabhängige Bit-Informationen, die schon im Channel zusammengefasst werden müssten, damit das Ganze wirklich sauber funktioniert.

Aber noch mal zu Deinem Ausgangsproblem...
Ich denke, ich hätte oben vielleicht noch darauf hinweisen sollen, dass Du die Channel natürlich ebenfalls als contact Channel definieren musst. Items und Channel verwenden eine starke Typisierung, ein Contact ist etwas anderes als eine Zahl und auch etwas anderes als ein Schalter.
In knx hast Du jeweils 1 oder 0, weshalb es auch kein Problem ist, den "falschen" Datentyp an den gewünschten Channeltyp zu verbinden, korrekt ist aber Contact für Binäreingänge.

Probiere es erst mal mit einem Fenster aus, nicht alles durchkonfigurieren und dann schimpfen, weil es noch an einem Detail hapert. :)

Wenn die mit dem knx Bus verknüpften Channel als contact Channel angelegt sind, kannst Du das Contact Item verlinken und es sollte dann auch die Zustände OPEN bzw. CLOSED annehmen, je nach Zustand.

Beispielhaft zwei Fenster und die benötigten Gruppen.

Code: Alles auswählen

Group:Number:COUNT("OPEN") gAlleFensterkontakte "Fenster [SCALE(groesser0.scale):%s]"

Group:Number:COUNT("OPEN") Fenster_FlurOG_links_Gruppe  "Fenster Flur OG links  [MAP(fenster_gruppen.map):%s]" <fenster> (gFensterTuerenOffen)
Group:Number:COUNT("OPEN") Fenster_FlurOG_rechts_Gruppe "Fenster Flur OG rechts [MAP(fenster_gruppen.map):%s]" <fenster> (gFensterTuerenOffen) 

Contact Fenster_FlurOG_links_Gruppe_Kipp       "Fenster Flur OG links kipp [MAP(fenster.map):%s]"     <fenster>   (gAlleFensterkontakte, Fenster_FlurOG_links_Gruppe)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links_Kipp" }
Contact Fenster_FlurOG_links_Gruppe_Offen      "Fenster Flur OG links offen [MAP(fenster.map):%s]"    <fenster>   (gAlleFensterkontakte, Fenster_FlurOG_links_Gruppe)      { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Links" }
Contact Fenster_FlurOG_rechts_Gruppe_Kipp      "Fenster Flur OG rechts kipp [MAP(fenster.map):%s]"    <fenster>   (gAlleFensterkontakte, Fenster_FlurOG_rechts_Gruppe)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts_Kipp" }
Contact Fenster_FlurOG_rechts_Gruppe_Offen     "Fenster Flur OG rechts offen [MAP(fenster.map):%s]"   <fenster>   (gAlleFensterkontakte, Fenster_FlurOG_rechts_Gruppe)     { channel="knx:device:MDTIPInterface:BinaereingangPotentialfrei1:Kontakt_Fenster_FlurOG_Rechts" }
Ich habe hier die Elemente etwas anders angeordnet, um mehr Übersicht über eventuelle Abweichungen zu haben.

fenster.map (mit allen möglichen Zuständen):

Code: Alles auswählen

CLOSED=Geschlossen
OPEN=Geöffnet
NULL=-
-=-
UNDEF=-
fenster_gruppen.map (mit allen möglichen Zuständen):

Code: Alles auswählen

0=Geschlossen
1=Geöffnet
2=Gekippt
-=-
NULL=-
UNDEF=-
groesser0.scale (ebenfalls im transform-Ordner):

Code: Alles auswählen

[0]=alle zu
]0..]=min. 1 offen
SCALE muss natürlich installiert sein :) und die Datei sorgt dafür, dass alle Werte größer 0 zu "min. 1 offen" werden, während 0 zu "alle zu" wird. Mit SCALE kann man also numerische Bereiche zu Texten übersetzen. Die Notation ist in der offiziellen Doku erläutert.

Weil Du die Textkonfiguration nutzt: Arbeitest Du mit VS Code? Weil, wenn man massenhaft ähnlichlautende Items hat, bietet VS Code die Möglichkeit, mehrere Zeilen gleichzeitig zu editieren (dazu müssen diese aber direkt untereinander liegen).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten