OBI WLAN Steckdose/Zwischenstecker mit ESP8266

Begonnen von gloob, 30 Juli 2018, 13:16:38

Vorheriges Thema - Nächstes Thema

Pfriemler

#165
OBI-Steckdose ent"cloud"en - Versuch einer Zusammenfassung

Im Frühjahr 2018 brachte ausgerechnet die Baumarktkette OBI einen WLAN-Zwischenstecker auf den Markt, mit der üblichen Cloud-Pflichtanbindung an einen fraglichen Anbieter. Das besondere an diesem Produkt ist, dass es einen sehr gebräuchlichen WLAN-fähigen Controller beinhaltet, und dass es sehr preiswert ist. Software, um diesen Controller zu programmieren, ist weit verbreitet und es gibt diverse Erweiterungsmöglichkeiten. Der Verdacht der Datenspionage, Zuverlässigkeitsfragen, Zukunftssicherheit etc. wecken zusätzlich den Wunsch, die Kontrolle selbst zu übernehmen.

Vorweg:
Die hier beschriebenen Modifikationen benötigen nur durchschnittliche Elektronik- und Computerkenntnisse. Man muss dazu nicht programmieren können, es ist nicht einmal die frei verfügbare Entwicklungsumgebung nötig. Die einzigen Spezialwerkzeuge sind ein passender USB-seriell-Wandler mit den passenden Verbindungskabeln und ein seltener Schraubendreher. Es ist allerdings erforderlich, den Stecker zu öffnen und an später Netzspannung führenden Teilen zu manipulieren. Während der Modifikationen muss der Stecker unbedingt und immer vom Stromnetz getrennt sein, ansonsten besteht Lebensgefahr und das Gerät und weitere Komponenten werden mit Sicherheit zerstört!. Auch eventuelle Messungen am geöffneten Gerät erfordern besondere Kenntnisse und Sorgfalt. Man hat nur ein Leben!

Ziele des "Hacks":
A) Aufspielen einer neuen Software zur "cloudlosen" Steuerung. Beispielsweise "Tasmota" oder "ESPeasy" liegen als fertige Firmware vor.
B) (optional) Verringerung des Strombedarfs des Steckers durch Manipulation der Hardware
C) (optional) Einbau eines Messmoduls zur Erfassung von Spannung, Strom und Leistung des angeschlossenen Verbrauchers. Dieses Modul ist aber nicht frei erhältlich.

Benötigt werden:
1. ein Triwing-Schraubendreher (Bsp.: Amazon). Wird u.a. in gut sortierten Baumärkten verkauft. Größe um 3 mm ist passend. Schaft muss lang genug sein, Bits aus dem Spezialbitsatz sind oft zu kurz und müssen "nachbearbeitet" werden.
2. ein serielle Schnittstelle oder ein USB-Seriell-Wandler. Dieser muss mit 3,3-V-Logik arbeiten. Idealerweise hat er einen passenden Wandler an Bord. Solche Stecker sind für unter 10 Euro zu bekommen. Sie sind unter Windows und Linux nutzbar, sogar am Raspi. Anschluss, Treibereinrichtung und die Verwendung zu erläutern führt an dieser Stelle zu weit, aber es gibt im weiten Netz Dutzende passender Beschreibungen, auch auf Deutsch. Alles, was bezüglich der beliebten "Sonoff"-Module diesbezüglich im Netz zu finden ist, ist weitgehend übertragbar.
3. eine 7-polige (für den Hack C) eine 9-polige) Stift oder Buchsenleiste sowie die passenden ausreichend langen Verbindungskabel zum Programmieren
4. für B) ein Widerstand 220 kOhm oder 120 kOhm und ggf. ein bisschen Draht oder Drahtbrücke
5. für C) eine zusätzliche Platine mit HLW 8012 zur Leistungsmessung, Beispiel: bei Elektrodragon

A) Aufspielen einer neuen Firmware

