Anleitung: Nativer HomeKit Zwischenstecker mit Sonoff Basic

  • Ich habe in meinem HomeKit Setup zahlreiche Sonoff Basic Module verbaut und diese in der Vergangenheit über das homebridge-ewelink-max Plugin und einer Homebridge auf einem Raspberry in HomeKit gebracht.


    Nun bin ich durch einen Link, den @Typ1er vor einiger Zeit geteilt hat, auf eine andere Möglichkeit gestoßen, diese Zwischenstecker direkt, also ohne Bridge und damit quasi "nativ" in HomeKit zu bringen.


    Konkret geht es um RavenSystem, eine alternative Firmware für Geräte, die auf dem ESP8266 basieren, um diesen eine direkte Einbindung in HomeKit zu ermöglichen. Glücklicherweise nutzen die Sonoff Basic genau diesen Chip und sind daher bestens geeignet.


    Ich zeige in der folgenden Anleitung die nötigen Schritte, um einen Sonoff Basic zu einem HomeKit fähigen Zwischenstecker zu machen.


    Im Rahmen der Anleitung wird das aktuelle Repository "Home Accessory Architect" und nicht mehr "RavenCore" verwendet. Zitat Entwickler: "RavenCore development is dead. Long live the HAA!!"


    Genutzte Hardware:


    Raspberry 3B+ mit Raspbian Buster

    Sonoff Basic

    FT232RL FTDI TTL zu USB Adapter

    4x Jumper Kabel male<->female

    Mini USB Kabel


    Wichtig: Vor Punkt 3 keine Netzspannung auf den Sonoff geben!


    Zur Vorbereitung ermitteln wir einmal, welche Bezeichnung der Adapter in unserem System hat. Dazu schließen wir den FTDI Adapter mit dem Mini USB Kabel an unseren Raspberry an. Mit

    Code
    cd /dev && ls

    lassen wir uns unsere Schnittstellen anzeigen, hier kommt nach Anstöpseln des Adapters ein neuer Anschluss hinzu. Standardmäßig heißt dieser ttyUSB0 (Sollte er bei euch anders heißen, müssen die weiteren Befehle natürlich angepasst werden, ansonsten reicht copy&paste).


    Jetzt können wir mit den Vorbereitungen starten. Zuerst laden wir aus dem Wiki die Dateien otaboot.bin, root.bin &blank.config.bin herunter und legen sie auf unserem Raspberry im Standard-Nutzer Verzeichnis /home/pi ab.


    Als Nächstes verbinden wir den FTDI Adapter mit dem Sonoff Basic. Drehen wir die Platine des Sonoff um, sehen wir auf der Unterseite vier "Löcher", die der Einfachheit halber sogar beschriftet sind (GND, 3V3, RX, TX). Hier schließen wir nun unsere vier Jumper Kabel an, die männlichen Pins können einfach in die Löcher gesteckt werden. Da der Flashvorgang im Anschluss nur wenige Sekunden dauert, kann man hier darauf verzichten, die Kabel anzulöten.

    Den Jumper auf dem FTDI Adapter setzen wir auf die 3,3V Position (die rechte Position, wenn USB Anschluss oben) und schließen die weiblichen Enden der Jumper Kabel an unserem Adapter an. Das Mini USB Kabel schließen wir zu diesem Zeitpunkt noch nicht an.

    Beim Adapter wählen wir die gleiche Belegung wie auch beim Sonoff, müssen jedoch darauf achten, dass TX & RX vertauscht werden (Sendet der Eine, muss der Andere empfangen).


    Zur Übersicht wähle ich farbige Kabel, die Belegung sieht hier folgendermaßen aus:


    FTDI Adapter                 

    VCC  - weiß                    

    TX   - orange                

    RX   - gelb                      

    GND  - schwarz    

    Sonoff   

    3V3   - weiß

    RX    - orange  

    TX    - gelb      

    GND   - schwarz


    Ist der Adapter nun korrekt mit dem Sonoff verbunden, schließen wir das Mini USB Kabel am Adapter an und halten währenddessen für einige Sekunden den Reset-Knopf des Sonoff gedrückt. Dadurch startet der Sonoff im "Flash-Mode" und kann von uns angesprochen werden.


    Zuletzt benötigen wir noch das esptool auf unserem Raspberry und installieren dieses über:

    Code
    sudo pip install esptool


    Damit sind die Vorbereitungen abgeschlossen und wir können mit dem eigentlichen Vorgang beginnen. Der Sonoff ist nun über unseren Adapter im Flash-Mode mit dem Raspberry verbunden, das esptool ist installiert und die drei geladenen Dateien liegen unter /home/pi.


    Los gehts:


    1. Flash Speicher des Sonoff löschen

    Code
    esptool.py -p /dev/ttyUSB0 erase_flash


    2. Das Mini USB Kabel trennen und den Sonoff erneut im Flash-Mode verbinden. Nun die neue Firmware auf den Sonoff flashen (Den unteren Kasten komplett per copy & paste einfügen, es sind nicht zwei voneinander getrennte Befehle)

    Code
    esptool.py -p /dev/ttyUSB0 --baud 115200 write_flash -fs 1MB -fm dout -ff 40m \
    0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otaboot.bin


    3. Adapter & Jumper Kabel entfernen und Sonoff an Netzspannung anschließen. Erst jetzt wird der Sonoff mit N & L verbunden und in die Steckdose gesteckt.

    Der Controller baut daraufhin einen eigenen Hotspot auf, mit dem wir uns von unserem iPhone aus verbinden ("LCM-...").


    4. Nach kurzer Wartezeit öffnet sich automatisch eine Weboberfläche, in die wir folgende Eintragungen machen:


    OTA repository

    RavenSystem/haa


    OTA binary file

    main.bin


    Stehen diese Einträge in den beiden Feldern, wählen wir danach unser WLAN aus dem Auswahlfenster, geben das Kennwort ein und klicken auf "speichern".


    5. Der Sonoff startet nun neu und baut erneut einen Hotspot auf, diesmal mit der Bezeichnung "HAA-...". Mit diesem verbinden wir uns abermals.

    (Bis der neue Hotspot erscheint, dauert es 5-10 Minuten, wir können uns also zwischenzeitlich einen Kaffee trinken.)


    6. In der, sich erneut öffnenden Weboberfläche tragen wir in das Feld "JSON Config" folgenden String ein:

    Code
    {"c":{"o":1,"l":13,"i":1},"a":[{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0},{"g":14},{"g":14,"t":0}]}]}

    und setzen den Haken bei "OTA Update". Ein erneutes Bestätigen des WLAN und anschließendes Speichern schließt den Vorgang ab.



    7. Der Sonoff ist nun nativ HomeKit-fähig und kann über den Code 021-82-017 in HomeKit hinzugefügt werden. ;):thumbup:

  • Danke für die Anleitung!:thumbup:


    Auf diesem Weg, kann man auch die Gosund SP111 V2 direkt in Apple HomeKit einbinden.


    71KCLLJFetL.jpg


    Als JSON Config:

    Code
    {"c":{"l":2,"b":[{"g":13,"t":5}]},"a":[{"0":{"r":[{"g":15,"v":0},{"g":0,"v":1}]},"1":{"r":[{"g":15,"v":1},{"g":0,"v":0}]},"t":2,"b":[{"g":13,"t":1}],"s":0}]}

    Das wollte ich schon lange machen. Mit HomeBridge hatte ich Probleme.

    Jetzt geht`s :) (Auf die Energie Anzeige wie in Tasmota muss man aber verzichten.

    Grüße

    Einmal editiert, zuletzt von Justman () aus folgendem Grund: Json angepast. Status LED geht jetzt auch.

  • Habe das Ganze heute mal aus Langeweile gemacht....Ist etwas Gefummel und hat bei mir auch nicht auf Anhieb geklappt aber am Ende des Tages kann man einen günstigen ESP nativ in Homekit aufnehmen.

    Hier noch ein Link, um sich die erforderliche JSON config generieren zu können. Auch zum durchstöbern der vorkonfigurierten Geräte.

    Was mich hier stört, dass die JSON zur Konfiguration zum Abschluss der Installation eingetragen werden muss und danach nicht mehr veränderbar ist. Wenn man etwas ändern möchte, wie z.B. die Status-LED soll anders leuchten, muss die gesamte Installation ab dem Flashvorgang vorgenommen werden.

    Einmal editiert, zuletzt von Bananajoe86 () aus folgendem Grund: Korrektur: Wenn man 8mal den Schalter betätigt geht das Gerät in den Konfig-Modus und man kann über die IP-Adresse das Gerät bearbeiten.

  • Erstmal Danke für die toll geschriebene Anleitung. Mit welcher Version des Sonoff Basic ist das denn realisiert worden? Ich habe hier den Sonoff RF R2 Power und leider komme ich an einer Stelle nicht weiter. Beim Versuch den Flash Speicher zu löschen scheitere ich an der Verbindung.


    Kann da jemand weiterhelfen?

  • Kravis Du hast hier das selbe Modell, welches ich auch für die Anleitung verwendet habe, du brauchst hier also nichts anderes zu beachten.


    Die Meldung im Terminal deutet darauf hin, dass der Sonoff sich nicht im Flash Mode befindet. Die LED des Sonoff kannst du erstmal ignorieren, da wir ihn ja über 5V verbinden und noch nicht über 230V..


    Versuch also nochmal, den Sonoff in den Flash Mode zu bringen. Sind alle Jumper Kabel mit Adapter und Sonoff verbunden (Wichtig: RX an TX und umgekehrt), hälts du den Reset Knopf gedrückt und schließt, während du den Knopf weiter gedrückt hältst, das Mini USB Kabel an.🤔

  • Ja mache ich alles wie beschrieben. Es ist ja auch so dass die grüne LED blinkt wenn ich ihn nicht in den Flash-Modus bringe. Der Meinung war ich zumindest.

    Die LED am FTL232RL blinkt ebenfalls während ich versuche den Speicher zu löschen also stimmt die Schnittstelle mit ttyUSB0 auch schonmal. Weiter komme ich aber nicht

  • Hallo Zusammen,


    ich habe dank euerer Hilfe bereits in einer anderen Anleitung meinen LED Controller zum laufen bekommen. Jetzt habe ich eine neue "Challenge" :)


    Ich möchte gern einen Wemos D1 mini mit 4 angeschlossenen Relay flashen und einrichten. Also bis zum Hotspot und Weboberfläche komme ich bereits problemlos. Nur hört es dann bei mir auf. Ich habe bereits einige JSON Codes ausprobiert, doch bei keinem wird mir etwas in HomeKit angezeigt. Kurioser Weise sehe ich aber auch den Wemos nicht in meiner FritzBox mit einer eigenen IP. Ausprobiert habe ich unter anderen den JSON Code vom Sonoff CH4. Dachte dass es naheliegend ist. Die GPIO´s kann ich ja einfach am Memos zur not tauschen.


    Habt Ihr eine Idee?


    Schöne Grüße

  • Also wenn du keine IP von dem WEMOS findest ist es nahe liegend, dass er nicht in deinem Netzwerk ist. Ich würde ein deiner Stelle den WEMOS neu flashen und die JSON mit dem Konfiguration auf einen einfachen Switch stellen. Anschließend kannst du sehen, ob du dann eine IP findest und das Gerät in Home bekommst. Wenn das funktioniert hat kannst du den Schalter 8x hinterenander drücken und kommst dann (über die IP natürlich) wieder in den Konfigmodus und kannst deine JSON erweitern und dich hoffentlich langsam deinem Ziel nähern.
    Was willst du überhaupt steuern? Einen Schalter zu generieren, welcher alle 4 Relais steuert ist möglich. 4 verschiedene Schalter, also für jedes Relais einen habe ich zumindest über Raven nicht hinbekommen.

  • Guten Morgen Bananajoe86,


    Ja ich hatte gehofft, dass ich 4 Relais separat steuern kann, also dass mir dann in Home 4 Taster angezeigt werden. Da bei der JSON Config ein Sonoff CH4 angegeben ist, dachte dass es funktionieren sollte. Wenn es jetzt leider nicht so ist, dann wäre das echt schade.


    Der aktuelle Stand ist so, dass ich den Memos im Netzwerk sehe. Jedoch wie gehabt, nicht in Home angezeigt wird. Habe alle Geräte (LED Controller)welche aktuell mit der gleichen Software laufen, aus Home gelöscht. Ansonsten hatte Apple immer beim Scannen des Codes gesagt, dass das Gerät bereits erfasst ist. Hatte gehofft, dass er danach statt nur des Controllers auch den Memos mit anzeigt. Fehlanzeige. Als letzte JSON Config hatte ich den Sonoff Standard genommen. Als Kleien Erfolg würde es mir ja reichen, wenn er mir den Taster in Home anzeigen würde, wenn er dann nicht schalten, weil falsche Pin Belegung wäre das ja kein Problem, aber so hätte man wenigstens einen Anfang.

  • Moin,

    ich habe zum probieren mal einen Sonoff auf einen 4ch konfiguriert. Habe über den Konfigurator lediglich einen Sonoff 4CH ausgewählt und darunter dann 4x "Switch Add Accessory" eingegeben. Folgenden Code auf das Gerät gepackt und ab dafür.

    Code
     {"c":{"o":0},"n":"HAA-5V","a":[{"t":1,"b":[],"s":0},{"t":1,"b":[],"s":0},{"t":1,"b":[],"s":0},{"t":1,"b":[],"s":0}]}

    Diesmal ging es recht flott und das Gerät wurde in Home angezeigt. Anschließend hatte ich doch wirklich 4 Switches. Also das was du bräuchtest. Bei vorangegangen Projekten hatte ich auch öfters längere Zeiten, bis Home die Geräte gefunden hat, teilweise bis 10min. Also vielleicht einfach etwas Geduld mit einbringen und gegebenfalls nach 10min mal den Stecker ziehen und nochmal probieren. Irgendwann sollte das Teil dann erscheinen. Eventuell auch mal ohne Code scannen probieren (Gerät hinzufügen --> Ich habe keinen Code bzw. kann nicht gescannt werden) Standard Code ist 021-82-017

  • Erst einmal vielen Dank für die Mühe.


    Ich habe jetzt den Wemos nochmal neu geflasht und deinen Code eingefügt. Ohne Erfolg. Weder mit Neustarten und 60min warten oder den Standard Code manuell eingeben. Er wird mir einfach nicht angezeigt. Im Wlan ist er, an pingen funktioniert auch wunderbar.

  • Dann jetzt letzter Versuch. Nochmal flashen und folgenden JSON einfügen.

    Code
    {"c":{"l":13,"b":[{"g":0,"t":5}]},"a":[{"0":{"r":[{"g":15}]},"1":{"r":[{"g":15,"v":1}]},"b":[{"g":14}]},{"0":{"r":[{"g":12}]},"1":{"r":[{"g":12,"v":1}]},"b":[{"g":0}]},{"0":{"r":[{"g":5}]},"1":{"r":[{"g":5,"v":1}]},"b":[{"g":9}]},{"0":{"r":[{"g":4}]},"1":{"r":[{"g":4,"v":1}]},"b":[{"g":10}]}]}

    Wenn dein Gerät die ganze Zeit noch nicht in Homekit erkannt wurde, wird es mit dem Code vermutlich auch nicht besser, aber du kannst jetzt über den Button auf dem Gerät das Relais 8x hintereinander drücken. (Am Besten im Sekundentakt so oft das Relais schalten, bis es nicht mehr klickt) Danach solltest du über Aufruf der IP auf die Konfigurationsseite gelangen. Dort könntest du den Code nochmal bearbeiten, aber erstmal die Homekit ID resetten. Wenn das auch nicht funktioniert bin ich auch am Ende.

  • also ich habe ihn jetzt mehrfach geflashed - ohne Erfolg. Er ist im Wlan, Ping funktioniert, aber egal mit welchem JSON Code ich es probiere, mit keinem wird er mir in Home angezeigt. Auch den internen Schalter 8x drücken zum resetten funktioniert nicht. Das einzige was da passiert, ist dass die interne LED kurz aufleuchtet.


    Ich glaube ich lass es einfach. Ist zwar frustrierend, aber man kann es nicht ändern. Danke noch einmal für die Hilfe.

  • Kann ja nicht sein dass du garnicht auf das Gerät kommst. Was passiert denn wenn du Tausendmal den Schalter drückst? Irgendwann muss doch das Relais aufhören zu schalten. In diesem Zustand musst du dann über die IP auf das Gerät kommen. Oder du musst mal deinen Router neu starten, dass sich die IP vom wemos aufgehängt hat.

  • wenn ich auf den internen Schalter des wemos drücke passiert nichts, außer dass die leer auf dem wemos kurz blink. Es wird aber auch nie ein Relais gesteuert. Habe schon gefühlt hundert mal hintereinander die Taste gedrückt. Mal im Sekundentakt, mal mal 20 Sekunden. Ohne irgendwelche Auswirkungen. Anbei einmal paar Fotos vom aktuellen Aufbau. Vielleicht mache ich ja ständig einen Fehler.

  • Ich habe heute auch mal versucht einen WEMOS zu flashen. Ich habe es auch nicht geschafft. Laut Github ist der Wemos nicht supported, wobei ich es nicht verstehe, da der Chip ja der Gleiche ist wie im Sonoff.
    Also entweder einen Sonoff holen, oder auf Tasmota bleiben.

  • Moin zusammen 👋

    Nach langem Suchen habe ich tatsächlich mein Flash-Problem mit dem Sonoff gelöst. Ärgerlicherweise war das Problem dass mein FTDI einen Kurzschluss zwischen VCC und TX hatte. Da muss man erstmal drauf kommen.
    Jetzt hätte ich noch eine Frage. Hat jemand Erfahrung mit einem Sonoff mit der Raven-Firmware in Verbingung mit dem GPIO14. Ist der irgendwie nutzbar in der Raven-Firmware? Mit der Tasmota Firmware ist der ja vielseitig einsetzbar aber es wäre schon der Hammer wenn der hier auch mit einem Lichtschalter oder Bewegungsmelder schaltbar wäre.

  • Flash es auf dein Gerät und probier es aus ob deine Anforderung erfüllt werden. Sieht für mich aus als ob alle gpio einstellbar sind. Ein Bewegungsmelder ist ja auch nur eine zusätzliche Komponente, welche deinem Sonoff ein Signal schickt, oder nicht. Hier kannst die möglichen Einstellungen konfigurieren.