Sonoff S20 Steckdosen in Homematic System einbinden

Sonoff S20 Steckdosen in Homematic System einbinden

Die Homematic-Funksteckdosen sind eine tolle Sache und auch sicherlich bei vielen Anwendungen die erste Wahl. Möchte man mehrere Geräte schalten, so summieren sich die Steckdosen auch ganz schnell und dies schlägt auch auf den Geldbeutel. Wer hier erheblich sparen will, kann Sonoff-Geräte einsetzen. Die Sonoff-Geräte eignen dafür sehr gut. Und ich kann auch verstehen warum – die kosten doch nur ein Viertel im Gegensatz zu den Homematic Geräten. Diese sind zwar eigentlich nicht mit der Homematic kompatibel, lassen sich jedoch mit ein paar Bastelstunden leicht an die Homematic koppeln. Wie das funktioniert, möchte ich hier beschreiben.

Voraussetzungen

Benötigte Hardware

  • Sonoff S20 Steckdose
  • Ein guter USB TTL Konverter, der 3,3 V für die Stromversorgung des Geräts (oder ein separates 3,3 V-Netzteil) liefern kann (z.B hier erhältlich).
    Bitte beachten, dass es einige USB TTL Konvertern gibt, die zwischen 3,3 V und 5 V umgeschaltet werden können, trotzdem 5 V liefern, obwohl 3 V eingeschaltet sind. Dadurch kannihr Gerät beschädigt werden. Ihr SOLLTET überprüfen, dass sowohl die Daten- als auch die Power-Pins 3,3 V liefern.
  • Lötkolben und Stiftleiste

Benötigte Software

Sie können eines der folgenden Programme verwenden:

Software vorbereiten

PlatformIO

  1. Den neuesten Sonoff-Tasmota-Quellcode (zip) herunterladen und extrahieren
  2. Den Sonoff-Tasmota-Quellcodeordner in PlatformIO laden
  3. Die Firmwarevariante auswählen, die auf ihr Modul eingespielt werden soll, indem ihr eine der env_default-Zeilen in der platformio.ini auskommentiert. Möglicherweise solltet ihr auch den Werd beim upload_port ändern, um ihn an den Kommunikationsport der seriellen USB-Schnittstelle anzupassen. Es stehen folgende Firmwarevariante zum Auswahl:
    • sonoff-minimal.bin =  minimale Version erlaubt OTA-Uploads zur Unterstützung größerer Versionen und ändert KEINE persistenten Parameter. Diese Version sollte NICHT für die Erstinstallation verwendet werden.
    • sonoff-classic.bin = Die Classic-Version mit WifiManager, WPS oder SmartConfig, kann für Erstinstallation verwendet werden. Für Erstinstallation von mir empfohlen!
    • sonoff.bin = Die Sonoff-Version ohne WPS und SmartConfig, fügt jedoch mehr Sensoren hinzu.
    • sonoff-BG.bin bis sonoff-TW.bin = Die Sonoff-Version ohne WPS und SmartConfig in verschiedenen Sprachen.
  4. my_user_config.h öffnen und die WLAN-Einstellungen (und optional die Einstellungen für MQTT, Syslog, WebServer, NTP usw.) anpassen
    • #define STA_SSID1              "Dein_WiFi_SSID"      // [Ssid1] Wifi SSID 
      #define STA_PASS1              "Dein_WiFi_Passwort"  // [Password1] Wifi password

      Dieser Vorgang vereinfacht das Vorgehen beim erstmaligen Einspielen der neuen Firmware, da Sonoff ihr WLAN automatisch erkennt. Dabei beachten, dass WiFi SSID sowie WiFi Passwort keine Sonderzeichen und Lehrstellen enthalten sollen.

