Es wird mal wieder Zeit für einen Beitrag. Der noch nicht publizierte Projektstau ist groß, aber im Job ist gerade viel los 🙂
Ich habe vor einiger Zeit die ITEAD WiFi Homeautomation Produkte entdeckt, die auf dem ESP8266 beruhen. ITEAD stellt für die Produkte auch die volle Dokumentation inkl. Schaltpläne zur Verfügung. Genauer gesagt geht es hier um die WiFi Steckdose mit dem Namen Sonoff S20 und den Sonoff Switch, der ein WLAN Schalter in Form eines Schnurschalters ist.
Der Preispunkt der Produkte ist ziemlich gut. Ein Eigenbau für den Preis dürfte schwierig bis unmöglich sein. Die WiFi Steckdose bekommt man für 13€, den Schalter für unter 7€. Die Produkte haben kein CE Zeichen. Der innere Aufbau ist aber sehr gut und ein CE dürfte nach meine Meinung kein Problem sein, wenn es denn beantragt würde. Zur ITEAD Original Firmware kann ich nichts sagen. Ich habe bisher alles sofort auf meine Firmware umgeflasht. Es wird dazu auch noch ein Post folgen.
Netterweise hat ITEAD auf den Platinen schon vorgesehen, dass man eine Stiftleiste einlöten kann. Stiftleisten gibt es bei ebay für weniges als nen Appel und nen Ei. Das Öffnen der Gehäuse ist einfach. Der Schalter ist nur geklipst, die Steckdose ist geklipst und hat eine zusätzliche Schraube.
Auf der Platine der Steckdose ist die Pinbelegung angegeben. Beim Schalter habe ich sie auf dem Foto notiert. Beim Schalter ist zusätzlich noch GPIO14 herausgeführt.
Und jetzt kommt die obligatorische Warnung:
Die Geräte bieten einen sehr einfachen Zugang zur Heimautomatisierung. ABER die 230V Netzspannung sind kein Spass. Die nötige Sachkunde ist Voraussetzung. Auf keinen Fall dürfen die Geräte offen an 230V betrieben werden. Keines Falls darf man die Platinen mit dem Rechner programmieren, wenn sie an 230V angeschlossen sind.
Keine gute Idee: Pins aus dem Gehäuse herausführen.
Die Programmierung der Boards erfolgt analog zu einem normalen ESP8266 Board, siehe auch:
https://blog.thesen.eu/esp8266-wlan-microcontroller-mit-der-arduino-ide-programmieren/
Generell kann ich eine Programmierung ohne Programmierboard nicht empfehlen. Es gibt immer wieder Anleitungen, welche ESP8266 Boards direkt an FTDI oder CH340 Chips hängen, weil diese ja einen 3.3V Ausgang haben. Das ist nicht empfehlenswert, weil diese Pins bis maximal 50mA belastbar sind. Der ESP8266 zieht im Mittel 80mA (wenn WiFi an ist) und bis über 200mA als kurze Pulse. Ein Programmierboard sorgt für eine stabile Spannnung und eine Wandlung der Pegel zwischen 3.3V und 5V.
Wer ein ESP8266 Programmierboard hat, kann das einfach mit ein paar Jumperkabeln verwenden.
Hier sind einfach die Anschlüsse eines Programmierboards für einen ESP8266-01 genommen worden. GPIO14 hängt in diesem Beispiel auf der Seite des Programmierboards in der Luft. Der ESP8266-01 würde auf dem Foto mit der Antenne nach unten zeigen.
Um in den Programmmiermodus zu kommen, muss man aber ein wenig tricksen. GPIO0 und Reset des Programmierboards sind ja nicht verbunden. Es geht aber ganz einfach. GPIO0 ist über den Taster auf der Sonoff Platine erreichbar. Und statt Reset kann man einfach den USB Stecker neu anstecken. Konkret:
- USB Stecker des Programmierboards abstecken.
- Taster auf dem Sonoff Board drücken und gedrückt halten.
- USB Stecker einstecken.
- Taster auf Sonoff Board loslassen.
Danach kann man das Board ganz normal z.B. mit der Arduino IDE programmieren.
Die GPIO Belegung:
- GPIO0 Taster
- GPIO12 Relais (high = on) + LED (blau); LED nur bei S20
- GPIO13 LED grün (low = on)
- GPIO14 Pin 5 der Stiftleiste – nur Sonoff Switch
Hardware Ausstattung:
- ESP8266
- PN25F08 Flash (1MByte/8MBit)
- 10A Relais
- Taster
- LED grün – grün/blau S20
Es ist also der selbe großer Flash Baustein verbaut wie im ESP8266-12. Es sollten als alle ESP Projekte laufen.
Viel Erfolg!
Hallo Stefan,
GPIO14 ist ja mit einem Pin herausgeführt, was die Nutzung dieses GPIO natürlich einfach macht.
Wie kommt man an einen weiteren GPIO heran?
Hast Du eine Ahnung, was am einfachsten funktionieren könnte?
Viele Grüße Gisbert
Hallo Gisbert, leider ist meines Wissens nichts weiter einfach zu erreichen. Du kannst natürlich an den Esp selbst gehen. Pinout des Chips findest Du im Netz. Mit einer sehr feinen Lötspitze geht es.
Gruss Stefan
Welche GPIO Pins sind noch nicht belegt?
Sind 5V und 3,3V verfügbar?
Hi, ich hab bei mir leider aus versehen einen FTDI-Adapter mit 5v angeschlossen. Auf 3.3V leuchtet nun keine LED mehr, wenn ich auf 5V anschlossen habe eine Blaue. Komme nicht in den Flashmode und weiß nicht weiter außer das Ding in die Tonne zu kicken. Hast du mir nen Tipp?
Das sieht nicht gut aus. Ich fürchte das Ding ist jetzt ein Briefbeschwerer.
Vielleicht baust Du Dir einen Programmieradapter. Die 3.3V vom FTDI zu nehmen ist nicht wirklich gut. Laut Datenblatt kann der FTDI auf dem 3.3v Pin bis max 50mA belastet werden. Der ESP zieht im Mittel 80mA und kurzfristig über 200mA.
Ich möchte diesen Text nur als Hinweis für den Autor verstanden wissen:
Ich steige erst gerade in die Programmierung des SONOFF-Moduls ein.
Wenn ich die Schaltung richtig verstanden habe, meine Warnung:
–> Das Modul ist an keiner Stelle vom 230V-Netzt getrennt.
Wenn meine Vermutung richtig ist, bleibt auch das Herausführen der Pins
nicht nur „keine gute Idee“ sondern ist LEBENSGEFÄHRLICH.
Hallo Klemens,
Die Sonoff Module haben den Niedervoltbereich von der Netzspannung galvanisch getrennt. Die erwähnte Pinleiste ist also nicht mit dem 230V Netz verbunden.
Zur Unterscheidung: viele Baumarkt Funksteckdosen haben ein Kondensatornetzteil, wo eben diese galvanische Trennung nicht existiert. Da wäre ein Anfassen in jedem Fall gefährlich.
Die Sonoff Module enthalten ein kleines Schaltnetzteil (so ca das was in einem Handy Netzteil verbaut ist).
Dennoch rate ich (siehe Hinweis oben) zur nötigen Fachkunde bei Arbeiten mit Netzspannung und empfehle das Herausführen von Pins aus dem Sonoff Modul nicht.
Gruss Stefan
Hallo zusammen,
ich habe die Geräte (Sonoff-Basic) ebenfalls im Einsatz und die GPIO Pins mit Masse und VCC aus dem Gehäuse herausgeführt. Ich nutze zusätzlich den GPIO04 für 1wire Temperaturmessungen (aktuell drei Temperaturfühler an GPIO04). Ich habe es so gelöst, dass ich eine 6-pol. Stiftleiste aufgelötet habe und GPIO04 mit dem sechsten Stift über ein dünnes isoliertes Kabel direkt auf den Pin des Chips aufgelötet habe. Außerhalb des Moduls sitzt wiederum eine Platine, welche den Anschluss an „normale“ Leitungen ermöglicht. Somit kann ich das Modul mit einem externen Taster ansteuern (GPOI14) sowie Temperaturen messen (GPIO04) und das ganze wiederum in FHEM einbinden. Der Niedervoltbereich ist wie oben beschrieben galvanisch vom Netz getrennt. Zusätzlich habe ich GND mit Erdpotenzial verbunden, was wiederum sicherstellt, dass bei einem eventuellen Defekt des Moduls ein vorgeschalteter FI-Schalter auslösen würde. Das ganze ist in einem berührungssicheren Gehäuse verbaut. Die umgebauten Systeme laufen seit ca. 3 Wochen ohne Probleme.
Aber wie oben schon angemerkt: Die nötige Fachkunde sollte auf jeden Fall vorhanden sein, ansonsten Finger weg!
Gruß Tom
Eine Vermutung von Klemens …
Das Modul ist an keiner Stelle vom 230V-Netzt getrennt. Wenn meine Vermutung richtig ist, bleibt auch das Herausführen der Pins nicht nur „keine gute Idee“ sondern ist LEBENSGEFÄHRLICH.
das ist ja völliger Blödsinn und bleibt nur eine Vermutung …
hier
https://www.itead.cc/wiki/images/b/b0/S20_EU.SCH.pdf findet man den Schaltplan
und gleich auf der 1. Seite finden man ………… einen Transformator.
Was macht dieser Transformator, er trennt den Rest der Schaltung vom 220 V Netz.
Wenn man natürlich das Ding (hinten offen) in eine Steckdose steckt und man seine Wurstfinger an die Phase des 220V Steckers hält dann wird man dran erinnert dass der Strom aus der Steckdose kommt.
Also keine Vermutungen loslassen wenn man keine Ahnung hat.
Hallo,
Ich habe noch mehrere dieser Teile ungenutzt rumzuliegen.
Wie sieht denn die Original-Firmware aus und welche Firmware hast du eingespielt?
Die Teile hatten des öfteren Verbindungsprobleme.
Hallo Oliver,
Ich habe die Original Firmware nie genutzt. Ich habe immer sofort meine eigene Firmware geflasht.
Wenn Du das Arduino SD nutzt, prüfe im Boardmanager, ob Du die aktuelle Esp Umgebung hast.
Gruss Stefan
Zu den Pins… kann man nicht einfach TxD und RxD als GPIO nutzen? Also zum Flashen eh eine Stiftleiste einlöten, und auf der dann nach dem Flashen mit Stecker die GPIOs 01 (TxD0) und 03 (RxD0) abgreifen. Will man das Gerät später noch mal umflashen, zieht man dazu einfach zeitweise diesen Stecker ab. Damit könnte man selbst an ein S20 einen DHT20 zum Feuchte/temperaturmessen anschließen. Oder spricht da ewas dagegen?
Hallo Sokkel,
ich habe das „umnutzen“ von RX&TX als GPIO bisher nicht hinbekommen. Wenn es klappt, würde der Sensor gehen. Da Du in der Dose Wärme durch die Verlustleistung hast, würden die Messungen ggf recht unpräzise.
Gruss Stefan
Hallo Zusammen,
ich stehe gerade vor dem Problem, dass ich den Knopf auf dem S20 gerne ebenfalls als An/Aus-Schalter nutzten würde. Aber leider bekomme ich das nicht so ganz hin.
Das An und Ausschalten über die App klappt super nur über den Schalter direkt überhaupt nicht.
Hat da jemand eine Idee?
Klasse Beitrag.
Zumindest die Sonoff S20 hat ein CE Zeichen. Siehe unterm Stecker. Oder auch einfach „Sonoff S20 ce“ googln.
Viele Grüße
Mittlerweile gibt es bei auch die CE Zertifikate auf itead.cc
Da hat die Firma wohl nachgearbeitet 🙂
Gruss Stefan
Hallo Stefan,
ich bin so ein Anfänger (71), habe mir die c’t 2/2018 und wollte damit die S20-Steckdose programmieren, damit ich nicht über die China-Cloud muß. Habe mir den FTDI232 gekauft, entsprechend angesteckt (RxD und TxD überkreuz) und wollte den Sketch übertragen –>
Archiving built core (caching) in: C:\Users\Gerry\AppData\Local\Temp\arduino_cache_138535\core\core_esp8266_esp8266_generic_CpuFrequency_80,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_dout,FlashSize_512K0,led_2,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,FlashErase_none,UploadSpeed_9600_5228286f78f342cac73ec73fb8d1348b.a
Der Sketch verwendet 246403 Bytes (49%) des Programmspeicherplatzes. Das Maximum sind 499696 Bytes.
Globale Variablen verwenden 32280 Bytes (39%) des dynamischen Speichers, 49640 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Kannst Du mir helfen das Ding in Gang zu bekommen? Du hattest etwas über die vielleicht nicht passenden Pegel geschrieben. Welches Programmierboard müßte ich mir dann noch kaufen?
Vielen Dank im voraus für Deine Hilfe,
es grüßt Dich Gerhard aus Wittenberge
Hallo Gerhard,
Du brauchst eigentlich noch ein wenig „Zeug“ zwischen dem ESP auf dem S20 und dem FTDI. Zum einen gibt der FTDI 5V aus; der ESP verträgt nur 3.3V. Falls Du den FTDI auf 3.3V schalten kannst, dann ist das für den FTDI eigentlich jenseits der Spezifikation (50mA; ESP braucht im Schnitt 80mA). Kann klappen, muss aber nicht. Weiterhin musst Du den ESP in den Programmiermodus versetzen. Das ist oben beschrieben („Taster auf Sonoff Board drücken“ usw).
Die von Dir geposteten Fehlermeldungen kommen dann, wenn die serielle Kommunikation nicht klappt. Kann daran liegen, dass der Port nicht richtig gewählt ist, die Verkabelung nicht stimmt, der ESP nicht genug (oder zuviel) Saft bekommt oder eben nicht im Programmiermodus ist.
Good luck
Stefan
Und wichtig ist, die neuen Sonoffs (Gerade die TH10 und 16) brauchen zum flaschen einigs mehr an Einstellungen – da 2018 wohl Änderungen gab. (Siehe verlinkte Webseite)
Versuch es erstmal mit deinem FTDI ohne weitere Elektronik dazwischen – hat mit meinem Adapter ohne Kummer geklappt, wichtig ist nur: 3,3V sonst ist der Sonoff Tot.
Ich habe hier etwas zum lesen für dich (Ich hoffe das ist OK für den Admin hier – dient ja der ‚Wahrheitsfindung‘)
http://www.schlumpfontour.de/tasmota-sonoff-th10-th16-v-2018-mit-arduino-ide-flaschen-einstellungen-beachten_3006
PS: Ich finde es super, das man sich mit 71 Jahren da noch dran wagt.
Zur Not, darf der Artikelautor das unten verlinkte Bild von meiner Webseite kopieren und bei sich einbinden.
http://www.schlumpfontour.de/wp-content/uploads/2018/06/xSonoffTH10-TH16-ArduinoIDE-Einstellung.jpg.pagespeed.ic.moJNXbuOyb.jpg