Schritt 1: Öffnen des Gehäuses
Auf der Steckerseite des Zwischensteckers befinden sich zwei kleine Triplewing-Schrauben. Diese mit den o.g. Schraubendreher entfernen. Dann mit einer alten Scheckkarte oder einem vergleichbaren Plastikwerkzeug das Gehäuse auf einer Längsseite leicht aufhebeln und rundum aufklipsen (geht ziemlich leicht). Steckdosentopf entfernen.
Eine dritte kleine Kreuzschlitzschraube hält die Platine. Diese lösen und die Platine anheben. Nun kommt man an alles gut heran.
Fotos der offenen Dose im Beitrag #9 oder im Github zu Tasmota

Schritt 2: Vorbereiten zum Flashen (Programmieren)
Nun muss der Programmieradapter mit dem Controller verbunden werden. Dazu empfiehlt es sich, eine Stecker- oder Buchsenleiste dauerhaft einzulöten. Auf den Fotos in Schritt 1 sind zwei Beispiele gezeigt.
Die zu tätigenden Verbindungen sind leicht zu finden. Kleine Stolperfalle: Zwischen RxD und TxD liegt noch (etwas unüblich) ein Ground-PIN. Daneben sind GPIO0 und VCC erforderlich. Die Versorgungsspannung für den Adapter kommt im Idealfall vom USB-Seriell-Wandler selbst. Weiterführende Infos ggf. im Netz suchen.
GPIO0 sollte temporär steckbar ausgeführt sein, für die erste Inbetriebnahme sollte man GPIO0 tastbar machen.

Schritt 3: Firmware und Softare zum Flashen vorbereiten
Zum Flashen gibt es gewiss ein Dutzend verschiedene Tools und Wege, vom esptool.py unter Linux bis zu PlatformIO oder die Arduino-Entwicklungsumgebung. Nachfolgend ist das aus Sicht des Autors einfachste Tool erläutert.
Tasmota ist über Web und MQTT steuerbar (auch aus FHEM) und bietet stabile Unterstützung für Leistungsmessungen sowie zwei Emulationen anderer Geräte, mit denen man die Steckdose später direkt (ohne FHEM) über Alexa steuern kann.
Erste Informationen zu Tasmota findet man hier (Einstieg).
Fertig kompilierte Binary-Files in diversen Landessprachen findet man hier, dort z.B. nach "sonoff-DE.bin" suchen. (Neue Versionen erscheinen regelmäßig, deswegen ist eine direkte Verlinkung hier nicht sinnvoll).
ESPeasy ist die mehr universelle Software für den WLAN-tauglichen MikroController ESP8266, kann aber auch für die OBI-Steckdose verwendet werden. Zur Steuerung stehen hier wieder eine interne Web-Oberfläche und von FHEM aus MQTT oder das Modul 34_ESPEasy.pm
zur Verfügung.
Die neuesten Versionen von ESPeasy sind direkt hier zu finden. Wenn man sich das ganze Package herunterlädt, findet man darin diverse Binarys. Für die OBI-Steckdose ist die mit der Endung "..._normal_ESP8266_1024.bin" optimal: Stable, auf 1 MB Flash optimiert (mehr hat der Controller im OBI-Stecker nicht).

ESPeasy bringt auch ein minimalistisches Flashtool für Windows mit, welches auch für die Tasmota-Firmware geeignet ist. "FlashESP8266.exe" ist das grafische Frontend für "esptool.exe". Beide und die passende Firmware kann man sich unter Windows in ein separates Verzeichnis kopieren und von dort ausführen. Möchte man Tasmota nutzen, kopiert man dessen fertiges Binary einfach dazu. Hinweis: Benennt man die Firmware der Übersichtlichkeit halber um, darf man keine Leerzeichen verwenden - anderenfalls klappt die Parameterübergabe zu esptool.exe nicht.

Das Flashen ist natürlich auch mit jedem anderen geeigneten Tool möglich, wie etwa dem beliebten NodeMCU-Flasher.

