Raspberry Pi + OpenHAB: Sonoff S20 Wifi Steckdose steuern

In diesem Tutorial werden wir die ITEAD Wifi Smart Socket schalten, welche auch als „intelligente“ Sonoff S20 bekannt sind. Diese Steckdosen arbeiten über das Wlan und sind Amazon Alexa (Echo) und Google Home bzw. Google Nest kompatibel. Daher möchten wir sie auch in unserem Smart Home nutzen. Es ist problemlos möglich mit OpenHAB Sonoff S20 Steckdosen zu steuern.

Normalerweise werden diese 2.4 GHz Steckdosen mit der App eWeLink ferngesteuert, weshalb wir eine andere Firmware auf die Geräte spielen müssen, bevor wir sie in OpenHAB 2 integrieren.

Ein Problem, dass wir mit 433 MHz Funksteckdosen haben ist, dass wir bei manueller Schaltung den Status erst abfragen müssen und daraufhin aktualisieren. Mit OpenHAB und den intelligenten Steckdosen von Sonoff können wir dieses Problem umgehen.

 

Zubehör

Sonoff S20 2.4GHz Steckdose

Sonoff S20 2.4GHz Steckdose

Die günstigen Sonoff Module haben sich als brauchbare Alternative zu anderen ähnlichen Geräten. Um die Module flashen zu können und so die benötigte Custom Firmware hochzuladen ist noch ein wenig Zubehör nötig. Insgesamt habe ich diese Teile verwendet:

Auf der offiziellen Seite von ITEAD (dem Hersteller der Sonoff S20 Wlan Steckdosen) findet man folgende Infos zu dem Modell:

  • Stromversorgung: 90V ~ 250V AC
  • Max. Aktuell: 10A
  • Wireless Standard: Wi-Fi 2,4 GHz b / g / n
  • Sicherheitsmechanismus: WEP / WPA-PSK / WPA2-PSK
  • Betriebstemperatur: 0 ℃ ~ 40 ℃
  • Betriebsfeuchtigkeit: ≤80%
  • Material: FR-ABS
  • EU-Norm: Typ F

 

Custom OpenHAB Sonoff S20 Firmware flashen

Die Sonoff S20 haben eine Firmware, welche für die hauseigenen Apps (eWeLink) gedacht ist, nicht aber für die Verbindung mit OpenHAB 2. Außerdem senden diese Daten über eine (chinesische) Cloud, was nicht unbedingt jeden begeistern sollte. Daher müssen wir im ersten Schritt eine andere Firmware flashen. Glücklicherweise ist dies recht einfach möglich, jedoch muss die Wlan Steckdose dafür geöffnet werden. An drei Schrauben ist diese befestigt:

OpenHAB Sonoff S20 außen

Öffne die drei Schrauben der Steckdose.

Darin ist die Platine usw. vorhanden. Unten links befinden sich vier kleine Löcher, mit denen wir eine Verbindung aufbauen können. Falls keine Pinleiste aufgelötet ist, so musst du auch noch die Platine vom Gehäuse lösen. Dazu gibt es drei mögliche Schrauben (siehe Markierungen). Löse sie vorsichtig heraus und löte eine 4er Pinleiste an. Da nicht alle Platinen beschriftet sind, habe ich die Pin Belegung dazu geschrieben:

OpenHAB Sonoff S20 ITEAD Platine

Die drei Schraubenplätze sind rot markiert. Außerdem ist die Pinbelegung noch einmal beschrieben.

Ein wichtiger Hinweis vorweg: Die S20 Steckdose darf niemals gleichzeitig am Strom sowie per USB verbunden sein! Erst wenn die Steckdose komplett verschraubt und abgesichert ist, darf sie an die Steckdose angeschlossen werden! Neben den Geräten begibst du auch dich selbst ansonsten in Gefahr.

Auf der Platine befindet sich ein ESP8266, der geflasht werden muss. Dazu schließen wir die Pins an den USB TTL Adapter an:

USB TTL Adapter Sonoff S20 Steckdose
3V3 3V3 / VCC
TX RX
RX TX
GND GND

