Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX inkl. Geräte in openhabian konfigurieren

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

    #16
    Es ist tatsächlich gleichgültig, ob man per knx.things (nur die Dateiendung ist wichtig) oder über Paper UI Brigde und Things anlegt. Wichtig ist aber, dass man die richtigen Dinge einträgt
    Ein Device (oder in openHAB-Sprech Thing) hat keine Gruppenadresse, sondern eine physikalische Adresse. Man kann die beiden an der Schreibweise unterscheiden:
    Code:
    0.1.1 <- physikalische Adresse eines Devices
    1/1/1 <- Gruppenadresse
    Die physikalische Adresse ist hier schön beschrieben: https://support.knx.org/hc/de/articl...lische-Adresse und natürlich ist diese Adresse im gesamten knx-Bus einmalig, alle Devices innerhalb einer Linie unterscheiden sich nur im letzten Oktett voneinander.

    Unterhalb eines Thing kann man dann mehrere Channel anlegen, wobei die Priorität immer bei den Aktoren und Sensoren liegen sollte, sprich, zuerst definiere ich die Channel der Aktoren (Schalter, Dimmer, Rollläden, Heizung...) und Sensoren (Temperatur, Bewegung falls unabhängig von einem Schaltaktor...), danach definiere ich die Channel, zu denen es keine Hardware im Bussystem gibt, die den Hut aufhaben könnte.
    Zum Beispiel könnte man auf eine Uhr am knx-Bus verzichten, denn openHAB kann die Uhrzeit zur Verfügung stellen.
    Ich erstelle für diesen Fall ein virtuelles Thing (also eines, zu dem es keine echte Hardware gibt) - logischerweise ohne physikalische Adresse - mit lauter -control Channels, z.B. datetime-control. Auf diesem Channel kann openHAB dann die Uhrzeit (und/oder das Datum, je nach DPT) auf den Bus senden. Auch Szenen sind dafür Kandidaten, da es normalerweise kein Device gibt, welches sich merkt, welche Szene gerade aktiv ist.
    Code:
    Thing device Virtuell "virtuelle" @ "KNX" [
        ] {
        Type number-control   : scene1     "Lichtszene"   [ ga="17.001:3/0/0" ]
        Type datetime-control : wochenzeit "Zeit und Tag" [ ga="10.001:15/7/10" ]
        Type datetime-control : datum      "Datum"        [ ga="11.001:15/7/11" ]
        Type datetime-control : zeit       "Zeit"         [ ga="19.001:15/7/19" ]
        }
    Ich gebe hier immer die Schreibweise der knx.things Datei wieder, aber die Einträge können exakt so auch über Paper UI vorgenommen werden (Thing anlegen, anschließend unterhalb des Thing die Channel anlegen)
    Damit dann die Uhrzeit auf den Bus kommt, braucht es ein ntp-Thing (das kann man mehr oder weniger vollautomatisch hinzufügen lassen) und eine Verlinkung über ein Item:
    Code:
    DateTime Buszeit "Zeit und Tag" {channel="knx:device:bridge:Virtuell:wochenzeit",channel="ntp:ntp:home:dateTime"}
    Auch das Anlegen dieser Links kann man (solange man in der OH2-Welt bleibt) über Paper UI erledigen.

    Allerdings möchte ich an dieser Stelle ganz laut Werbung für VSCode machen. VSCode ist ein OpenSource Editor mit jeder Menge Plugins, über die man sich seine eigene Entwicklungsumgebung zusammenstellen kann. Eines dieser Plugins heißt openHAB 0.3.5, und das bietet allen Komfort, den man sich wünschen kann, inklusive Syntaxprüfung, Autocompletion, Kontextmenüs, interaktive Listen der Things, Channels und Items, automatischer Codeerzeugung (z.B. für alle Channels eines Things Items erzeugen), Links zur Online-Dokumentation, Codeschnipsel...
    Mit VSCode kann man nun sehr bequem den Code bearbeiten, wenn man sich an einige Regeln hält (es läuft darauf hinaus, Things und Items streng zu strukturieren und dies in den Dateien auch fortzuführen). Zum Beispiel ist es möglich mehrere Zeilen gleichzeitig zu bearbeiten! Man stelle sich vor, man hat 15 Items, die passenderweise untereinander in der gleichen items-Datei stehen, und möchte bei all diesen Items die gleiche Gruppe hinzufügen. Cursor in die erste Zeile, <strg>+<alt>+<shift> gedrückt halten, Cursor nach unten bewegen, Tasten loslassen, Cursor an die richtige Stelle bewegen, Gruppe einmal schreiben, <ESC> drücken, fertig.
    Das ist auch super, wenn man mehrere Geräte des selben Typs hat, die sich nur durch Details unterscheiden. Einmal den Definitionsblock anlegen, Kopieren, Details je Block anpassen, fertig.

    Solange es nur um ein oder zwei Items oder Things geht, ist Paper UI super, wenn das Projekt größer wird (und das wird es...) sind Textdateien wesentlich effizienter.

    Spätestens für die UI (Ausnahme HABpanel) muss dann eh ein Editor her, da Sitemaps (notwendig für Classic/Basic UI, Habdroid und iOS Client) bisher nicht mit Paper UI erstellt werden können.

    VSCode bietet übrigens auch ein Plugin, um sich mit git zu verbinden, es gibt Leute, die darüber ihre Konfiguration samt automatischer Versionierung pflegen. Wenn man mit git vertraut ist ist das eine weitere super Funktion.
    Zuletzt geändert von udo1toni; 19.11.2020, 06:23.

    Kommentar


      #17
      Sehr ausführliche, verständliche Antwort! Ich konnte mir noch einige Tipps mitnehmen

      Kommentar


        #18
        Hallo möchte diesen Thread nochmal hochholen. Ich habe auch Probleme mit der knx.things Datei. Die Bridge funktioniert und auch von meiner Wetterstation bekomme ich Werte in openhab angezeigt. Leider schaffe ich es nicht manuell weitere Geräte hinzuzufügen. S. Code. Der Aktor wird mir nicht angezeigt. Liegt es an "device" und "device generic"? Was ist der Unterschied? Die Wetterstation funktioniert nur so. Bin absoluter Neuling und würde mich über Hilfe freuen.
        Bridge knx:ip:bridge "MDT IP Schnittstelle man." [
        ipAddress="192.168.178.38",
        localIp="192.168.178.40",
        type="TUNNEL",
        portNumber=3671,
        readingPause=50,
        responseTimeout=10,
        readRetriesLimit=3,
        autoReconnectPeriod=60,
        localSourceAddr="0.0.0"
        ] {
        Thing device generic "Theben Meteodata"
        [
        address="1.1.10",
        fetch=true,
        pingInterval=300,
        readInterval=300
        ] {Type number : aussentemp "Temp draust" [ ga="4/1/0" ]
        Type number : windgeschw "Windgeschwindigkeit" [ ga="4/0/0" ]}

        Thing device "aktor man. buero"
        [
        address="1.1.4",
        fetch=false,
        pingInterval=300,
        readInterval=300
        ] {Type switch : ch1 "Büro breit" [ ga="2/0/0" ]}
        EDIT: Hab dieses Problem mittlerweile hinbekommen. Nach Device kommt der "Name" des Gerätes
        Zuletzt geändert von Floppy; 09.03.2019, 16:18.

        Kommentar


          #19
          Zitat von Floppy Beitrag anzeigen
          Hab dieses Problem mittlerweile hinbekommen. Nach Device kommt der "Name" des Gerätes
          Jain.
          Hinter dem Schlüsselwort device steht der Device-spezifische Teil der UID.
          Die UID setzt sich aus dem "Dienst", der Bridge, dem Thing und dem Channel zusammen.
          Der Dienst heißt in diesem Fall knx:device, die Bridge heist bridge, das Thing z.b. generic und der Channel windgeschw, ergibt zusammen knx:device:bridge:generic:wingeschw, das ist das, was im Item verlinkt wird.
          Jeder Teil der UID muss innerhalb des Baumes eindeutig sein, es darf also mehrere Bridges geben, die aber alle unterschiedlich heißen müssen, z.B. bridge1, Hugendubel, KonstantinOpel oder blOEdsinn.
          Ob man dort Großbuchstaben verwendet ist Geschmacksache, aber man muss die Schreibweise überall identisch verwenden.
          Unterhalb jeder Bridge kann es gleichnamige Things geben, aber alle Things unterhalb einer Bridge müssen sich im Namen unterscheiden.
          Unterhalb eines Things müssen alle Channel unterschiedliche Namen haben.
          Wenn Du z.B. zwei baugleiche 6-Kanal-Schaltaktoren hast, kannst Du diese als zwei Things anlegen, die Channel aber identisch benennen, das kann beim Anlegen der Hardware viel Arbeit sparen.
          Die Zuordnung der Funktion wird dann über das Label erledigt.

          Wenn Du Code, Konfigurationen oder auch Logs postest, achte bitte darauf, dies als Code zu markieren (im Editor die Schaltfläche mit dem #), sonst baut die Forensoftware gerne mal Leerzeichen ein oder ersetzt Teile des Textes durch Smilies.
          Durch die feste Laufweite (Code wird automatisch als Courier New gesetzt) ist der Code besser lesbar, außerdem werden keine künstlichen Zeilenumbrüche eingebaut, was bei Logfiles die Lesbarkeit extrem verbessert.

          Kommentar


            #20
            Hallo,

            ich habe mich an diesem Thread orientiert und wollte einfach über die App einen GA senden. Die verschiedene Dateiinhalte habe ich mir heraus kopiert und und auf meine Gegebenheiten angepasst. Die openHAB App hat auch direkt meinen Schalter gefunden und ich konnte diesen auch schalten. Allerdings sehe ich im View folgende Meldung:

            - Item 'ch1' received command on
            - ch1 predicted to become NULL

            Jetzt habe ich nach dieser Meldung schon gesucht und auch einiges probiert, aber ich bekomme immer diese Meldung und die GA sehe ich auch nicht auf dem Bus.
            Mein IP Interface sehe ich unter den Things in der Paper UI als online.
            Hat jemand einen guten Rat?

            Danke im Voraus!

            Kommentar


              #21
              Ohne Blick in Deine Konfiguration wird das nichts werden.

              Kommentar


                #22
                Habe nur ein Anführungszeichen vergessen. Da sind jetzt gute 3 Stunden draufgegangen ...
                Aber immerhin läuft es jetzt

                Kommentar


                  #23
                  Hi, leider habe ich auch noch ein paar Probleme bei dem einbinden von KNX mit der neuen Version des KNX - Bindings. Ich habe openHab 2.1 mit dem alten KNX - Binding am laufen und möchte jetzt mal auf die neuester Version upgraden. Ich habe aktuell das Problem, dass alle Kanäle des Schaltaktor geschaltet werden. Ich habe einen MDT 20-Fach Schaltaktor als Thing angelegt, wenn ich jetzt "demoSwitch" schalte, dann schaltet er alle 20 Ausgänge ein und aus.

                  Ich habe schon rumgespielt, bekomme es jedoch nicht hin.

                  Vielen Dank für Eure Hilfe.

                  Hier meine Config:
                  knx.thing:
                  Bridge knx:ip:bridge [
                  type="TUNNEL",
                  ipAddress="192.168.99.250",
                  portNumber=3671,
                  localIp="192.168.99.5",
                  readingPause=50,
                  responseTimeout=10,
                  readRetriesLimit=3,
                  autoReconnectPeriod=60,
                  localSourceAddr="0.0.0"
                  ] { Thing device Schaltaktor20 [
                  address="1.1.61",
                  fetch=true,
                  pingInterval=300,
                  readInterval=3600
                  ] {
                  Type switch : demoSwitch "Light" [ ga="1/0/0+<1/4/0" ]
                  Type switch : demoSwitch2 "Light" [ ga="1/0/1+<1/4/1" ]
                  Type switch : demoSwitch3 "Light" [ ga="1/0/2+<1/4/2" ]
                  Type switch : demoSwitch4 "Light" [ ga="1/0/3+<1/4/3" ]
                  Type switch : demoSwitch5 "Light" [ ga="1/0/4+<1/4/4" ]
                  Type switch : demoSwitch6 "Light" [ ga="1/0/5+<1/4/5" ]
                  Type switch : demoSwitch7 "Light" [ ga="1/0/6+<1/4/6" ]
                  Type switch : demoSwitch8 "Light" [ ga="1/0/7+<1/4/7" ]
                  Type switch : demoSwitch9 "Light" [ ga="1/0/8+<1/4/8" ]
                  Type switch : demoSwitch10 "Light" [ ga="1/0/9+<1/4/9" ]
                  Type switch : demoSwitch11 "Light" [ ga="1/0/10+<1/4/10" ]
                  Type switch : demoSwitch12 "Light" [ ga="1/0/11+<1/4/11" ]
                  Type switch : demoSwitch13 "Light" [ ga="1/0/12+<1/4/12" ]
                  Type switch : demoSwitch14 "Light" [ ga="1/0/13+<1/4/13" ]
                  Type switch : demoSwitch15 "Light" [ ga="1/0/140+<1/4/14" ]
                  Type switch : demoSwitch16 "Light" [ ga="1/0/15+<1/4/15" ]
                  Type switch : demoSwitch17 "Light" [ ga="1/0/16+<1/4/16" ]
                  Type switch : demoSwitch18 "Light" [ ga="1/0/17+<1/4/17" ]
                  Type switch : demoSwitch19 "Light" [ ga="1/0/18+<1/4/18" ]
                  Type switch : demoSwitch20 "Light" [ ga="1/0/19+<1/4/19" ]
                  }
                  }
                  knx.items:
                  Switch demoSwitch "Light [%s]" <light> { channel="knx:device:bridge:Schaltaktor20:demoSwitc h" }

                  Kommentar


                    #24
                    Nimm bitte mal als erstes mal readInterval und fetch aus der Konfiguration raus. Das erste ist für Dein Device unnötig, das zweite könnte Störungen verursachen - der Parameter ist für die Funktion ebenfalls unnötig. pingInterval und address könntest Du auch noch weg lassen, ohne dass die eigentliche Funktion dabei verloren gehen dürfte.

                    Auch bei der Bridge wäre weniger mehr. Eigentlich braucht es nur die IP des knx/IP Gateways. Zumindest zum Start wäre eine minimale Konfiguration vermutlich die bessere Wahl.

                    Du schreibst, dass Du OH2.1 laufen hast
                    Greifst Du parallel mit zwei Instanzen auf knx zu? Grundsätzlich sollte es damit kein Problem geben, ich hatte das hier über ein Jahr so in Betrieb (allerdings OH1.8 und OH2.3), aber vereinzelt gibt es damit erhebliche Probleme, weil sich die beiden Instanzen in die Quere kommen, z.B. darf nur eine der beiden Instanzen Rules nutzen (bzw. man muss darauf achten, dass es keine Überschneidungen bei den GA gibt, die per Rule gesteuert werden)

                    Was passiert, wenn Du nur einen oder zwei Channel anlegst? sind die GA 1/0/x die Schaltbefehle und die GA 1/4/x die jeweiligen Status?
                    Also zum Testen erst mal klein beginnen:
                    Code:
                    Bridge knx:ip:bridge [
                        type="TUNNEL",
                        ipAddress="192.168.99.250",
                        // portNumber=3671,
                        // localIp="192.168.99.5",
                        // readingPause=50,
                        // responseTimeout=10,
                        // readRetriesLimit=3,
                        // autoReconnectPeriod=60,
                        // localSourceAddr="0.0.0"
                     ] { Thing device Schaltaktor20 [
                        // address="1.1.61",
                        // fetch=true,
                        // pingInterval=300,
                        // readInterval=3600
                        ] {
                            Type switch : ch01 "Light" [ ga="1/0/0 +<1/4/0" ]
                           // Type switch : ch02 "Light" [ ga="1/0/1 +<1/4/1" ]
                           // Type switch : ch03 "Light" [ ga="1/0/2 +<1/4/2" ]
                           // Type switch : ch04 "Light" [ ga="1/0/3 +<1/4/3" ]
                           // Type switch : ch05 "Light" [ ga="1/0/4 +<1/4/4" ]
                           // Type switch : ch06 "Light" [ ga="1/0/5 +<1/4/5" ]
                           // Type switch : ch07 "Light" [ ga="1/0/6 +<1/4/6" ]
                           // Type switch : ch08 "Light" [ ga="1/0/7 +<1/4/7" ]
                           // Type switch : ch09 "Light" [ ga="1/0/8 +<1/4/8" ]
                           // Type switch : ch10 "Light" [ ga="1/0/9 +<1/4/9" ]
                           // Type switch : ch11 "Light" [ ga="1/0/10+<1/4/10" ]
                           // Type switch : ch12 "Light" [ ga="1/0/11+<1/4/11" ]
                           // Type switch : ch13 "Light" [ ga="1/0/12+<1/4/12" ]
                           // Type switch : ch14 "Light" [ ga="1/0/13+<1/4/13" ]
                           // Type switch : ch15 "Light" [ ga="1/0/14+<1/4/14" ]
                           // Type switch : ch16 "Light" [ ga="1/0/15+<1/4/15" ]
                           // Type switch : ch17 "Light" [ ga="1/0/16+<1/4/16" ]
                           // Type switch : ch18 "Light" [ ga="1/0/17+<1/4/17" ]
                           // Type switch : ch19 "Light" [ ga="1/0/18+<1/4/18" ]
                           // Type switch : ch20 "Light" [ ga="1/0/19+<1/4/19" ]
                        }
                    }
                    
                    Switch MySwitch01 "Licht [%s]" { cahnnel="knx:device:bridge:Schaltaktor20:ch01" }
                    Code:
                    Switch MySwitch01 "Licht [%s]" { cahnnel="knx:device:bridge:Schaltaktor20:ch01" }

                    Kommentar


                      #25


                      Gut das wir drüber gesprochen haben. 1/0/0 ist natürlich: "alles aus". Herzlichen Glückwunsch. 1/1/0, wäre die Richtige Gruppenadresse gewesen. Sorry, manchmal ... Dennoch möchte ich die Weiteren Fragen beantworten. Eventuell hilft es jemand in Zukunft:


                      Ich habe deine config so übernommen, aber leider ohne Erfolg. Jetzt wird gar nichts geschaltet.
                      08:55:33.098 [ERROR] [Xnet/IP Tunneling 192.168.99.250:3671] - establishing connection failed, timeout connecting to control endpoint /192.168.99.250:3671

                      Weiter zu deinen Fragen:
                      Ja ich nutze aktuell beide parallel. Die OH-2.1 läuft aktuell produktiv mit Regeln usw. Bei der neuen 2.5 ist außer dieser KNX-config nichts eingetragen. Bevor das nicht sauber läuft brauche ich mir keine weiteren Gedanken bezüglich Migration machen.

                      Es war egal ob ich einen oder mehrere Kanäle anlege, immer da gleiche. Ist bei der Adresse natürlich auch kein Wunder.


                      Wieder einmal Vielen Dank für die Hilfe.

                      Kommentar


                        #26
                        Was ich natürlich vergessen hatte zu erwähnen... Wenn Du per *.things Datei konfigurierst, musst Du den entsprechenden Service neu starten. Entweder über die Karaf Konsole mit bundle:restart org.openhab.binding.knx oder Du startest gleich openHAB komplett neu.
                        Wenn der obige Fehler auftritt, könntest Du noch localIp mit in die Konfiguration rein nehmen. Das sollte aber eigentlich nur dann nötig sein, wenn Dein Rechner mehrere IP-Adressen hat.

                        Kommentar


                          #27
                          Der Neustart könnte es gewesen sein, aber es geht jetzt auch mit meiner config, wenn man halt die richtige Adresse nutzt.

                          Vielen Dank für deine Hilfe.

                          Kommentar

                          Lädt...
                          X