Smarte WiFi-Steckdose S20 mit ESP8266

Ich habe mir die smarte WiFi-Steckdose S20 von itead bestellt.

Das Board in der Steckdose von vorne und hinten

Bei betrachten der Leiterplatte sieht man, dass ähnlich wie beim Sonoff Smart Switch ein AC/DC Konverter verbaut ist. Der Controller für die LEDs, den Schaltzustand und WiFi ist ein ESP8266. Der Programmier-Port ist auf 2,54mm Raster herausgeführt. So kann mit einem einfachen USB auf UART Kabel die Programmierung vorgenommen werden. Wichtig ist, dass zur eigenen Sicherheit die Programmierung nur vorgenommen wird, wenn das Board nicht in der Steckdose steckt!

Jetzt auf Amazon kaufen: Sonoff Smart Home WLAN Wifi Strom Schalter
Der Siebdruck zeigt, wie die Serielle Schnittstelle verbunden werden muss. Dazu kann entweder eine Stiftleiste eingelötet werden, oder eingepresst. Ich habe mich für die zweite Variante entschieden und eine 2,54mm Stiftleiste leicht mit der Zange verbogen, sodass die Pins nicht ganz sauber in einer Reihe sind, sondern leicht versetzt. So werden die Pins in den Löchern an die Oberfläche gedrückt und stellen eine Verbindung her.

Angeschlossen wird der USB auf UART Adapter wie folgt:

VCC – VCC
RX – TX
TX – RX
GND – GND

Wichtig ist, dass RX und TX also Receive und Transmit jeweils getauscht sind, nur so können die beiden Geräte miteinander kommunizieren. Um den ESP8266 in den Bootloader-Modus zu bringen, muss beim Power-Up der GPIO0 Pin auf Masse gezogen sein. Das ist beim S20 mit dem An/Aus Taster gelöst. Wenn der Taster gedrückt ist, wenn Spannung angelegt wird, schaltet der ESP8266 den Boot-Loader an und kann über die Serielle Schnittstelle programmiert werden.

Programmieren kann man den ESP8266 über viele Wege. Ich habe in einem früheren Blog-Post bereits davon gesprochen, dass ich mit hilfe der NodeMCU LUA Umgebung die Sonoff Smart Switches programmiert habe. Davon bin ich jedoch wieder weg, da ich kein vernünftig funktionierenden Update-Mechanismus hatte. Ich habe darauf hin dieses Projekt gefunden und erfolgreich bei mir eingesetzt.

So lässt sich mit diesen Schritten die S20 Smarte WiFi-Steckdose umprogrammieren.

Schritt 1: Firmware Image herunterladen

Ich habe heute versucht mit der aktuellesten Version der espurna Firmware ein Image zu erstellen. Das hat aber nicht funktioniert. Ich habe allerdings noch eins, das schon etwas älter ist, aber gut funktioniert. Das habe ich hier hochgeladen. Zum programmieren des S20 Controllers benötigt man beide .bin Dateien: fimware.bin und spiffs.bin. Das Programm mit dem die Firmware-Images auf den Speicher des S20 Boards geladen werden kann findet man auf GitHub, Ich habe idie Links für die 32bit und 64bit Version rausgesucht und kann ebenfalls unter dem Link gefunden werden. Ansonsten könnt ihr das Programm esptool verwenden. Das kann man auch im Internet kostenlos finden.

Schritt 2: S20 anschließen und Firmware hochladen

Wenn ihr die beiden Firmware Images und das Programmiertool heruntergeladen habt, müsst ihr nun ein Konsolenfenster öffnen und in das passende Verzeichnis wechseln.

Jetzt müsst ihr den passenden COM Port für das USB auf UART Interface finden. Ich verwende Linux und da heißt das Interface /dev/ttyUSB0 unter Windows heißt es COM16 oder eine andere Zahl.

Anschließend stecken wir das S20 Board mit gedrückter Taste an den USB Anschluss. Der ESP8266 startet jetzt im Bootloader-Modus. Das Programmiertool kann jetzt ein neues Firmware Image auf den Speicherchip laden.

Mit dem nodeMCU Firmware Programmer kann man unter Windows ganz einfach den ESP8266 programmieren. Dazu müsst ihr nur beide Images angeben und den Offset für das spiffs.bin Image eintragen.