Schritt 4a: Firmware unter Windows flashen
Zur Erinnerung: Der OBI-Stecker darf auch jetzt keinesfalls mit Netzspannung versorgt werden, sonst gibt es einen ziemlichen Knall und man darf sich zumindest einen neuen OBI-Stecker und möglicherweise auch einen neuen PC kaufen. Der Flashbaustein muss anderweitig oder über den USB-Wandler versorgt sein.
Am unter 3. vorbereiteten Verbund von USB-Wandler und OBI-Platine brückt man nun GPIO0 und GND und steckt den USB-Wandler in den PC.
Der USB-Wandler erzeugt eine neue serielle Schnittstelle in Windows (COMx). Nun startet man "FlashESP8266.exe" und wählt einfach COM-Port und die entsprechende Firmware in Dropdown-Feldern aus. Mit dem Button "Flash" startet der Vorgang. Im Idealfall öffnet sich ein kleines Terminalfenster und erzeugt viele Hinweise. Kommen irgendwann nur noch viele Punkte in Zeilen und an deren Ende eine Prozentzahl, sieht es schon mal seeehr gut aus...
Unabhängig vom Erfolg endet das Programm mit "Flash Complete".

Schritt 4b: Firmware unter Linux flashen - Beitrag von Werniemann - vielen Dank!
1. esptool.py besorgen - z.B. von git: https://github.com/espressif/esptool
2. prüfen ob Verbindung möglich ist (könnte übersprungen werden). Pfad zum USB-Wandler (hier /dev/ttyUSB0) muss vorher geprüft und ggf. geändert werden!
./esptool.py --port /dev/ttyUSB0 flash_id
esptool.py v2.4.0-dev
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Manufacturer: e0
Device: 4014
Detected flash size: 1MB
Hard resetting via RTS pin...

Wenn anstatt obiger Ausgabe nur "..." und "___" zu sehen sind, hat etwas nicht geklappt. Bitte Verkabelung und Seriellen-Konverter prüfen!
Da der Controller nicht automatisch resettet werden kann, bitte selber resetten, z.B. durch "strom-weg"
3. Flashen (Firmwaredatei hier als Beispiel)
./esp/esptool/esptool.py --port /dev/ttyUSB0 write_flash -fm dio 0x00000 ESP_Easy_mega-20180818_normal_ESP8266_1024.bin

Hinweis wie oben: Nur ein maximal 1 MB großes Binary passt in die OBI, gar nicht erst eine 4-MB-Version (_4096) versuchen!
Wenn die Datei in einem anderen ordner liegt, bitte Pfad anpassen
4. wir sind fertig!
Möglicherweise muss auch hier zunächst die Flashbereitschaft durch eine Brücke von GPIO0 an GND hergestellt werden.

Schritt 5: erste Inbetriebnahme
Nun den USB-Wandler ausstecken und die GPIO0-Brücke entfernen. Anschließend den USB-Stecker wieder einstecken.
ESPeasy spannt nun einen eigenen Accesspoint auf, mit dem man sich optimal per Handy oder Laptop mit WLAN verbinden kann. Das abverlangte Passwort ist "configesp".
Tasmota kann das auch, muss aber erst einmal dazu gebracht werden. Die sogenannte Button usage listet die bei Sonoff-Modulen mögliche Tastenbetätigung auf - in unserem Fall ist aber der Button der Steckdose leider nicht mit GPIO0 verbunden. Also benutzt man die Brücke noch einmal, um den Modus einzustellen. Vier kurze "Tippse" (etwa innerhalb einer Sekunde funktioniert gut) bringen Tasmota in den Wifi-Manager-Mode.

Die Versionen 6.2ff von Tasmota starten statt mit WPS default mit dem Wifi-Manager. Das Brückengetipsse ist nicht mehr erforderlich!
Hier kann man nun auch nach einem neuen WLAN suchen und sich verbinden, 192.168.4.1 aufrufen (es ist kein Passwort erforderlich) - der Rest ist selbsterklärend bzw. kann nachgeschlagen werden.