Bevor du den USB Adapter samt S20 Steckdose an den Computer anschließt muss du den Knopf gedrückt lassen. Schließe dann das USB Kabel an. Die blaue LED wird leicht aufleuchten. Dadurch wird das Gerät in den Firmware-Flash Modus.

Sonoff S20 Software Teil

Zunächst einmal laden wir die Custom Firmware herunter. Gehe dazu auf die Github Seite https://github.com/arendst/Sonoff-Tasmota/tree/master (Wichtig: Master Branch) und drücke auf den Button „Clone or download“ -> „Download ZIP“. Den enthaltenen Ordner musst du auf deinem Computer entpacken – wir werden ihn gleich brauchen.

Um die Software flashen zu können, benötigen wir die PlatformIO IDE. Diese ist für Visual Studio oder den Atom Editor verfügbar. Es ist auch eine Anleitung für die Arduino IDE vorhanden, allerdings sind dafür einige zusätzliche Schritte nötig, weshalb wir hier nicht darauf eingehen. Ich wähle den Atom Editor.

Unter File > Settings > Install suchen wir nach platformio-ide und installieren es. Du wirst danach gefragt, ob du Clang installieren willst (dies ist optional).

Anschließend startet der Atom Editor neu und wir sehen das Menü. Drücke „Open Project“ und wähle den zuvor entpackten Ordner aus.Atom PlatformIO Sonoff S20Nun müssen wir noch ein paar Einstellungen vornehmen, bevor wir die Firmware uploaden. Zunächst bearbeiten wir die Datei „platformio.ini“ im Basisverzeichnis dieses Ordners. Dort musst du diese Zeile auskommentieren (indem das Semikolon am Anfang entfernt wird):

Wähle anschließend die Datei „user_config.h“ im Ordner „sonoff“ aus und bearbeite sie mit einem Texteditor deiner Wahl (z.B. mit Atom). Folgende Zeilen müssen angepasst werden:

Hier wird der Name des Wlan Netzwerks gespeichert (SSID) sowie das Passwort. Falls du ein zweites, alternatives Netzwerk eintragen willst, hast du ebenfalls die Möglichkeit. Es reicht allerdings eines. Du hast weiter oben in der Datei auch noch die Möglichkeit deine Sprachpräferenz auf Deutsch umzustellen (optional). Speichere die Datei anschließend.

In Atom öffnen wir nun die Datei „sonoff.ino“ im Ordner „sonoff“ (z.B. über File -> Open File…) und drücken anschließend in der Taskleiste auf PlatformIO -> Upload. Dabei werden ein paar nötige Pakete installiert, die Custom Firmware gebaut und anschließend auf das verbundene Board geladen. Der Vorgang dauert ein wenig.

Falls du einen Fehler beim Uploaden angezeigt bekommst (warning: espcomm_sync failed, etc.) ist das Gerät nicht im richtigen Modus (mehr Infos). Du kannst auch versuchen RX und TX zu tauschen, da scheinbar nicht alle Geräte baugleich sind. Danach musst du den TTL Adapter erneut anschließen und dabei den On-Button der Sonoff S20 Steckdose gedrückt halten.

Sonoff S20 Custom Firmware testen

Hat alles geklappt, testen wir das ganze noch. Dazu gehen wir im Menü unter PlatformIO -> Serial Monitor und wählen das Gerät sowie Baudrate 115200 aus.

Atom PlatformIO Sonoff S20 Serial Monitor

Während der USB Adapter verbunden ist, trenne nun das Jumper Kabel von VCC und schließe es erneut an. Dadurch wird der ESP8266 Controller auf der Platine neugestartet. Daraufhin wird sich die Steckdose mit deinem Wlan Netzwerk verbinden und die IP Adresse des Geräts wird angezeigt. In meinem Fall ist dies 192.168.1.5:

Diese Adresse kopieren wir und geben sie in einem Browser ein (Alternativ kannst du die interne IP Adresse auch über deinen Router herausfinden). Dahinter sollte eine solche Oberfläche erscheinen, wodurch wir wissen, dass alles geklappt hat. Darüber kannst du die S20 Steckdose auch bereits fernsteuern:

OpenHAB Sonoff S20 Custom Firmware UI

Über die weiteren Menüpunkte kannst du andere Informationen abrufen bzw. Upgrades ausführen. Wir müssen dem Gerät noch einen eindeutigen Namen (mehr Informationen zu Topics) sowie die Einstellungen von OpenHAB geben. Dazu gehe unter „Configuration“ -> „Configure MQTT“:

  • Host: Name des Raspberry Pi (wie openhabianpi)
  • Port: 1883
  • Client: siehe Topic
  • User: der User zum einloggen (normalerweise openhabian)
  • Password: zum User gehörendes Passwort (Standard: openhabian)
  • Topic: ein eindeutiger (!) Name (z.B. „sonoff-1014C6“ oder „sonoff-s20-wohnzimmer-1„).
  • Full Topic: belassen (%prefix%/%topic%/)

Nach dem Speichern wird neu gestartet.

Beende nun die serielle Verbindung über den USB Adapter und schraube die Steckdose wieder zusammen, bevor wir zum nächsten Schritt gehen.

 

OpenHAB Sonoff S20 Integration

Wir wechseln nun zur OpenHAB Instanz. Du solltest OpenHAB 2 bereits auf deinem Rasberry Pi installiert und konfiguriert haben bevor wir fortfahren. Wechsle anschließend im Browser auf http://openhabianpi:8080/ und wähle das Paper UI aus. Unter „Add-ons“- > „Bindings“ suchst du das „MQTT Binding“ und installierst es. Generelle Informationen zu MQTT findest du hier.

Wir wechseln anschließend zur SSH Konsole und verbinden uns. Zunächst müssen wir die MQTT Daten für OpenHAB einstellen:

sudo nano /etc/openhab2/services/mqtt.cfg

Ans Ende dieser Datei kommt folgendes:

broker.url=tcp://localhost:1883
broker.user=openhabian
broker.pwd=openhabian

Falls du das Standard Passwort geändert hast, musst du natürlich das auch entsprechend anpassen. Ansonsten speichere mit Strg+O und kehre zurück mit Strg+X.

 

Nun erstellen wir ein Item in OpenHAB für die Sonoff S20 Steckdose mit dem nachfolgenden Inhalt:

sudo nano /etc/openhab2/items/sonoff.items
Switch LivingRoom_Socket "Wohnzimmer S20 Steckdose" (LR,gLight) { mqtt=">[broker:cmnd/sonoff-1014C6/POWER:command:*:default], <[broker:stat/sonoff-1014C6/POWER:state:default]" }

Du musst die ID bzw. den Namen (sonoff-1014C6) für das Item entsprechend anpassen! Das Icon sowie der Name kann natürlich individualisiert werden. Wichtig ist der MQTT Befehl. Der erste Wert sendet den Befehl und mit dem zweiten wird bei manuellem An/Abschalten der Status empfangen und entsprechend aktualisiert.

Damit wir das ganze nun noch per GUI steuern können, erstellen oder erweitern wir eine Sitemap:

sudo nano /etc/openhab2/sitemaps/sonoff.sitemap