Um mit dem esptool zu arbeiten, muss folgende Zeile im Konsolenfenster ausgeführt werden:

esptool -vv -cd ck -cb 115200 -cp „COM16“ -cf firmware.bin

Darauf hin wird das Firmware Image übertragen. Als nächstes müssen wir einen Reset durchführen, also USB Kabel wieder abziehen und erneut mit gedrücktem Taster einstecken. Jetzt ist der Controller wieder im Bootloader Modus und wir können das Dateisystem hochladen.

esptool -vv -cd ck -cb 115200 -cp „COM16“ -ca 0xbb000 -cf spiffs.bin

Danach ist das S20 Board komplett umprogrammiert und kann über ein eigenes Netzwerk erreicht werden.

Schritt 3: Netzwerk-Zugang einrichten

Wenn das S20 neu programmiert wurde, kennt es noch keine Netzwerk-Zugänge. Daher startet es im AP Modus. Das heißt, es erzeugt einen Access-Point. Dieser heißt S20-XXXXXX. Die X sind abhängig von der MAC Adresse des ESP8266 und bei jedem Gerät unterschiedlich. Es handelt sich um ein Netzwerk, dass mit dem Passwort „fibonacci“ gesichert ist.

Wenn ihr mit dem Netzwerk verbunden seid, könnt ihr unter der IP Adresse 192.168.4.1 das Admin-Interface der Smarten Steckdose finden. Dort können unter dem Punkt WIFI bis zu drei verschiedene Netzwerk-Zugänge angelegt werden. Wenn nach einem Neustart oder Verbindungsabbruch der ESP8266 eine neue Verbindung herstellen muss, werden diese drei Zugänge der Reihe nach ausprobiert. Wenn keine Verbindung erfolgt, wird wieder auf den AP-Modus ausgewichen.

Schritt 4: Schalten des Relays

Das Relay kann über mehrere Methoden geschalten werden. Die einfachste ist das Schalten über eine HTTP Adresse

http://192.168.0.145/relay/on 
http://192.168.0.145/relay/off

Die IP-Adresse ist natürlich an die Adresse der S20 Steckdose anzupassen.

Die Software bietet auch die Möglichkeit in ein MQTT Netzwerk integriert zu werden. Das verwende ich bei mir den damit kann man viele verschiedene Geräte mit einem gemeinsamen Protokoll zu verwalten. Im Admin-Interfache der Steckdose findet man auch den Punkt MQTT. Dort können die Zugangsdaten für den MQTT Server eingetragen werden. Die Software verbindet sich dann automatisch mit dem Broker und die Steckdose kann über MQTT Nachrichten gesteuert werden.

Sparkcube V1.1 XL Build Aufbaulog Teil1

Die Teile für meinen neuen Drucker sind endlich gekommen. Nach etwa einem Monat Lieferzeit sind jetzt alle Teile aus den verschiedenen Quellen eingetroffen. Der Aufbau der Sparkcube XL ist von Sparklab in einigen Videos dokumentiert:

Nach dem ich mich an den Videos orientiert habe stand das grobe Gerüst nach etwa einem Tag.

Die Elektronik und den Extruder werde ich selbst anbringen. Daher habe ich noch ein paar weitere 3D gedruckte Teile gebraucht. Das vorerst fertige Ergebnis sieht schon mal aus wie ein 3D-Drucker. So weit so gut.

Jetzt zu den Dingen, die noch fehlen, verbesserungswürdig sind oder einfach schlichtweg nicht funktionieren.

Z-Achse & Druckbett

Das Druckbett ist auf einem T-förmigen Träger angebracht. Die drei Ecken des Trägers haben jeweils eine eigene Gewindespindel. Rechts und links sind die Gewindespindeln noch durch Linearführungen unterstützt. Somit ist es möglich die Ebene beliebig (in gewissen Grenzen) im Raum zu platzieren. Idealerweise natürlich parallel zu der XY-Ebene der Extruderspitze. Das ist in diesem Video schön gezeigt. Nachteil ist, dass man für jeden der Motoren der Z-Achse einen eigenen Treiber am Mainboard benötigt. Im Moment ist ein Schrittmotor Treiber für die drei Motoren zuständig. Das läuft ok, aber nicht 100%ig zufriedenstellend. Ein Ausrichten des Druckbetts geschieht mit den 3 Schrauben, die für ein manuelles Anpassen vorgesehen sind.

