Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Darstellung mehrerer Zustände bei Fensterkontakten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - Darstellung mehrerer Zustände bei Fensterkontakten

    Hallo zusammen,

    kurze Frage zum Contact-Item.

    Aktuell habe ich diese erfolgreich wie folgt umgesetzt:

    Code:
    Contact Fenster_Keller_Hobby        "Hobby [MAP(de.map):%s]"                    (Kel_Keller, Fenster)        { knx="<1/1/65"}
    Nun habe ich gesehen, dass es im Ordner webapps/images auch ein Bild eines gekippten Fenster gibt. Da ich je Fenster zwei Reedkontakte habe und dadurch in der Lage bin zwischen einem gekippten und offenen Fenster zu unterscheiden, wäre es schön dies in openhab auch darstellen zu können.

    Ist dies mit dem Contact-Item möglich oder gibt es andere Möglichkeiten?

    Gruß
    mepi0011

    #2
    Zitat von mepi0011 Beitrag anzeigen
    Ist dies mit dem Contact-Item möglich oder gibt es andere Möglichkeiten?
    kurz: nein und ja :-)
    lang:

    Ein ContactItem kann genau zwei Zustände darstellen, nämlich OPEN und CLOSED. Für Deinen Fall bräuchtest Du also zwei Contact-Items weil im Grunde ja auch zwei Kontakte in Deinem Fenster verbaut sind. Um allerdings den kompletten Zustand in einem Item abzubilden, könntest Du Dir den Zustand als Number abbilden und mit Hilfe einer Regel "errechnen":

    Code:
    rule Window
    when
            Item Fenster_Keller_Hobby_1 changed or
            Item Fenster_Keller_Hobby_2 changed
    then
            if (Fenster_Keller_Hobby_1 == OFF && Fenster_Keller_Hobby_2 == OFF) {
                    Fenster_Keller_Hobby.postUpdate(0)
            } else if (Fenster_Keller_Hobby_1 == ON && Fenster_Keller_Hobby_2 == ON) {
                    Fenster_Keller_Hobby.postUpdate(1)
            } else {
                    Fenster_Keller_Hobby.postUpdate(2)
            }
    end
    Unter der Annahme es gibt ein Item "Fenster_Keller_Hobby" vom Typ "Number". Darüber hinaus müsstest Du Dir noch weitere Images anlegen (bzw. die existierenden Images kopieren und umbenennen), den die Wahl der Image-Datei erfolgt nach Schema ImageName+ "-" + State. In Deinem Fall also "contact-0.png" bis "contact-2.png".

    Klar geworden?

    Gruß,

    Thomas E.-E.
    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

    Kommentar


      #3
      Hallo Thomas,

      wie kann ich die Regel überprüfen? Irgendwie funktioniert es noch nicht.

      Ich habe neben der Regel nun folgendes Item, wie du beschrieben hast, zusätzlich angelegt:

      Code:
      Number Fenster_Keller_Hobby        "Fenster [%f]"      <contact>    (OG_Buero, Fenster)
      Das Ergebnis ist, dass ich immer zwei angezeigt bekomme.

      Ist das in der Regel so korrekt?

      Fenster_Keller_Hobby_1 == OFF

      habe auch folgendes erfolglos getestet:

      Fenster_Keller_Hobby_1 == CLOSE
      Fenster_Keller_Hobby_1 == offen (da ich de.map verwende)

      Bitte um Hilfe!

      PS: Wie kann ich Zahlen ohne Nachkommastellen anzeigen (sorry, bin kein Experte im programmieren) :-)

      Kommentar


        #4
        Hallo,

        in der Zwischenzeit habe ich die Lösung gefunden. :-)

        Der Vergleich in der IF Anweisung muss z.B. wie folgt aussehen:

        Fenster_OG_Kind1_Balkon1.state == CLOSED

        Die Regel sieht nun wie folgt aus:

        Code:
        rule Fenster_Kind1_Balkon
        when
                Item Fenster_Keller_Hobby_1 changed or
                       Fenster_Keller_Hobby_2 changed
        then
                if (Fenster_Keller_Hobby_1.state == CLOSED && Fenster_Keller_Hobby_2.state == CLOSED) {
                  Fenster_Keller_Hobby.postUpdate(0)
                } else if (Fenster_Keller_Hobby_1.state == OPEN && Fenster_Keller_Hobby_2.state == CLOSED) {
                   Fenster_Keller_Hobby.postUpdate(1)
                } else {
                   Fenster_Keller_Hobby.postUpdate(2)
                }
        end
        PS: Die Frage wie ich ganze Zahlen anzeigen kann, hat sich auch erledigt --> Lösung: [(%d)]

        Gruß
        mepi0011

        Kommentar


          #5
          so muss es heißen! Danke für's selber rausfinden!

          Gruß,

          Thomas E.-E.
          Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

          Kommentar


            #6
            Hallo,

            hab versucht das ganze mit einem Kontakt-Item zu lösen, da es das Icon contact-ajar bereits gibt.

            Code:
            rule Fenster_Buero_Balkon
            when
                    Item Fenster_OG_Kind1_Balkon1 changed or
                    Item Fenster_OG_Kind1_Balkon2 changed
            then
                    if (Fenster_OG_Kind1_Balkon1.state == CLOSED && Fenster_OG_Kind1_Balkon2.state == CLOSED) {
                            Fenster_OG_Buero_Balkon.postUpdate(CLOSED)
                    } else if (Fenster_OG_Kind1_Balkon1.state == OPEN && Fenster_OG_Kind1_Balkon2.state == CLOSED) {
                            Fenster_OG_Buero_Balkon.postUpdate(OPEN)
                    } else {
                            Fenster_OG_Buero_Balkon.postUpdate(ajar)
                    }
            end
            Leider bekomme ich folgende Fehlermeldung:

            Error during the execcution of rule 'Fenster_Buero_balkon': The name 'ajar' cannot be resolved to an item or type.

            Kann ich nicht jeden beliebigen Text per Postupdate übermitteln?

            Im MAP-File habe ich ajar als gekippt definiert.

            Gruß
            mepi0011

            Kommentar


              #7
              das funktioniert nicht, weil das Item Fenster_OG_Buero_Balkon den Typ "Contact" hat und dafür nur die Werte OPEN und CLOSED zulässig sind (siehe OpenClosedType).

              Wenn das Icon weiter icon-ajar.png heißen soll, müßtest Du Dir ein virtuelles Item des Typs String "Fenster_OG_Buero_Balkon_zweiAchsen" und dort das icon zuordnen. String-Items dürfen auch den Wert "ajar" annehmen und würden dann über die Namenskonvention das genannten Icon finden.

              Klar geworden?
              Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

              Kommentar


                #8
                Hallo Thomas,

                habe nun ein String-Item angelegt. Es funktioniert wie gewünscht bzw. erwartet. :-)

                Danke!

                Kommentar


                  #9
                  prima!

                  Danke für die Rückmeldung!
                  Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                  Kommentar


                    #10
                    Zusammenfassung

                    Hallo,

                    zusammenfassend an alle die das zuvor beschriebe umsetzen möchten.

                    Für jedes Fenster habe ich zwei Magnetkontakte, die mir ermöglichen folgenden Fenststatus zu erkennen: Fenster geschlossen, gekippt oder offen.

                    Folgende zwei Gruppenadressen bzw. drei Items habe ich für jedes Fenster angelegt:

                    Code:
                    Contact Fenster_OG_Kind1_Balkon1        "Balkontür K1 Büro [MAP(de.map):%s]"                            (OG_Buero)                      {knx="0/0/202"}
                    Contact Fenster_OG_Kind1_Balkon2        "Balkontür K2 Büro [MAP(de.map):%s]"                            (OG_Buero)                      {knx="0/0/203"}
                    String Fenster_OG_Buero_Balkon          "Balkontür Büro [MAP(de.map):%s]"               <contact>       (OG_Buero, Fenster)
                    Die entsprechende Rule sieht wie folgt aus:

                    Code:
                    rule Fenster_Kind1_Balkon
                    when
                            Item Fenster_OG_Kind1_Balkon1 changed or
                            Item Fenster_OG_Kind1_Balkon2 changed
                    then
                            if (Fenster_OG_Kind1_Balkon1.state == CLOSED && Fenster_OG_Kind1_Balkon2.state == CLOSED) {
                                    Fenster_OG_Buero_Balkon.postUpdate("CLOSED")
                            } else if (Fenster_OG_Kind1_Balkon1.state == OPEN && Fenster_OG_Kind1_Balkon2.state == CLOSED) {
                                    Fenster_OG_Buero_Balkon.postUpdate("ajar")
                            } else {
                                    Fenster_OG_Buero_Balkon.postUpdate("OPEN")
                            }
                    end
                    Icons müssen keine kopiert oder umbenannt werden, da es diese bereits gibt (contact-open, contac-ajar und contact-closed).

                    Gruß
                    mepi0011

                    Kommentar


                      #11
                      top Zusammenfassung :-)
                      Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                      Kommentar


                        #12
                        Hallo zusammen,

                        ich habe mal versucht dies zu adaptieren, um den Status meines Garagentores zu visualisieren. Dazu habe ich am Tor einen Magneten angebracht und an der Laufschiene sind die beiden Kontakte.

                        Code:
                        [LEFT][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][COLOR=#323232]rule Garagentor[/COLOR][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#7f0055]
                        [COLOR=#7f0055][SIZE=2][COLOR=#7f0055]when[/COLOR][/SIZE][/COLOR][COLOR=#7f0055]
                        [SIZE=2][COLOR=#7f0055]Item C_Garage_Oben changed or Item C_Garage_Unten changed[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]then[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]      if (C_Garage_Oben.state == OPEN && C_Garage_Unten.state == CLOSED) {[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]              C_Garage.postUpdate("zu")[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]      } else if (C_Garage_Oben.state == OPEN && C_Garage_Unten.state == CLOSED) {[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]              C_Garage.postUpdate("faehrt")[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]      } else {[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]              C_Garage.postUpdate("offen")[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]      }[/COLOR][/SIZE]
                        [SIZE=2][COLOR=#7f0055]end[/COLOR][/SIZE][/COLOR][/COLOR][/SIZE][/LEFT][SIZE=2][COLOR=#7f0055][COLOR=#7f0055]
                         
                        [/COLOR][/COLOR][/SIZE]
                        Items

                        Code:
                        C_Garage_Oben        "Garagenkontakt oben [MAP(de.map):%s]"                            (G_Oben)                      {knx="0/1/1"}
                        Code:
                         
                        [LEFT]C_Garage_Unten        "Garagenkotakt unten [MAP(de.map):%s]"                            (G_Unten)                      {knx="0/1/2"}
                        
                        String C_Garage          "Garagentor [MAP(de.map):%s]"               <contact>       (Aussen, Contacts)[/LEFT]
                        Da eine Garage etwas anders ausschaut als Fenster, habe ich versucht dies über neue Bezeichnung des Status zu erreichen und die beigefügten Icons müssen kopiert werden


                        Da ich meine Konfig noch nicht am laufen habe, ist dies noch nicht getestet



                        VG
                        Joerg
                        Angehängte Dateien

                        Kommentar


                          #13
                          Abbildung mehrerer Zustand für Fenster mit enOcean Griff

                          Hallo zusammen,

                          zuerst einmal großes Lob für das openHab-Team. Ich habe den Prototypen meiner Visualisierung komplett innerhalb eines Tages zum Laufen gebracht. Besonders die Möglichkeit mehrere Systeme miteinander verbinden zu können ist super.

                          Mein Problem ist auch die Erkennung der Art der Fensteröffnung.

                          Da ich keine 2 Kontakte pro Fenster verbauen wollte, habe ich an den Fenster Griffe die ihre Position als Byte über ein enOcean-Gateway auf den KNX-Bus bringen.

                          Ich habe nun versucht die Zustände (0= geschlossen, 1= offen, 2 = gekippt) in openhab wie folgt anzubinden:
                          Number Window_FF_Office2 "Kay's Büro [MAP(de.map):%s]" <contact> (FF_Office2, FF_Windows, Windows) {knx="3/1/0"}

                          Im Gruppenmonitor der ETS sehe ich die Telegramme auch wie erwartet.
                          Nun scheitere ich allerdings mit der folgender Fehlermeldung wenn openHab 1.2 das Telegramm liest:

                          12:08:30.479 ERROR o.o.b.k.i.bus.KNXBinding[:236] - Error while receiving event from KNX bus: tuwien.auto.calimero.exception.KNXIllegalArgumentE xception: data length 0 < KNX data type width 2

                          Kann mir jemand einen Tipp geben?
                          Vielen Dank im Voraus
                          der Kay

                          Kommentar


                            #14
                            Hallo,

                            bitte in der ETS den Datenpunkt Typ (DPT) nachschauen.

                            Die muss dann vor die Gruppenandresse :

                            z.B.:

                            {knx="5.001:3/1/0"}


                            Sascha.

                            Kommentar


                              #15
                              Danke !!!

                              Vielen Dank Sascha,

                              nun Funktioniert es.
                              Damit auch jemand anderes mal etwas davon haben kann:

                              Ich nutze Hoppe Secusignal an einem Weinzierl KNX ENO Gateway 620. Die Griffe melden Ihre Position als Dezimalwert gemäß Gatewaykonfiguration als DPT 5.005-Wert. Um das Ummappen per rules zu sparen habe ich die icons passend zu den Werten (z.B. contact-1) umbenannt und die Werte im Mapfile auf WAF-taugliche Begriffe umgeschrieben.

                              Die fertige Zeile im items file ist dann.
                              Number Window_FF_Office2 "Kay's Büro [MAP(de.map):%s]" <contact> (FF_Office2, FF_Windows, Windows) {knx="5.005:3/1/0"}

                              Viele Grüße
                              der Kay

                              Kommentar

                              Lädt...
                              X