Arduino IDE

  1. ESP8266-Board in Arduino IDE einrichten (wenn ihr ESP8266-Board in Arduino IDE schon vorher eingerichtet habt, kann dieser Schritt weggelassen werden)
    • Arduino IDE öffnen, im Hauptmenü File > Preferences klicken und dann den folgenden Text in Feld Additional Boards Manager URLs eingeben:
      http://arduino.esp8266.com/stable/package_esp8266com_index.json
      Anschließend OK klicken.
    • Im Hauptmenü Tools > Boards > Boards Manager klicken, ganz nach unten scrollen und anschließend auf esp8266 by ESP8266 Community klicken. Letzte Version auswählen und  auf Install klicken. Die letzte Version der Software für ESP8266-Platte wird somit installiert. Nach erfolgreicher Installation der Software kann das Fenster geschlossen werden.
    • Falls ihr nicht das neuste ESP8266-Software haben, empfehle ich es zu updaten.
  2. Den neuesten Sonoff-Tasmota-Quellcode (zip) herunterladen und extrahieren (bei mir ...\Documents\Arduino\)
  3. Alle Dateien von ...\Documents\Arduino\Tasmota-Quellcode-Ordner\lib in ...\Documents\Arduino\Libraries kopieren
  4. Arduino IDE im Hauptmenü Tools so konfigurieren:
    • Board: „Generic ESP8266 Module“
    • Flash Mode: „DOUT“
    • Flash Size: „1M (no SPIFFS)“
    • Debug port: „Disabled“
    • Debug Level: „None“
    • IwIP Variant: „v2 Higher Bandwidth“
    • Reset Method: „nodemcu“
    • Crystal Frequency: „26 MHz“
    • VTables: „Flash“
    • Flash Frequency: „40 MHz“
    • Upload Using: OTA_upload
    • CPU Frequency: „80 MHz“
    • Builin LED: „2“
    • Uploud Speed: „57600“
    • Erace Flash: „Only Sketch“
    • Port: hier später den Port auswählen, wo USB-Seriell-Konverter angeschlossen wird
  5. WLAN-Einstellungen (und optional die Einstellungen für MQTT, Syslog, WebServer, NTP usw.) anpassen und Tasmota-Firmware kompilieren:
    • In Arduino IDE die Datei sonoff.ino aus dem Tasmota-Verzeichnis öffnen.
    • my_user_config.h öffnen und folgende Zeilen anpassen:
      • #define STA_SSID1              "Dein_WiFi_SSID"      // [Ssid1] Wifi SSID 
        #define STA_PASS1              "Dein_WiFi_Passwort"  // [Password1] Wifi password

        Dieser Vorgang vereinfacht das Vorgehen beim erstmaligen Einspielen der neuen Firmware, da Sonoff ihr WLAN automatisch erkennt. Dabei beachten, dass WiFi SSID sowie WiFi Passwort keine Sonderzeichen und Lehrstellen enthalten sollen.

    • Tasmota-Firmware kompilieren, dafür im Hauptmenü auf SketchVerify/Compile klicken.

USB-TTL Serial Adapter anschließen

Es sind auf der Leiterplatte des Sonoff S20 Geräts die Anschlüsse für einen USB-TTL Serial Adapter verfügbar, die Stifte müssen aber gelötet oder auf andere Weise angebracht werden, um eine Verbindung herzustellen. Es wird einen USB TTL 3,3V-Adapter benötigt (z. B. CP2102, CH340G, FT232, PL2303 o. ä.), der an die Anschlüsse der  seriellen Schnittstelle des Sonoff-Moduls angeschlossen wird. Vorsicht: einige sogenannte 3,3V-FTDI-Adapter liefern 5 V an der VCC-Leitung, dadurch kann das Sonoff-Gerät beschädigt werden. Bevor ihr den USB-TTL Adapter mit Ihrem Sonoff-Gerät verbinden, messt die Spannung an dem Daten- und an dem Power-Pin, es soll 3,3 V sein.

Achtung! Nicht gleichzeitig die Wechselstromversorgung und die serielle Verbindung anschließen! Beim Kurzschließen der seriellen Schnittstelle mit AC wird das Sonoff-Gerät oder Programmiergerät beschädigt. Zudem kann ihr PC beschädigt werden. Alle Hochspannungskabel sollen vom Sonoff-Modul getrennt werden, während der Sonoff-Gerät über Seriell/USB angeschlossen ist.

Schritt 1: Sonoff-Gerät öffnen

Das Sonoff-Gerät soll NICHT an 230 V angeschlossen sein!

Die „versteckte“ Schraube entfernen:

Schritt 2: Leiterplatine abschrauben

Die Platine abschrauben, damit ihr besser auf GND, TXD, RXD, VCC zugreifen könnt. Es gibt 2 Schrauben oben am roten und blauen Kabel. Achtet darauf, die Lötverbindung nicht zu beschädigen!

Schritt 3: Stiftleiste anlöten und USB-TTL Serial Adapter anschließen

Die Stiftleisten anlöten, wie in folgenden zwei Bildern angezeigt wird:

Den USB-TTL Serial Adapter entsprechend der folgenden Tabelle anschließen:

Programmierer Sonoff-Modul
3V4 3V4 / VCC
TX RX
RX TX
GND GND

Beim Anschließen des USB-TTL Serial Adapters auf gekreuzte RX- und TX-Leitungen achten!

Flash-Modus beim Modul aktivieren

Das „Kernstück“ des Sonoff-Moduls – ESP8266 soll in den Flash-Modus versetzt werden, bevor die Sonoff-Tasmota-Firmware übertragen werden kann. Diese geschieht durch das Schließen des GPIO0-Pins an GND, während das Modul bootet. Beim Sonoff S20 Modul ist die Steuertaste verfügbar, die GPIO0 mit GND verbindet, wodurch die Versetzung des Moduls in den Flash-Modus sehr einfach ist.

Die Vorgehensweise ist folgende:

  1. Das Modul soll zuerst von der Stromversorgung getrennt sein
  2. GPIO0 und GND durch Drücken der roten On-Board-Taste verbinden
  3. USB TTL 3.3V-Konverter mit dem PC verbinden, somit wird das Sonoff-Modul mit Strom versorgt
  4. Die Taste nach zwei bis drei Sekunden loslassen, somit wird GPIO0 von GND getrennt

Wenn alles gut gelaufen ist, befindet sich das Sonoff-Gerät im Flash-Modus, die Sonoff-Tasmota-Firmware kann eingespielt werden. Wenn der Upload nicht gestartet werden kann, trennt das Modul ab und beginnt von vorne.

Einspielen der Sonoff-Tasmota-Firmware

PlatformIO

  1. Das Sonoff-Modul soll sich im Flash-Modus befinden und und an den Rechner angeschlossen sein
  2. Upload aus dem Menü wählen, um die Firmware einzuspielen
  3. Nach erfolgreicher Übertragung der Firmware trennen Sie das Modul
  4. Für eine korrekte Initialisierung des Geräts nach dem ersten Firmware-Upload das Gerät aus und wieder einschalten.

Arduino IDE

Arduino IDE verwendet die serielle Schnittstelle, um die Firmware auf Ihr Gerät einzuspielen. Unter Windows heißen diese Schnittstellen COM1, COM2 usw. Unter Linux heißen die Schnittstellen /dev/ttyUSB0, /dev/ttyUSB1 usw. Im Folgenden verwende ich COM5 nur als Beispiel. Ihr müsst den Namen der seriellen Schnittstelle wissen, mit der Ihr Gerät verbunden ist.

Beim Durchführen des Firmware-Uploads das Gerät nicht an die Wechselstromquelle anschließen, sondern die von euren seriellen Schnittstelle (Typ FTDI) bereitgestellte Stromquelle (3,3 V) verwenden.

Die Vorgehensweise ist dabei wie folgt :

  1. Das Sonoff-Modul soll sich im Flash-Modus befinden und und an den Rechner angeschlossen sein
  2. Korrekte Schnittstelle auswählen (in meinem Fall COM5), das könnt ihr im Hauptmenü ToolsPort anpassen.
  3. Die kompilierte Firmware mit SketchUpload auf Sonoff-Gerät hochladen.
  4. Für eine korrekte Initialisierung des Geräts nach dem ersten Firmware-Upload das Gerät aus und wieder einschalten.

Wenn die Konfiguration wird nach dem Flashen nicht angewandt wird

Wenn Ihre neue Konfiguration nach dem Firmware-Update nicht angewendet wird, könnt ihr Folgendes tun, um das Problem zu beheben:

  • Den Wert von CFG_HOLDER in my_user_config.h um +1 oder -1 ändern, dabei alten Wert merken
  • Firmware-Update durchführen
  • Den Wert von CFG_HOLDER in my_user_config.h auf den alten Wert ändern
  • Firmware-Update nochmal durchführen

Anfangskonfiguration des Geräts nach dem Firmware-Update

Ist die Sonoff-Tasmota-Firmware erfolgreich auf ihr Sonoff-Modul hochgeladen worden? Dann kann das Gerät nach Bedarf konfiguriert werden (muss aber nicht). Das erfolgt wie folgt:

  1. Den Gerät an Wechselstromquelle (230 V AC)  anschließen, seriell NICHT angeschlossen
  2. Auf die Gerät-Webseite gehen http://[sonoff-ip]/cn. HINWEIS: [sonoff-ip] durch die tatsächliche IP-Adresse Ihres Sonoff-Geräts ersetzen.
  3. Hier kann die Konfiguration des Geräts nach Bedarf angepasst werden