Extruder

Ich möchte, dass der Drucker mit zwei Extrudern bestückt ist, die idealerweise zwei unterschiedliche Kunststoffe ausdrucken können. So können einerseits Stützstrukturen besser entfernt werden, andererseits können Verbundwerkstoffe erzeugt werden. Beispielsweise ABS Gehäuse mit Gummierter Außenseite. Im Moment ist an dem Drucker lediglich ein einzelner Extruder angebracht. Um einen zweiten anzubringen muss ich zuerst den XY-Schlitten neu designen. Die Energiekette bringt bereits genügend Leitungen und Stecker mit um ein weiteres Hotend zu betreiben.

Firmware

Als Firmware wird Marlin verwendet. Marlin hat eine Vielzahl von Konfigurationsmöglichkeiten und schier unendliche Komplexität. Ich habe bis jetzt nur die Oberfläche angekratzt und habe es noch nicht geschafft, dass alle Funktionen so funktionieren wie erhofft. Unter den fehlenden Funktionen sind: 3 Motoren für Z, WiFi über das Modul auf der Hardware, Lüftersteuerung für das Hotend.
Ich habe das von ST erzeugte Projekt kopiert und werden alle meine Änderungen auf GitHub veröffentlichen. Vor allem möchte ich das Einstellen der Z-Achsen wie im Video oben gezeigt gerne auch in der Software haben.

Hardware

Wenn die oben beschriebenen Funktionen umgesetzt werden sollen, bringt das die Hardware von ST an Grenzen. Wie genau die Funktionen erweitert werden können bin ich mir noch unsicher. Für den Drucker mit zwei Extrudern ergeben sich folgende Anforderungen:
  • 2 Motoren für XY
  • 3 Motoren für Z 
  • 2 Motoren für Extruder
  • 2 FETs für Hotends
  • 1 FET für das Heizbett
  • 3 Thermistor Eingänge
  • 3 Endschalter Eingänge
  • optional 2 Eingänge für Filamentsensoren
  • optional 2 weitere Endstops für Z
  • optional 5 weitere Endstops für jeden Achstenmotor als maximum Stop.
Features der Hardware sind:
  • 6 Motortreiber
  • 3 Extruder
  • 3 Extruder FETs
  • 3 Hotend FETs
  • 3 Extruder Thermistoren
  • 3 Hotend Thermistoren
  • 6 Endstops
  • 1 Erweiterungsstecker
    • 6 Endstops
    • 3 NTCs
    • SD Card Interface
    • SPI Interface
    • USB Interface
    • UART Interface
    • I2C Interface
    • 4 GPIOs
    • 5V and 3V3 Power
Die Interfaces des Erweitungssteckers liefern genügend Signale um die benötigten Features nachzurüsten. Es sollte als möglich sein mit dem STEVAL-3DP001V1 einen voll funktionsfähigen 3D Drucker mit allen benötigten Funktionen zu erstellen. Und das Beste daran: das Board kostet nur 
116$

Neuer Drucker auf STM Cortex M4 Basis

Das sind bis jetzt die Teile, die sich bei mir eingefunden haben um den Sparkcube 1.1XL du bauen. Es wird wahrscheinlich nicht eine komplette Nachbildung des originalen Sparkcube 1.1XL, sondern ich werde die Elektronik auf diesem Board basiert aufbauen: STEVAL-3DP001V1 Das Beispieldesign von ST für einen 3-D Drucker auf Basis der STM32 Cortex M4 Prozessors. Mal sehen, wie diese Hardwar im Vergleich zur Duet Hardware funktioniert.

Es fehlt noch ein bisschen was, aber ich sollte demnächst mit der Mechanik beginnen können.

GreenPAK5 im DIL-20 Pinout – Adapterboard