Schritt 6: Grundkonfiguration des Gerätes
Hat man bis hierher alle Hürden genommen, meldet sich der Stecker nun im ausgewählten WLAN an und bekommt per DHCP eine IPv4-Adresse zugewiesen, die man im Browser aufrufen kann. Allerdings ist der Stecker nun noch nicht einsatzbereit, man muss ihn zunächst konfigurieren. Für Tasmota ist dies ebenfalls im Tasmota-Github beschrieben. Kurzgefasst: Unter "Einstellungen > Gerät konfigurieren" ist als Gerätetyp "18 Generic" auszuwählen und zu speichern. Anschließend sind GPIO4 auf "xx LED 1", GPIO5 auf "xx Relay 1", GPIO12 auf "xx LED 2" und GPIO14 auf "Button 1" zu setzen, alle anderen "00 None".
xx ist dabei inzwischen anders als im Tasmota-Wiki (etwa vier Zähler mehr), weil neue Portdefinitionen unten eingefügt wurden - ist aber egal, die Bezeichnung ist wichtig.
Die Konfiguration auf MQTT ist eine eigene Wissenschaft, hier wird auf andere Quellen verwiesen.
Erwähnenswert ist noch die "Sonstige Konfiguration". Hier kann man einen "friendly name" als Anzeigenamen einstellen. Wählt man als Emulation hier "Belkin WeMo" und lässt nach dem Speichern anschließend seine Alexa nach neuen Geräten suchen, ist die Steckdose dort ratzfatz eingebunden.
Tasmota bietet darüber hinaus noch eine Menge zusätzlicher Feineinstellungen. So kann man beispielsweise einstellen, dass die Steckdose nach einem Stromausfall nicht automatisch in den Ursprungstand zurückkehrt, sondern immer ausgeschaltet bleibt. Außerdem lässt sich sehr einfach eine manuelle IP dauerhaft festlegen. Details siehe z.B. hier.

B) Stromverbrauch optimieren