Wichtige Befehle, die über HTTP-Requests ausgeführt werden können

Im Folgenden habe ich die Befehle aufgelistet, die für die Integration des Sonoff S20 Steckdose an das Homematic System verwendet werden.

Sonoff S20 Steckdose einschalten:

http://[sonoff_IP]/cm?cmnd=Power%20on

Sonoff S20 Steckdose ausschalten:

http://[sonoff_IP]/cm?cmnd=Power%20off

Dabei soll [sonoff-ip] durch die tatsächliche IP-Adresse des jeweiligen Sonoff-Geräts ersetzt werden.

Wenn ein Kennwort für den Zugriff auf die Webbenutzerschnittstelle verwendet wird, muss dieses (im Klartext) in der URL der HTTP-Anforderung enthalten sein:

http://[sonoff_IP]/cm?&user=Benutzernamen_eingeben&password=Passwort_eingeben&cmnd=Power%20on
http://[sonoff_IP]/cm?&user=Benutzernamen_eingeben&password=Passwort_eingeben&cmnd=Power%20off

Integration der Sonoff S20 Steckdose an das Homematic System

Um die Integration besser zu ermöglichen, soll ein virtueller Gerät (Zwischenstecker Schalter) erzeugt werden. Dafür müsst ihr CUx-Daemon auf ihrer CCU installiert haben, eine Anleitung dafür ist hier verfügbar.

Ein virtueller Zwischenstecker wird über Menu „Einstellungen/Systemsteuerung/CUx-Daemon“ hinzugefügt:

Dort auf „Geräte“ klicken, Gerätetyp 40 (16 Kanal Universalsteuerung) auswählen, den Namen für das Gerät eingeben (hier: Sonoff S20), Geräteicon auswählen (hier: Zwischenstecker Schalter), Control auswählen (hier: Schalter) und abschließend auf „Gerät auf CCU erzeugen“ klicken.

Ein virtuelles Gerät ist erzeugt und befindet sich nun im „Geräte-Posteingang“. Dort könnt ich das Gerät fertigkonfigurieren, z. B. Gewerk zuweisen, Namen sowie Einstellungen des jeweiligen Kanals anpassen usw. Pro Kanal kann eine Sonoff-Steckdose gesteuert werden, somit kann mit eben erzeugtem 16-Kanal Virtualgerät bis zu 16 Sonoff-Steckdosen gesteuert werden. Jetzt kann das Programm zur Steuerung der Sonoff-Steckdosen angelegt werden.

Auslösebedingungen für das Programm sind die Änderung des Schaltzustandes beim virtuellen Sonoff-Gerät (Kanal). Bei der Änderung des Schaltzustands wird das entsprechende HTTP-Request zum Ein- bzw. Ausschalten an das Sonoff-Gerät versendet. Das Programm für eine Steckdose (in meinem Fall ist es eine Steckdose beim Sofa) sieht so aus:

Das Skript für das Versenden eines HTTP-Requests zum Einschalten des Sonoff-Modulls sieht so aus:

! Einschalten..............................................................
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - 'http://[sonoff_IP]/cm?cmnd=Power%20on'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); 
string responce = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

Das Skript für das Versenden eines HTTP-Requests zum Ausschalten des Sonoff-Modulls sieht dem entsprechend so aus:

! Einschalten..............................................................
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - 'http://[sonoff_IP]/cm?cmnd=Power%20off'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); 
string responce = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

In den beiden Skripten soll [sonoff_IP] durch die IP-Adresse des jeweiligen Sonoff-Gerät ersetzt werden.

Weitere Sonoff-Geräte können in weiteren „Sonst, wenn…“-Blöcken nach der gleichen Art und Weise gesteuert werden.

Es gibt aber einen Nachteil bei dieser Art der Integration: wenn die Sonoff-Steckdose manuell durch das Betätigen des Knopfes am Gerät ein- bzw. ausgeschaltet wird, erfährt das Homematic-System nichts davon. Eine Möglichkeit, diese zu umgehen, ist die Kommunikation von Homematic mit Sonoff-Geräten über MQTT, was mit der eingespielten Sonoff-Firmware möglich ist. Die Umsetzung beim Homematic ist aber etwas komplizierter und wird von mir in den nächsten Artikeln beschrieben.

Für Vorschläge, Hinweise, Anregungen und konstruktive Kritik zu diesem Artikel bin ich euch dankbar!

Schreibe einen Kommentar

Menü schließen