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
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:
- Raspberry Pi
- Sonoff S20 (Smarte Steckdose)
- USB zu TTL 3.3V FTDI Adapter
- Female-Female Jumper Kabel
- Pinleiste
- Lötutensilien (alternativ: Metallfedernadeln)
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:
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:
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.Nun 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):
1 |
;env_default = sonoff |
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:
1 2 3 4 |
#define STA_SSID1 "indebuurt1" // [Ssid1] Wifi SSID #define STA_PASS1 "VnsqrtnrsddbrN" // [Password1] Wifi password #define STA_SSID2 "indebuurt2" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "VnsqrtnrsddbrN" // [Password2] Optional alternate AP Wifi password |
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.
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:
Ü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
1 2 3 4 5 |
sitemap sonoff label="Sonoff" { Frame label="Sonoff Steckdosen" { Switch item=LivingRoom_Socket } } |
Diese Sitemap enthält nur dieses eine Item und ist nur zu Demonstarationszwecken gedacht (http://openhabianpi:8080/basicui/app?sitemap=sonoff):
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.
23 Kommentare
Vielen Dank für den wieder sehr interessanten und guten Artikel!
Immer wieder eine Freude zu lesen 🙂
Als Firmware-Alternative möchte ich kurz ESPurna vorschlagen, bei mir laufen damit aktuell 5 Sonoff Stecker einwandfrei.
Damle für den Hinweis 🙂
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?
Als Info: benötigt wird auch ein MQTT broker.
https://docs.openhab.org/addons/bindings/mqtt1/readme.html
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?
Hab’s rausgefunden: Das Passwort in services/mqtt.cfg NICHT in Gänsefüsschen schreiben… -.-
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
Tolle Anleitung aber momentan versuche ich einen Sonoff T1 2 Wege anzusteuern aber schaff nur einen. Jemand ne Idee woran es liegt
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
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
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 🙂
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
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
Funktioniert das zufällig auch mit der Meross MSS425EEU ( Steckerleiste )?
Das Teil ist nämlich recht gut!
> „User: der User zum einloggen (normalerweise openhabian)“
Zum einloggen in was?
Hier ist doch der mqtt user gemeint aus /etc/mosquitto/passwd, oder?
Echte gute Anleitung … hat bei mir leider einen Schönheitsfehler .. Im Openhab sieht alles gut aus, selbst auf der IOS App sieht es aus, als würde die Schaltung durchgeführt – leider schalten die Sonoff S20 nicht … wo mache ich den Denkfehler? Sonoff’s sind mit Tasmota 6.2.1 geflasht …
MfG
Peter
Hallo eine Frage: Klappt dann noch die Verbindung zum Google Home? Also kann ich die dann auch noch über Google steuern?
Danke für die Anleitung. Hat super geklappt, gleich bei 10 Stück :-). Hinweis: Manchmal ist gar kein Löten erforderlich, man kann die Steckerleiste einstecken und leicht verkannten und halten, dann entsteht auch genug Kontakt. Muss man halt das Flashen einhändig starten…
Hey,
erstmal vielen Dank für deine super Tutorials!
Besteht die Möglichkeit, die Steckdose nicht über eine GUI sondern beispielsweise per python script zu steuern?
Ich habe mich bereits an python openhab und paho-mqtt versucht, leider ohne Erfolg. Bei ersterem scheitert es bereits an der richtigen Installation des Pakets, für letzteres verstehe ich das MQTT-Protokoll wahrscheinlich zu wenig.
Besteht die Chance, dass du hierzu ein Tutorial machst?
Ich möchte basierend auf Sensorwerten (z.b. Temperatur) die Steckdosen an- und ausschalten. Derzeit nutze ich Funksteckdosen, die allerdings viel zu unzuverlässig sind.
Viele Grüße Christoph
Update von mir: Inzwischen habe ich es geschafft die Steckdose mittels Terminal-Befehl zu steuern. Diese Seite war dabei sehr hilfreich: https://github.com/arendst/Sonoff-MQTT-OTA-Arduino/wiki/MQTT-for-Newbies. Was den dort angegebenen Befehlen noch fehlt ist die Weitergabe von Benutzername und Passwort. Hier kann die Synopsis nachgeschaut werden: https://mosquitto.org/man/mosquitto_pub-1.html.
Zudem enhält die Seite auch ein Python-Skript, an dem ich mich mal versuchen werde.
VG Christoph
Leider funktioniert die Anleitung nicht mehr. Bei klick auf den oberen Github-Link landet man inzwischen auf https://github.com/arendst/Tasmota/tree/master. Dort ist nirgends etwas von Sonoff mehr zu finden.
Auch in der „platformio.ini“ gibt es kein
;env_default = sonoff
mehr. Dafür eine Zeile mit
default_envs =
und vielen Tasmota-Einträgen darunter. Aber kein einziger mit Sonoff. 🙁
Also funktioniert die Anleitung nicht mehr?