Ankündigung

Einklappen
Keine Ankündigung bisher.

Einbindung einer Sonoff RF Bridge unter Openhab2

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

    Einbindung einer Sonoff RF Bridge unter Openhab2

    Ich bin stolzer Besitzer einer geflashten Sonoff RF Bridge. Diese möchte ich gerne unter Openhab2 einbinden. Hat jemand Erfahrungen wie ich es am besten gestalten kann??
    Danke für Euren Input !

    #2
    @ Madmike: Ich habe die
    Sonoff RF Bridge seit ein paar Wochen im Einsatz, um damit RF-Signale von einem PIR-Sensor und einem Handsender zu empfangen. Vielleicht kann ich Dir weiterhelfen, wenn Du Deine Fragen konkretisierst.

    Kommentar


      #3
      Hallo Micha,

      danke für Dein Angebot zur Hilfe. In meinem konkreten Fall geht es um die Steuerung von Funksteckdosen. Ich möchte gerne 4 Steckdosen über Openhab steuern. Die RF-Bridge soll dabei mein Wandler sein. Geflasht habe ich Sie, aber wie kann ich nun die Steckdosen einlesen, bzw die Codes und wie kann ich Sie dann mt OH2 steuern.
      Vielen Dank für Deine Mühe im voraus
      Micha

      Kommentar


        #4
        Hast du schon den MQTT Broker installiert und deine Bridge konfiguriert? Dann sollten dann schon Nachrichten von einer RF-Fernbedienung in openHAB ankommen. Der nächste Schritt ist es, diese Nachrichten an die Bridge zu senden, damit sie die RF-Codes an die Steckdosen sendet.

        Kommentar


          #5
          Hallo Don Stefano,

          danke für Deine Antwort.
          Ich habe die geflashten Sonoff Basics unter dem Wemo-Modus laufen und bei Openhab eingebunden. Die RF-Bridge habe ich so nicht ans laufen bekommen.
          Mit dem MQTT Broker habe ich mich bisher noch nicht beschäftigt. Welche Vorteile bietet er und was für Fallstricke könnte es beim installieren geben??
          mfg
          Micha

          Kommentar


            #6
            Mosquitto als MQTT Server ist eigentlich schnell eingerichtet. Ein erster Fallstrick könnte sein, dass Du vergeblich nach einer Konfigurationsdatei suchst, die mehr als eine Kommentarzeile enthält, dass man hier seine Konfiguration anlegen kann. Macht aber nichts, denn der Server läuft auch so, halt ohne irgendwelche besonderen Einstellungen, ohne User- und Passwortschutz, auf dem default Port 1883.
            Für erste Tests ist das bestens, weil Du Dir dann keine Gedanken um diesen Krempel machen musst.
            Es gibt eine nette Anwendung (mqtt-spy) welche unter Java läuft und somit auf jedem aktuellen Desktopsystem einsetzbar sein sollte. Damit kannst Du dann sehen,. was auf dem MQTT Server rein und raus geht - vorausgesetzt, Du kennst die grundsätzliche Schreibweise für Topics. Für erste Tests ist es praktisch, sämtliche Kommunikation zu sehen, das erreichst Du, indem Du das Topic # abonnierst (das # steht für: ab hier beliebige Zeichen. Damit werden also alle Topics abonniert).
            Weiterhin gibt es ein Topic mit dem Namen $SYS/, das sind Informationen über den MQTT Server selbst.
            Es gibt auch MQTT Apps mit denen man den Datenverkehr auf dem Handy oder Tablet verfolgen kann.

            Mit Wemo habe ich mich bislang nicht auseinander gesetzt, weil ich nichts in der Richtung nutze. MQTT ist ein offener Standard für die M2M Kommunikation, der mögliche Durchsatz auf dem Server ist recht ordentlich, trotzdem ist das Teil sehr schlank. Da es sich um einen offenen Standard handelt, gibt es recht viel Hardware, die das direkt unterstützt (siehe auch die Werkzeuge zur Analyse - keine Ahnung, ob es sowas für Wemo gibt, und ob das dann frei verfügbar ist.)

            Falls Du ohnehin Wemoo Produkte einsetzt, mag die Wemo Variante die einfachere und vielleicht sogar bessere sein, falls Du das extra für die Sonoffs einsetzt, ist MQTT eindeutig vorzuziehen.
            Zuletzt geändert von udo1toni; 23.05.2018, 18:38.

            Kommentar


              #7
              Hallo Udo1toni
              erstmal herzlichen Dank für Deine Einschätzung.

              ich habe einiges über MQTT gelesen und mosquitto installiert. Soweit so gut genau wie du sagst gibt es keine config Datei, obwohl es in einigen Tutorials gezeigt wird.
              Spannend dabei ist das die als file /etc/openhab2/Services/mqtt.cfg nennen. Für mich klares Indiz das das Binding installiert wurde, warum sollte auch eine Config Datei in einem anderen Programmordner versteckt sein. Als Testanwendung habe ich mich zunächst mal für mqttfx entschieden. Gestern wie gesagt installiert läuft zunächst der mqtt Server einwandfrei konnte vom Server zum Client Nachrichten senden. Nun werde ich heute mal sehen wie ich die Sonoff S20 anbinde bevor ich mich an die RF-Bridge wage.
              Und was sehr unterschiedlich dann dargestellt wird ist die Einstellungen in der MQTT.cfg zum einen schreiben viele mqtt: dann die Parameter und andere sagen ist völliger Unsinn Parameter reichen.
              Ein weiteres Thema wird sein das ich mit Installation auch eine Datei mqtt-eventbus.cfg erhalte, wobei mir unklar ist wozu ich die brauche und oft die Frage im raum steht brauche ich das MQTT-Action von Openhab2 ??
              Mal sehen vielleich hast du ja auch noch ein paar Tipps für mich.
              mfg
              Micha

              Kommentar


                #8
                Also, die nicht vorhandene Konfigurationsdatei, die ich meine, ist die von Mosquitto. Mosquitto hat erst mal nichts mit openHAB zu tun, das ist eine vollkommen eigenständige Software. OpenHAB hat ein Binding, mit dem es gegenüber dem Broker (das ist Mosquitto) als Client auftreten kann. Wenn Du in openHAB2 das mqtt Binding installierst, werden automatisch die mqtt.cfg und die mqtt-eventbus.cfg unterhalb ./services/ angelegt.
                Letztere kannst Du - zumindest für's erste - links liegen lassen. In der mqtt.cfg definierst Du die Verbindung zum Broker. Dabei definierst Du auch den Namen des Brokers, wie Du ihn in den Items verwenden willst. Zwingend gebraucht wird dabei nur eine einzige Zeile:
                Code:
                <brokername>.url=tcp://<ip.des.mosquitto.servers>:<port>
                also wenn mosquitto auf der gleichen MAschine läuft, wie openHAB normalerweise
                Code:
                mosquitto.url=tcp://localhost:1883
                Es ist aber sinnvoll, auch eine clientId festzulegen, da sonst eine generierte Id verwendet wird, die sich mindestens nach einem Update vielleicht selbsttätig ändert. Das kann dann hässliche Nebenwirkungen haben, betreffend retain und last will.
                Spätestens wenn Du den Zugang zum Mosquitto Server absichern willst, kommen natürlich noch User und Passwort dazu.
                Mit LastWill kann man ein Topic definieren, welches von Mosquitto automatisch mit einem vorgewählten Wert publiziert wird, sobald der Client (also in diesem Fall openHAB) offline geht, quasi im Auftrag. Die Sonoffs schicken z.B. als lastWill ein tele/sonoff/LWT offline. Sobald das Sonoff nicht mehr erreichbar ist, bekommen alle Clients, die das Topic abonniert haben, die Nachricht, dass der Sonoff-Client offline ist. Sonoff selbst sendet natürlich ein tele/sonoff/LWT online.
                Mit retain kann man dafür sorgen, dass Mosquitto sich den letzten Publish auf einem Topic merkt. Eigentlich sollte das pro Topic zu setzen sein...

                Ein Item wird dann so mit MQTT gekoppelt:
                Code:
                String meinMQTTitem "Mein Item [%s]" {mqtt="<[mosquitto:topic:state:default], >[mosquitto:topic:command:*:default]"}
                der erste Teil ist ankommend, der zweite Teil abgehend, bei Bedarf kann für jedes mögliche Kommando eine bestimmte Nachricht publiziert werden, ankommend kann der Inhalt des Topics transformiert werden (also z.B. über REGEX, MAP oder auch JSONPATH)

                Das MQTT Binding ist ein openHAB1 Binding. In openHAB1 wurden alle Konfigurationen in einer Datei openhab.cfg durchgeführt. Deshalb mussten alle Parameter immer auch den Namen des Bindings mitführen. Mit openHAB2 ist das nicht mehr nötig, da jedes Binding eine eigene <binding>.cfg hat. Deshalb kann (und sollte) man das mqtt: zu Beginn der Parameter einfach weg lassen.

                mqtt-eventbus ist eine Variante, alle Items über mqtt zu publizieren. Das ist eine nette Variante, wenn man mehrere openHAB-Instanzen miteinander verbinden will.

                Die Action wird eigentlich nur benötigt, wenn Du aus einer Rule heraus unter Umgehung der Items mit MQTT kommunizieren willst.
                Zuletzt geändert von udo1toni; 27.05.2018, 17:18.

                Kommentar


                  #9
                  Hallo Udo1toni,

                  du bist der Hammer, was ich allein beim lesen Deines Posts gelernt habe ist unglaublich, vielen, vielen Dank dafür.
                  Ich werde mich morgen an die Umsetzung machen und bin gespannt wie Bolle. Aufgrund Deiner sehr guten Beschreibung habe ich ein sicheres und gutes Gefühl. Vor allen hast viel Licht in die Dunkelheit des Halbwissens gebracht. Ich habe davor schon angefangen einiges zum Thema zu lesen, muss aber feststellen gerade nach Deinen heutigen Ausführungen sind einfach auch viele falsche Infos da, die letztlich dazu führen das gerade Einsteiger wie ich irgendwann frustriert aufgeben.
                  Vielen lieben Dank auch für deine Geduld, ich werde mich melden und hoffentlich Erfolge aufweisen können.
                  Ha nicht hoffentlich ich werde Sie aufweisen!!!
                  mfg
                  Micha

                  Kommentar


                    #10
                    Immer wieder gerne

                    Das ist das Problem, wenn es viele "wilde" Anleitungen gibt, die aber alle nur einen Teil der Wahrheit enthalten (insbesondere bei einem Projekt, welches so agil weiter entwickelt wird, wie openHAB).

                    Kommentar


                      #11
                      Hallo Udo1toni,

                      so ich habe den MQTT-Server am laufen, alle meine SONOFF-Switche neu geflasht und entsprechend eingebunden und Openhab 2 entsprechend konfiguriert. Bis Dato läuft alles super. kann alles schalten und die Schalter sprechen super an. Nun werde ich nächste Woche die RF's einbinden. Ich habe gesehen das ich bei den gepatchten SONOFFS die Möglichkeit der Konsole habe. Hier kann ich nun die Funkbefehle auslesen und in die ITEM-Struktur einbringen. Warum ? Es gibt jeweils einen Einschalt- und einen Aussschaltbefehl. Darum werde ich mich im Laufe der Woche kümmern. Wenn Ihr Einstellungs- oder ITEMS Strukturen braucht, poste ich sie gerne.
                      Ich wollte es nur mal kurz vermelden und freue mich gerade durch den Beitrag von Udo gelernt zu haben.
                      In diesem Sinne einen guten Wochenstart,
                      mfg
                      Micha

                      Kommentar


                        #12
                        So wie versprochen melde ich mich heute und kann berichten das die Bridge eingebunden ist. Alles klappt super und die Funkschalter werden korrekt angesteuert.
                        Ich wollte einen kleinen Abriss meiner Arbeit geben, damit der ein oder andere vielleicht auch den Spaß findet es nach zu machen. Ich erhebe keinen Anspruch auf "die Lösung" es gibt bekanntlich viele Wege die nach Rom führen.
                        So, dann starten wir mal:
                        Voraussetzung ist das OpenHAB installiert ist, der MQTT-Server läuft.

                        Flasht nun als erstes wie in vielen Anleitungen beschrieben die Sonoff RF-Bridge mit Tasmota.
                        Wichtig ist nach dem Flashen den Schiebeschalter wieder auf S2 zu schalten also normal Betrieb.

                        Bindet danach die geflashte Bridge in Euren Router ein und vergebt Ihm eine feste IP.

                        Loggt Euch auf die Bridge ein und stellt nun alle Einstellung die Ihr braucht ein. Das ist der friendlyname, das Gerät selbst (RF-Bridge),die Mqtt -Einstellungen.

                        Öffnet über Euer Web-Interface das Hauptmenue der Bridge (einfach die IP in einem Browserfenster eingeben.)
                        öffnet nun den Punkt Konsole. Um die Bridge anzulernen geht ihr ähnlich vor wie im Orginal. Gebt in der Konsole den Befehl RfKeyX 2 ein. Für das X setzt ihr die Nummer der Taste, die die Bridge lernen soll. Also z.B die Taste 5, dann RfKey5 2. Achtet dabei das die Tastenzahl direkt an Rfkey geschrieben wird, dann Leerzeichen 2 um in den Lernmodus für die Taste 5 (unser Beispiel). In der der Konsole wird nach Eingabe des Befehls und drücken der Enter-Taste angezeigt das der RfKey5 lernen will. Gleichzeitig geht an der Bridge die rote LED an und sie piept kurz. Drückt nun zum anlernen des RfKeys, (Konsole zeigt start learnig), solange die Taste Eurer Fernbedienung bis in der Konsole erscheint, Rfkey5 learned. Somit habt Ihr die Taste 5 belegt. Habt Geduld manchmal dauert es gefühlt unendlich bis der Code gelernt wurde. Kommt in der Konsole learnd failed, wiederholt das Ganze bis die Anzeige Learned kommt.
                        Geht nun genauso mit den anderen Tasten vor die Ihr belegen möchtet. Wenn Ihr fertig seit könnt Ihr nun, auf das Hauptseite wechseln und mit den Tasten die Ihr seht die Steckdosen schalten die Ihr angelernt habt. Somit ist der zweite Schritt getan. Ihr habt nun auch eine Redundanz sollte, mal OH2 nicht arbeiten könnt ihr über das Webinterface mit jedem browserfähigen Gerät Eure Funksteckdosen erreichen und schalten.

                        Öffnet nun wieder die Konsole und lest die Befehle aus. Das macht Ihr mit dem Befehl RfKeyX 5. X steht wiederum für die Taste die Ihr gespeichert habt.
                        Notiert Euch die Daten. Sie bestehen aus Sync, Low, High, Data. Hier kommt die Frage warum kann ich nicht einfach die Taste drücken und den Befehl auslesen. Ich habe die Erfahrung gemacht das ich teilweise wenn ich den gespeicherten Wert mit dem gelesen verglichen habe ich unterschiedliche Daten gesehen habe. daher verlasse ich mich lieber auf die gespeicherten und geprüften Werte.

                        So nun geht es OH2.
                        legt eine Neues Item an was so aussehen sollte:
                        Code:
                        Switch EsszimmerLampe     "Lampe"                   <light>  {mqtt=">[OH2mqtt:cmnd/BridgeThree/Backlog:command:ON:RfSync 9350; RfLow 310; RfHigh 900; RfCode #155451], >[OH2mqtt:cmnd/BridgeThree/Backlog:command:OFF:RfSync 9350; RfLow 310; RfHigh 900; RfCode #155454]" }
                        Setzt nun hier Eure Werte ein z.B. für EsszimmerLampe, Name Eures MQTT-Servers,friendlyname Eurer Bridge, dann die Zahlenwerte, die Ihr Euch notiert habt. Und ja es ist richtig das nichts von dem MQTT zurück kommt ihr sendet nur den ON beziehungsweise OFF Befehl (sind wie bei der Fernbedienung zwei Tasten). Achtet bei der Eingabe auf die richtigen Werte, passend zu den Schaltbefehlen ON OFF.

                        Nun geht's an die Sitemap

                        Code:
                         sitemap Smarthome label="Zuhause" {
                                Text label="Esszimmer" icon=corridor {
                                  Frame label="Esszimmer" {
                                      Switch item=EsszimmerLampe
                                  }
                              }
                        Ihr habt es geschafft.

                        Ich hoffe meine kleine Anleitung ist nachvollziehbar. danke an Udo1Toni für den Input !!
                        Zuletzt geändert von Madmike; 11.09.2018, 07:42.

                        Kommentar


                          #13
                          Hi Madmike,

                          super Anleitung. Fast genauso habe ich es auch geregelt. Ich schalte bisher 5 verschiedene Intertechno Schalter mit meiner Bridge. Dazu habe ich zusätzliche Erweiterungen in den Items vorgenommen:
                          • Ich habe zusätzlich die Fernbedienung im Einsatz und daher auch noch einen Input-teil für die Items definiert, die über die Bridge mitbekommen, dass über die Fernbedienung geschaltet wurde.
                          • Die Items werten die Rückmeldung der Bridge aus und können so mit autoupdate="false" gefahren werden.
                          • Um aus der Rückmeldung nur die herauszufiltern, die für den aktuellen Schalter relevant sind, wird ein Filterausdruck verwendet.
                          • Die Werte für RfHigh, RfLow und RfSync sind bei meinen Schaltern alle gleich, daher müssen die nicht jedes Mal mit gesendet werden.

                          Die Items bestehen daher aus 6 verschiedenen Teilen:
                          • 2 für Senden AN/AUS über openHAB
                          • 2 für Empfangen AN/AUS von openHAB
                          • 2 für Empfangen AN/AUS von Fernbedienung
                          Hier mal ein Beispiel-Item:
                          Code:
                          Switch Garden_Gabbione_Light        "Licht Gabbione"        <light> (Garden, gLight, Garden_Spots_Light) ["Lighting"]   {mqtt="<[mosquitto:openHAB1_RFBridge1/tele/RESULT:state:OFF:.*\"RfReceived\".*\"554114\".*], <[mosquitto:openHAB1_RFBridge1/stat/RESULT:state:OFF:.*\"RfCode\".*\"#554114\".*], >[mosquitto:openHAB1_RFBridge1/cmnd/RfCode:command:OFF:#554114], <[mosquitto:openHAB1_RFBridge1/tele/RESULT:state:ON:.*\"RfReceived\".*\"554115\".*], <[mosquitto:openHAB1_RFBridge1/stat/RESULT:state:ON:.*\"RfCode\".*\"#554115\".*], >[mosquitto:openHAB1_RFBridge1/cmnd/RfCode:command:ON:#554115]", autoupdate="false"}
                          Das ist m.E. so ziemlich das Maximum an Übertragungssicherheit mit vertretbarem Aufwand hinbekommen kann. Die Gruppe Garden_Spots_Light dient dazu, alle Strahler im Garten auf einmal EIN/AUS zu schalten. Das geschieht über eine Rule. Obwohl ich 600 Millisekunden warte, bevor ich den nächsten Befehl sende, passiert es ab und zu, dass ein Licht nicht schaltet. Die Strahler sollen alle bei Dämmerung angehen und bei zu Bett gehen wieder aus.

                          Kommentar

                          Lädt...
                          X