Diese Sitemap enthält nur dieses eine Item und ist nur zu Demonstarationszwecken gedacht (http://openhabianpi:8080/basicui/app?sitemap=sonoff):

OpenHAB Sonoff S20 Integration

Nun kannst du es testen: Schalte die Steckdose manuell und sieh wie sich der Status verändert. Wenn du den Schalter über die Oberfläche drückst, sollte die Sonoff S20 Steckdose ebenfalls den Status wechseln.

 

15 Kommentare

  1. Vielen Dank für den wieder sehr interessanten und guten Artikel!
    Immer wieder eine Freude zu lesen 🙂

    Antworten
  2. Als Firmware-Alternative möchte ich kurz ESPurna vorschlagen, bei mir laufen damit aktuell 5 Sonoff Stecker einwandfrei.

    Antworten
    • Ich hab jetzt auch ESPurna geflasht da Sonoff-Tasmota etwas gezickt hat. Leider bekomme ich jetzt keine Kommunikation mit openhab hin.
      Unter Status wird MQTT als connected angezeigt und er schickt auch MQTT Nachrichten „[779731] [MQTT] Sending ESPURNA_7A1E52/relay/0 => 1 (PID 1)“
      Kann mir jemand sagen wie ich das Item in openhab dafür anlegen muss?

      Antworten
  3. Ich habe (eigentlich…) alles so gemacht, wie beschrieben. Mit mosquitto_sub & _pub bekomme ich eine Verbindung hin. Wenn ich über openhab den Schalter schalte, finde ich das auch in der log-Datei wieder. Nur scheint er dabei keine mqtt-Kommandos abzusetzen.
    Woran kann das liegen?

    Antworten
  4. Vielen Dank, super Tutorial!
    Ein Frage hätte ich: Wie kann ich den Schalter in der Basic UI aktualisieren lassen, wenn ich die Taste direkt am Sonoff drücke ?
    Gruß Micha

    Antworten
  5. Tolle Anleitung aber momentan versuche ich einen Sonoff T1 2 Wege anzusteuern aber schaff nur einen. Jemand ne Idee woran es liegt

    Antworten
  6. Super Tutorial Felix, danke dafür.
    Ich habe dies direkt mit einem Sonoff Basic versucht. Das flashen hat auch mit den gleichen Einstellungen auf Anhieb funktioniert. Auch das Steuern über openhab hat geklappt. Wenn ich ihn allerdings an 230 V angeschlossen habe, hat er nur in unregelmäßigen Abständen geblinkt und ließ sich nicht mehr steuern. Danach wieder mit den 3,3 V über die Pins versucht und es hat alles funktioniert. Eine Idee an was das liegt? Wäre über eine Antwort super dankbar.
    Viele Grüße Michael

    Antworten
  7. Spannende und interessante Anleitung. Vielen Dank dafür.
    Jedoch wäre es hilfreich gewesen zu erwähnen das man ein USB Typ B Mini zu USB Kabel benötigt.
    Der Adapter der vorgeschlagen wird hat leider diesen Anschluss. Jetzt muss ich noch ein paar Tage warten bis das Kabel von Amazon eintrifft. Bin ich beim Kauf in die Falle getappt =/
    Mit freundlichen Grüßen
    Sönke

    Antworten
  8. Bei den Einstellungen in der platformio.ini musste ich noch den passenden COM Port einstellen und um wirklich flashen zu können musste ich erst die USB-Verbindung trennen und mit gedrückten Knopf auf der SONOFF wieder einstecken um den espcomm_sync failed Fehler zu umgehen.

    Der Teil mit VCC abziehen, damit der „Custom Firmware testen“ geht bei mir unter Windows 10 (10.0.17692.1004) nicht, das wird nur mit: „SerialException: ClearCommError failed (WindowsError(5, ‚Zugriff verweigert‘))“ quittiert. Über den Router bekommt man jedoch auch so heraus auf welcher IP das Gerät lauscht…

    BTW.: Ich hab es mit einem SONOFF TH16 versucht. Vielen Dank für die Anleitung 🙂

    Antworten
  9. Hallo Felix,
    habe mir eine Sonoff S20 Steckdose besorgt. Habe sie geöffnet – finde aber den ESP8266 nicht. Habe ein Foto von dem Ding gemacht – wie kann ich Dir das Foto zukommen lassen?

    Peter

    Antworten
  10. Wenn ich das Gerät an USB anschließe, kommt immer „USB Gerät nicht erkannt“ und es ist auch kein Serial COM port, wie ich es von meinen ESPs kenne, vorhanden. Habe die Anleitung aktuell bis zum „UPLOAD“ gemacht. Ob ich nun die Kabel bei RX und TX tausche oder normal habe, erkennt er sie nicht.

    Habe im Netz leider nichts als Lösung gefunden. Wäre für Lösungsvorschläge offen.
    An geht die Steckdose und ich sehe auch die dauerhaft blau leuchtende LED durch das Knopf gedrückt halten beim start.

    Grüße

    Antworten
  11. Funktioniert das zufällig auch mit der Meross MSS425EEU ( Steckerleiste )?
    Das Teil ist nämlich recht gut!

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!