Ich habe die Silego GreenPAK Chips entdeckt. Das sind super kleine (2x3mm, 20 Pins), günstige programmierbare Logik-Chips mit OTP Konfiguration. Einziger Nachteil: Sie sind super klein. Der OTP (One Time Programmable) Speicher hilft nicht gerade bei der Entwicklung, da ein Chip immer nur einmal programmiert werden kann. Daher habe ich für Entwicklungszwecke ein paar kleine Adapterboards erstellt. Auf jedem Board ist jeweils ein GreenPAK Chip aufgelötet und jeder Pin geht an eine Pfostenleiste. Das Beste daran ist, dass die Pfostenleisten im DIP-20 Standard-Abstand platziert sind. Somit passt das Adapterboard perfekt in ein Steckbrett/Lochraster/IC-Sockel. Das macht die Entwicklung der Außenbeschaltung für den Logik-Teil viel einfacher.
SLG4653X -Adapterboards, sowie Programmieradapter

Das originale Programmierboard kann verwendet werden. Dafür gibt es das kleine Board mit der Pinleiste und dem IC-Sockel drauf. Jetzt kann ich mit dem Simulationstool die Logik entwickeln und mit dem Adapter eine elektrische Schaltung drumherum bauen, die nicht immer einen neuen Chip verpasst bekommen muss. Wenn ich dann alle Adapterboards programmier habe, muss ich lediglich die Chips darauf tauschen.

Ich bin gerade in der Vorbereitung ein paar Beispielschaltungen mit dem Chip zu realisieren.

Das Projekt ist hier auf Github zu finden: https://github.com/DasBasti/SLG4653-DIP20-Adapter

Ein ganzer Haufen Boards

Neuauflage von Herbert mit einem neuen Automatisierung Controller

Eine weitere Neuauflage von Herbert mit einem neune Automatisierung Controller. Die Hardware ist gleich geblieben, geändert hat sich die Software. Ein Raspberry Pi3 mit dem originalen 7″ PCAP Display sind das Gehirn. Die Steuerung übernimmt Home Assistant. Die Software ist diesmal nicht auf Basis von Java geschrieben, sondern basiert auf Python 3. Die Konfiguration passiert mit Hilfe von Textdateien im YAML-Format. Home Assistant kommt anders als davor PiDome nicht mit einer grafischen Benutzeroberfläche, sondern HTML5. Chromium im Kiosk-Modus ist die Anzeige Plattform.

Teilausschnitt der neuen Herbert Oberfläche

Mit Python als Sprache für den Controller kann ich jetzt auch selbst Änderungen an der Software vornehmen ohne mir Java antun zu müssen. Mein D-Link Smart Plug hat keine Unterstützung für die Anzeige des aktuellen Energieverbrauchs wenn es als Schalter eingebunden ist. Mit einigen Änderung konnte ich den aktuellen Verbrauch als Sensor anlegen. Jetzt habe ich zwar den Sensor, aber die Schaltfunktion ist wieder weg. Ups.

Die Sonoff Schalter, die die Lichter ein und ausschalten sind jetzt mit einer Firmware geflashet, die auf der Arbeit von Tinkerman basiert. Die von ihm geschriebene ESPurna Software lässt sich mit platform.io erzeugen. Ein paar kleine Änderungen habe ich dennoch eingebaut. Der Schaltzustand ist beim Einschalten der Stromversorgung „An“ und nach Verbindung mit der MQTT Server wird er alte Schaltzustand wieder hergestellt. So kann man bei einem Ausfall die Lichter alle wieder einschalten. Das ist mir nämlich passiert, als ich aus versehen ein nicht funktionierendes Firmware-Update auf alle Geräte gepusht habe. Ups.

Jetzt fehlt eigentlich nur noch die Funktion das Display auf Nachtmodus zu stellen, denn der neue, weiße Hintergrund ist nachts ziemlich hell.

Das Thermometer ist mit einer eigenne Firmware bestückt. Allerdings zeigt es in der Letzten Zeit immer mal wieder 100% Luftfeuchte. Wir sind doch nicht in den Tropen. Vielleicht sollte ich den Sensor Regen geschützt anbringen. Ups.

Sketchy Amazon Package, mein langer Weg zu mehr Speicher