Der OBI-Stecker benutzt ein einfaches Schaltnetzteil mit zwei Sekundärwicklungen - eine davon zur Regelung, die zweite zur Versorgung der Elektronik. (Schaltbild im Beitrag #122). Im Auslieferzustand erzeugt das Netzteil eine sekundäre Spannung von etwa 6,5 Volt. Ein einfacher Linearregler erzeugt daraus 3,3 Volt für den Controller.
Das Relais wird über eine bistabile Schaltung mit Thyristor angesteuert (Schaltbild im Beitrag #137). Diese Schaltung hat einen zusätzlichen Spannungsbedarf von etwa 1 Volt, so dass das 5-Volt-Relais tatsächlich nur etwas mehr als 5 Volt "abbekommt".
Unter Tasmota wird diese Schaltung so jedoch nicht verwendet, die Konfiguration der in dieser Anwendung eigentlich gar nicht benutzten "LED 2" auf GPIO12 zieht das Signal "Relay On" dauerhaft auf GND und die Schaltung des Relais erfolgt statisch über "Relay Off". "LED 2" muss daher unbedingt gesetzt sein.
Die blaue Netzwerk-LED wird als Anzeige für den Tasmota-internen Status des Relais verwendet. Man kann sie auch deaktivieren, wenn man GPIO4 auf "none" setzt. Das spart aber praktisch keinen Strom, ist aber eine willkommene zusätzliche Funktionskontrolle. Eine Statusanzeige etwa zum WLAN wäre willkommen, wurde aber vom Autor in den Untiefen des Tasmota noch nicht gefunden ...  ???
Die rote LED im Button ist hardwaretechnisch mit dem Betrieb des Relais gekoppelt und nicht separat ansteuerbar.

Optimierungsmöglichkeiten:

Hack 0: Schlafmodus aktivieren
Tasmota besitzt einen "sleep"-Parameter, mit dem man die Dauer eines je nach Ablauf möglichen Schlafzustands festlegen kann. Als praktikabel haben sich 50 ms ergeben, während mit 250 ms die Steckdose völlig unbedienbar wird und auch den Kontakt zum WLAN verliert.
Setzt man in der Konsole der Weboberfläche "sleep 50", so erericht man eine Einsparung von etwa 0,3 Watt.

Hack 1: Lastwiderstand entfernen
R12 im Netzteil erzeugt eine Art Mindestlast für das Schaltnetzteil. Die restliche Schaltung zieht aber stets genug, so dass dieser unnütze Verbrauch entbehrlich ist. Das Auslöten von R12 hat sich als schwierig herausgestellt, weil der Widerstand gut verklebt ist. Stattdessen kann man auch einfach eine Leiterbahn durchtrennen, siehe Foto zu Hack 2.

Hack 2: Sekundärspannung verringern
Das Widerstandsverhältnis von R10 und R6 beeinflusst das Regelverhalten des Schaltnetzteils und damit die Sekundärspannung. Lötet man parallel zu R10 einen Widerstand von 220 kOhm, so ändert sich die Sekundärspannung. Der Autor hat hier zwei SMD von 240K und 1M parallel angelötet. Siehe Foto zu Hack 2. Es ist aber auch ein normaler Widerstand wie im Foto zu Hack 3 möglich.
Das Relais wird nun nur noch mit etwa 4 Volt angesteuert, was aber für einen sicheren Betrieb immer noch ausreicht.
Diese 5V Spannung sind dann bereits Voraussetzung für die Anwendung des Hacks 4.
Hack 1 und 2 ersparen etwa 0,4 Watt im Standby und 1 Watt bei angezogenem Relais!

Hack 3: Sekundärspannung weiter verringern
Schaltet man parallel zu R10 einen Widerstand von 120 kOhm, verringert sich die Sekundärspannung weiter auf 4,5 Volt. Hier kommt der Linearregler für den Controller an seine Grenzen, die Spannung sinkt bereits minimal um etwa 0,02 Volt ab, aber der Betrieb ist weiterhin sicher. Für das Relais ist die Spannung nun aber zu niedrig. Als schnelle Hilfe bietet sich das Brücken des Thyristors TG1 an. Beides ist im Foto zum Hack 3 gezeigt.
Nebenwirkungen: Die Frequenzen des Schaltwandlers verändern sich derart, dass der Autor das Geräusch auch bei geschlossenem Gehäuse als unangenehm empfindet. Außerdem leuchtet die rote LED deutlich heller - was aber kein Problem ist.
Hack 3 bringt nochmals etwa 0,1 bzw. 0,2 Watt

Die Kombination dieser Hacks drückt die Steckdose von 1 bzw 2,3 Watt (Standby, eingeschaltet) auf 0,2-0,4 bzw. 0,9-1,2 Watt (die sleep-Einstellung macht den Verbrauch variabel).

C) Messmodul zur Leistungsmesung einbauen = Hack 4:
Hier sei auf den Beitrag #163 und #164 verwiesen.
Erwähnt sei an dieser Stelle, dass es im weiten Netz inzwischen auch WLAN-Steckdosen mit eingebauter Leistungsmessung gibt, die von Tasmota bereits unterstützt werden und der Aufpreis kaum größer als für das zusätzliche Messmodul ist.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

RappaSan

#166
Prima Anleitung, das flashen über die Arduino IDE hat auf Anhieb geklappt.
Nicht wichtig, aber der Vollständigkeit halber:
Wie bekomme ich die Steckdose denn über Alexa eingebunden? Das will hier einfach nicht gelingen. Welchen Skill muß ich in Alexa wie aktivieren? Weder Wemos noch Hue funktioniert bei mir. Wemos findet keine devices in meinem Netzwerk. Die Hue app sieht zwar die Steckdose als Lampe an, aber kommt dann mit der Meldung "Es können keine Standardszenen erstellt werden, weil Ihre Hue Bridge voll ist."
Eine genaue Anleitung wäre bestimmt hilfreich.

Ich benutze hier die Reverb-app. Liegt's eventuell daran?

TomLee

#167
Wenn du kein alexa-fhem nutzt ist unter Einstellungen -> Sonstige Konfiguration bei Name [friendly name] eigentlich nur ein Name, welcher später genutzt werden soll, zu vergeben und bei Emulation das Optionsfeld vor Belkin Wemo zu aktivieren. Natürlich nach der Konfiguration eine neue Gerätesuche in Alexa anstossen.

Es muss kein Skill aktiviert werden.

RappaSan

Nö, das klappt nicht. :(
Alexa sucht sich hier nen Wolf und findet nix.
Meldung:
Alexa sucht nach Geräten. Dies kann bis zu 20 Sekunden dauern.
Nix passiert, nix wird gefunden. Weder bei WeMo noch bei Hue Bridge.

TomLee

Möglicherweise weil das Gerät schon vorhanden ist ?

Oder einfach mal alle vorhandenen Geräte löschen und neu suchen.

Ist hier aber leicht OT. Mach nen neuen Thread auf, wenns nicht klappt.

RappaSan

Gar kein Gerät da.
Alexa ist mir aber auch nicht wirklich wichtig, eher Spielerei.
Dafür lohnt kein neuer Thread...
Aber Danke für die Unterstützung.

RappaSan

Bei mir weicht die Zeit auf den Steckdosen immer um 1 Std. von der richtigen Zeit ab:

setup {"Time":"2018-09-03T08:59:39","Uptime":"0T19:32:18","Vcc":3.481,"POWER":"off","Wifi":{"AP":1,"SSId":"RAT01","RSSI":52,"APMac":"7C:FF:4D:27:8D:FD"}} 2018-09-03 09:59:39

Dementsprechend muß man andere Zeiten im Zeitplan einstellen, um das gewünschte Ergebnis zu bekommen.
Ist das normal?

Papa Romeo

...hast Du in TASMOTA die richtige Zeitzone eingestellt?
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

RappaSan

Ich hab in der user_config.h an den entsprechenden defines nichts verändert:
#define APP_TIMEZONE           1

Das sollte Amsterdam sein...

Version tasmota: 6.2

TomLee

Gib mal in der Konsole ein timezone 99 ein.

RappaSan

Aaah!  :)
Danke. Werd ich gleich auch in user_config.h ändern..

tndx

Zitat von: tndx am 14 August 2018, 20:32:52
Ich habe mittlerweile die HM-Platine eingebaut und Stromverbrauch gemessen: 0,4 W Standby / 1,7 W Relais angezogen. Zum Vergleich Original-eQ-3-HM-LC-Sw1-Pl-2 (alte Version mit "kurvigem" Gehäuse): 0,6 W Standby / 1,1 W Relais angezogen.

Ich habe heute bei meinem HM-Umbau (mittlerweile mit der HM-Platine aus dem Homematic-Forum) die Hardware Hacks 1 und 2 umgesetzt und danach den Stromverbrauch gemessen: 0,2 W Standby / 1,0 W Relais angezogen. Danke an Papa Romeo und Pfriemler für die tolle Arbeit!

Wernieman

Ich habe, trotz suche (Forum, Google), gerade den Überblick verlohren:
Weiß jemand, ob bei dem esp noch GPIOs "frei" sind? Und wenn, welche?

Brauche hier eine Steckdosen mit ein Paar "Erweiterungen" ..

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Pfriemler

#178
Laut #133 ist noch GPIO16 [edit]und GPIO13 frei.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Wernieman

DANKE .. genau den Schaltplan habe ich übersehen!

Eventuell könnte man dann auch noch etwas mit GPIO3/1 basteln .. wenn man nicht mehr flashen will
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html