Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX mit Homematic über OH verbinden

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

    KNX mit Homematic über OH verbinden

    Ich habe einige Homematic Geräte wie Bewegungssensoren, Präsenzmelder und Andere im Einsatz. Im Augenblick steuere ich das ganze System mit IPSymcon. Ich möchte aber wenn möglich auf OH umstellen. Jetzt hier die Frage:

    Exemplarisch -> Bewegung wird vom Homematic-Bewegungsmelder gemeldet und es soll daraufhin eine KNX Lampe geschaltet werden ... HowTo?
    (item für Homatic Bewegungsmelder und Item für KNX-Lampe sind vorhanden, auch die entsprechenden Things)

    Gruß Wolfgang

    #2
    Hallo Wolfgang,

    ich habe es ähnlich mit der HomeMatic CCU2 und KNX-Geräten bei mir gelöst.

    Hier einmal zwei Beispiele von mir, vielleicht helfen diese dir für den Einstiegt:
    - Integration HomeMatic-Lichtschalter in openHAB
    - Steckdosen per HomeMatic, openHAB, Alexa schalten

    Bei den Beispielen ist jetzt kein KNX angebunden, aber das ist dann fast selbsterklärend :-)

    Zu den KNX-Themen hatte ich auch ein paar Artikel auf meiner Homepage geschrieben.

    Schöne Grüße,
    Reinhard

    Kommentar


      #3
      Die Frage platzierst du besser in einem openHAB Forum, insoweit eine ausführliche Lektüre der openHAB-Dokumentation sie nicht von allein erledigen sollte.
      Da du die Vorarbeiten ja scheinbar schon erledigt hast (beides ist als item in openHAB verfügbar), brauchst du nur eine rule zu schreiben (und ggf. eine zweite um die Lampe auch wieder auszuschalten).
      Je nachdem was dann noch passieren soll, könntest du du ein follow profile oder das expire binding nutzen, aber dazu sollte man schon etwas mehr Erfahrung gesammelt haben. Mit einer rule machst du erstmal nichts falsch.

      Kommentar


        #4
        Hallo mstormi,

        das hier ist ein openHAB-Forum ??...

        um die Rule ging es. Da hab ich noch keine Erfahrung.

        flagg -> herzlichen Dank für die Beispiele. Mir gings aber um die Verknüpfung HomematicIP/KNX. Die Homematic-Komponenten einbinden in openHAB ist trivial. Wie mstormi schon sagte, ich benötige eine Rule. Und das ist das Problem. Davon habe ich noch keine Ahnung. Die Doku ist in diesem Fall nicht besonders hilfreich.
        Zuletzt geändert von wolfgang12; 07.10.2020, 14:46.

        Kommentar


          #5
          Also, am einfachsten sind solche Rules zu erstellen, wenn man auch konkrete Items hat. Nehmen wir an, Du hast ein Item Bewegung (Typ Switch) und ein Item Licht (ebenfalls Typ Switch). Dann sähe eine Rule zum Einschalten so aus:
          Code:
          rule "Bewegung"
          when
              Item Bewegung received command ON
          then
              Licht.sendCommand(ON)
          end
          Allerdings wirst Du ziemlich sicher das Licht auch wieder ausschalten wollen (es sei denn, Du hast auf dem Licht Aktor einen Timer programmiert (Treppenhaus Schaltung).

          Variante mit Ausschalttimer in openHAB (inklusive Vermeidung unnötiger Schaltvorgänge):
          Code:
          var Timer tLicht = null
          val Integer iTimeout = 75 // Sekunden
          
          rule "Bewegung"
          when
              Item Bewegung received command ON
          then
              tLicht?.cancel
              if(Licht.state != ON)
                  Licht.sendCommand(ON)
              tLicht = createTimer(now.plusSeconds(iTimeout), [|
                  if(Licht.state != OFF)
                      Licht.sendCommand(OFF)
              ])
          end
          Der Timer wird zurückgesetzt, falls der Bewegungsmelder bei eingeschaltetem Licht triggert. Wird iTimeout Sekunden kein Trigger ON empfangen, wird das Licht ausgeschaltet.
          Zuletzt geändert von udo1toni; 07.10.2020, 16:11.

          Kommentar


            #6
            Danke für das Beispiel. Das hilft mir schon mal weiter.
            Zuletzt geändert von wolfgang12; 09.10.2020, 17:17.

            Kommentar


              #7
              Das ist die Rules DSL. Die DSL ist mit XTend erstellt, welches wiederum in Java programmiert ist. Deshalb gibt es gewisse Ähnlichkeiten zu Java. Man kann auch etliche Funktionen aus Java (fast) eins zu eins verwenden, an anderen Stellen klappt das aber nicht, was es etwas schwer macht...
              Die wichtigste Sache: openHAB ist Event orientiert. Rule triggern auf Events. Ein Event kann durchaus hundertmal innerhalb einer Sekunde auftreten (z.B. wenn man eine Rule auf eine Änderung in einer Gruppe triggern lässt, die viele Member hat). Default stellt openHAB 5 + 2 Threads für die Rules zur Verfügung. Es können also maximal 7 Rules parallel abgearbeitet werden. Entsprechend ist es ein NoGo, eine Rule schlafen zu lassen (Thread::sleep) wenn dies irgendwie vermeidbar wäre. Als Beispiel: Man könnte die Rule oben (fälschlicherweise) auch mit Thread::sleep erstellen:
              Code:
              rule "Bewegung"
              when
                  Item Bewegung received command ON
              then
                  Licht.sendCommand(ON)
                  Thread::sleep(75000)
                  Licht.sendCommand(OFF)
              end
              Das ist viel kürzer. Leider wird bei jeder erkannten Bewegung ein weiterer Thread belegt. Nach der 5. Bewegung innerhalb 75 Sekunden werden keine weiteren Rules ausgeführt, bis die 1. Rule fertig ist. Schlimmer noch: Der erste Thread schaltet das Licht stur nach 75 Sekunden aus, und alle weiteren Threads tun dies ebenso, egal, was zwischenzeitlich passiert ist. Deshalb ist es extrem wichtig, solche Konstrukte um jeden Preis zu vermeiden.
              Auch while und for Schleifen sind ja nicht unüblich, aber in openHAB gewöhnlich ungeeignet. Es gibt aber die Itemgruppen, welche tolle Funktionen zur Verfügung stellen, diese sind extrem mächtig.

              Kommentar


                #8
                Gute Erklärung! Leider tut sich bei mir nichts. Auch nicht bei dem abgemagerten Script. Wenn ich in Visual Studio Code über die Items fahre, kann ich den Status ablesen. Er ändert sich auch entsprechend der Bewegungserkennung des BM. Auch im Log ist kein Fehler... In Control kann ich das Licht aber normal bedienen, also sollte das Thing und das Item korrekt sein.

                Wo ist mein Denkfehler?

                Item:
                Code:
                Switch   OG_Buero_Light_L                   "Licht Buero OG L"          <light>                 (OG_Buero, gLichtOG)            ["Lighting", "Switchable"]   { channel="knx:device:bridge:MDT_1_1_29:OG_Buero_Light_L" }
                Rule:
                Code:
                rule "Bewegung"
                when
                    Item HmIPSMO00095A499AEFEF_1_Motion received command ON
                then
                    if(OG_Buero_Light_L.state != ON)
                        OG_Buero_Light_L.sendCommand(ON)
                    
                end

                Kommentar


                  #9
                  Es kann sein, dass der Bewegungsmelder kein Command schickt. Probiere stattdessen received update als Trigger aus.

                  Kommentar


                    #10
                    funktioniert!! Jetzt habe ich auch die Beispiele in der Doku ( demo.rules) gefunden

                    Nochmals Danke!

                    Kommentar

                    Lädt...
                    X