Heute wollte ich einen weitern Versuch starten den internen Speicher von meinem Handy zu vergrößern. Android 6 kann nativ SD Karten als Speichererweiterung verwenden. Als erstes habe ich es mit einer SanDisk Ultra versucht. Die 64GB wurden erkannt und formatiert. Das ganze hat eine Woche wunderbar funktioniert. Dann hat sich die Karte immer weider abgemeldet und zum Schluss hat sie einfach überhaupt nicht mehr funktioniert. Ersatz war dann eine Lexar 64GB Karte. Die hat überhaupt nicht funktioniert und ist jetzt im Herbert Projekt untergekommen.

Kurz darauf habe ich es mit einer 8GB Transcend Karte versucht, die ich noch hier rumliegen hatte. Siehe da, die hat mehrere Monate gehalten. Ob es daran lag, dass die 8GB Karte anders funktioniert als die 64GB Karte weiß ich nicht, aber jetzt geht auch die nicht mehr.

Jetzt versuche ich es einmal mit einer Industrial Grade Transcend SD Karte. Die habe ich heute von Amazon bekommen. In dem typischen Amazon Pappkarton war dann diese verdächtig aussehende Schachtel

Der Aufkleber mit dem Barcode war genau so lose über die Verpackungsklappe geklebt wie auf dem Bild zu sehen. das Siegel, das durch den Aufkleber verdeckt war wurde schon einmal geöffnet. Der Inhalt war dann dementsprechend ernüchternd… Keine SD Karte drin.

Nach kurzen Warten (Amazon Warteschleifen sind nur 2 Minuten lang!!!) habe ich von Amazon direkt eine Ersatzlieferung bekommen.

Shit! Wasserschaden in meiner Uhr + Pebble Time Round teardown

Heute habe ich es endlich geschafft meine Uhr mit in die Waschmaschine zu stecken. Nachdem sich in der Vergangenheit höchstens meine Autoschlüssel in der Wäsche wiedergefunden haben war heute meine Pebble Time Round dran. Das große Problem dabei: Die verdammte Uhr ist nicht wasserdicht!
Die Uhr war zu dem Zeitpunkt als sie in die Maschine kam nicht mehr geladen, ich hoffe das durch die lange Liegezeit der Akku so weit entladen ist, dass die LiPo-Schutzelektronik abgeschaltet hat. Somit sollte die Schaltung stromlos gewesen sein. Also Deckel abhebeln und trocknen lassen. Dafür gibt’s hier ein paar schöne Bilder des Innenlebens. Erstaunlich, wie viel Funktionen auf kleinstem Raum untergebracht ist und wie lange der Akku (0,22wh) hält.

Die Elektronik hat keinen offensichtlichen Schaden abbekommen, das heißt keine Stellen mit übermäßiger Oxidation, geplatzte Chips oder verschmorte Kondensatoren. Jetzt heißt es Daumen drücken… Sie geht wieder! ich habe sie komplett trocknen lassen und dann wieder zusammen gebaut und aufgeladen. Zum Glück. Ich wollte nicht unbedingt wieder zurück zur alten Plastik Pebble.

Herbert Update

Es geht weiter mit meinem kleinen Hausautomation-System Herbert. Es sind im Moment einige 220V Schalter eingebunden und einige Szenen festgelegt. Die Schalter sind hauptsächlich für Lichter verwendet. Im Arbeitszimmer habe ich die 3D Drucker und den PC angeschlossen. Uhrzeit kommt vom Raspberry Pi, der auch das Display betreibt. Das Wetter kommt von der OpenWeatherMap
Die Sonoff Geräte mit einer bearbeiteten Firmware sind die Schalter für die Netzspannung. Ich habe mich für die Hardware entschieden, da sie bereits ein Netzteil mitbringt und daher komplett autark vor die Lampe, oder in die Stromleitung angeschlossen werden kann. Zu empfehlen ist das allerdings nur bei Geräten der Schutzklasse II, also solche, die mit einem Flachen Eurostecker bedient werden. Die Sonoff-Schaltung hat keine Anschlüsse für den Schutzleiter!

Für Geräte mit Schutzleiter (alles was berührbare leitende Flächen hat) muss der Schutzleiter separat um den Schalter geführt werden.

Was ich als nächstes gerne machen möchte ist ein kleineres Gerät mit Display und Touchscreen bauen, dass über WLAN mit dem PiDome Server von Herbert sprechen kann und so etwas ähnliches wie die Hauptkonsole darstellen kann.