Hallo,
ich werde hier nach und nach Infos zum Umbau der Funksteckdose von OBI mit dem WLAN ESP8266 Chip posten und auch ein Arduino Programm, was die Steckdose direkt mit dem ioBroker verbindet. Es soll extra kein Tasmota oder sonst eine Universal - Firmware werden.
ACHTUNG! Dieser Umbau darf nur von elektrotechnischen Fachkräften ausgeführt werden. Das Gerät arbeitet mit 230V und das kann lebensgefährlich werden, wenn ihr nicht genau wisst, was ihr tut. Wir arbeiten während des gesamten Vorgangs allerdings nicht an den 230V, sondern mit einem Netzteil bei 3,3 V !
Aber fangen wir erst einmal an ….
Bevor ihr die Steckdose öffnet oder irgend etwas verändert, solltet ihr erst einmal die Funktion der Steckdose prüfen. ICH SAGE NUR GARANTIEVERLUST!
Die Steckdose gibts hier : https://www.obi.de/hausfunksteuerung/wi … /p/2291706 für 9,99€
OK, heute geholt und schon freudestrahlend ausgepackt und direkt der erste Dämpfer ...
Es sind 2 Schrauben vorhanden, die das Gehäuse zusammen halten und diese müssen entfernt werden...
Ärgerlich, das es TRI-WING Schrauben sind, also wie Kreuzschlitzschrauben, nur halt 3 Flügel statt 4.
Egal, ich habe einen Multibitkasten mit allen möglichen und unmöglichen Bits, wird also kein Problem sein..
Nein, so einfach ist es leider nicht
TriWing Bits passen nicht, die Schrauben sitzen zu tief im Gehäuse. Mit dem Bit kommt ihr nicht dran...
Für die zukünftigen Steckdosenumbauten also einen Schraubendreher organisieren.
Billigsten Bitsatz mit langen Bits, den ich gefunden habe : https://www.amazon.de/Wolfcraft-1386000 ... B000P3BOCK
Von Wera gibts auch einen TriWing Schraubendreher Typ 375 Gr.1 x80 : https://www.voelkner.de/products/313610 ... a%20375%20
Wer von euch die Schrauben direkt gegen Kreuzschlitz austauschen möchte : gemessen Ø2,4 x 8 mm... Der Kern-Ø beträgt 2,0mm

Die vorhandene Steckdose musste aber trotzdem dran glauben, ich hab den brutalen Weg mit einem Metallbohrer gewählt und wollte die Schrauben ausbohren.
Diese werden dabei jedoch so warm, das sie sich durch das Gehäuse drücken, aber egal, das Teil ist ja auf.
Wird es halt nach der Modifikation zusammengeklebt.
Geplant ist eine Firmware mit OTA Funktion….
Benutzt wurde ein Funkmodul OW8266 mit 18 Pins, also weniger als ein ESP8266-12E.
Der OW8266 hat weniger Flassh wie ein ESP8266-12E, daher später genau die Einstellungen für das Arduino flashen beachten.
Was wird sonst noch gebraucht ?
- TriWing Schraubendreher oder einen langen Biteinsatz der Größe 1 zum Öffnen des Gehäuses.
- USB UART Wandler - z.B. Link Ich empfehle einen, bei dem man 5V & 3,3V auswählen kann auf Basis eines FTDI232 Chips PC mit USB Schnittstelle
- Installierte Arduino Programmierumgebung mit ESP8266 AddOn
- Netzteil mit 3,3V und min. 500mA (5V Steckernetzteil mit DC/DC Wandler 3,3V geht auch) Mutige dürfen auch gerne den VCC Pin des UART Adapters zur Spannungsversorgung nehmen, wenn dieser 500mA kann… Ich mache es nicht! Soweit mir bekannt, verträgt der Spannungsregler im USB Adapter nämlich nur 120mA...
- 5 dünne flexible Kabel zum Verbinden OW8266 an USB Wandler und Versorgungsspannung
- Lötkolben und Lötzinn
Anschlüsse am Funkmodul :
Oben und unten sind am Funkmodul Anschlüsse vorhanden und auch freundlicherweise gut beschriftet
Das macht die Arbeit einfacher, zu erkennen wo wir dran müssen…
Oben von links nach rechts (Alles, was wir zum programmieren brauchen...):
- VCC
- RESET
- TXD
- GND
- RXD
- GPIO0
- GND
Unten brauchen wir eh nicht, also interessieren uns die erstmal nicht.
(Relay off / Network / Relay on / Key /VCC / GND)

An die Anschlüsse der Funkplatine löten wir nun eine Stiftleiste mit RM 2,54 an, oder Kabel, mit denen das Modul mit dem USB UART Wandler und dem Netzteil verbunden wird.
Ich mag es lieber steckbar, zumal die Leiste später auf den Anschlüssen bleiben kann, die passt so ins Gehäuse.
Den blauen Jumper , der GPIO0 und GND verbindet, ist ein normaler Jumper aus einem alten PC o.ä.
Dieser Jumper bleibt nur auf der Leiste, so lange wir das Funkmodul programmieren wollen.
Er muss anschließend entfernt werden, denn sonst würde der Funkchip jedes mal in den Update/Programmiermodus booten und nicht das Programm starten.


Anschlüsse und Verbindungen
Weiter muss noch folgendes verbunden werden :
- VCC Funkchip an +3,3V Netzteil oder DC Wandler
- GND Funkchip an GND oder - Anschluß Netzteil oder DC Wandler
- GND Funkchip an GND Anschluß USB UART
- TXD Funkchip an RXD Anschluß USB UART
- RXD Funkchip an TXD Anschluß USB UART
Ja
, RX und TX müssen vertauscht werden! Der Sendeausgang des einen muss auf den Empfängereingang des anderen…
RX heißt Recieve, also empfange Daten, TX heißt Transmit, also sende Daten...
Upload der Startversion per Arduino
Die Beschreibung, wie ihr den Arduino einrichtet spare ich mir hier mal komplett. Dazu gibt es mehr als genug gute Anleitungen im Internet.
Ebenso die Einrichtung des ESP8266 in den Arduino.
Öffnet jetzt mit der Arduino Software die diesem Beitrag angehängte INO Datei, nachdem ihr die OTA-WifiSetup.zip Datei in ein gleichnamiges Verzeichnis entpackt habt.
Ihr braucht keinerlei Änderungen am Code vorzunehmen! Auch keine SSID Passwörter etc. ändern.
Das machen wir alles direkt über die fertige Weboberfläche.
Der OW 8266 hat nur 1MB und 64k SPIFF also hier die Einstellungen die ich zum Flashen verwendet habe :
- Board : Generic ESP8266 Module
- Flash Mode : DIO
- Flash Size : 1M (64k SPIFFS)
- Debug Port : disabled
- Debug Level : none
- Reset Method : ck
- Crystal frequency : 26 MHz
- Flash frequency : 40 MHz
- CPU frequency : 80 MHz
- Upload Speed : 115200
Tragt bitte auch den richtigen COM Port ein, den euer USB UART Wandler hat.
Sitzt der Jumper auf den PINS? Dieser muss beim Einschalten der 3,3V gesteckt sein.
Sonst hat der ESP nicht in den UPLOAD Modus gestartet.
UPLOAD starten.
Keine Fehler? Alles ok? dann weiter 
Entfernt jetzt den Jumper zwischen GPIO0 und GND. Den brauchen wir ab jetzt nicht mehr.
Einrichtung der Steckdose
Wenn bis hierher alles glatt gelaufen ist, dann haben wir 90% fertig.
Beim 1. Start öffnet die Steckdose einen eigenen AccessPoint.
Schaut in eure WLAN Liste, dort sollte sich ein WLAN Zugang ESP xyz… befinden.
Verbindet euch mit eurem Rechner mit diesem Accesspoint. Das passwort steht unten bei der Downloaddatei.
Nachdem die Verbindung hergestellt wurde, gebt ihr in eurem Browser bitte folgendes ein :
192.168.4.1
Das ist die IP der Steckdose im verbundenen AccessPoint.
Es wird sich eine Webseite öffnen, um die WIFI Settings zu konfigurieren.
Rechts findet ihr eine Liste der verfügbaren Accesspoints.
Sucht euch euer eigenes heraus, und klickt auf den Namen.
Dieser wird dann links im Feld übernommen und nun müsst ihr nur noch euer Passwort eingeben.
Bitte die Daten speichern und nach der Bestätigung in der neuen Seite auf den Button "Reset ESP" klicken.
Die Steckdose wird neu starten und sich in euer eigenes WLAN einloggen.
In der WLAN Liste wird der ESP xyz… Accesspoint verschwinden. Den brauchen wir jetzt nicht mehr.
Jetzt gilt es, die IP der Steckdose in eurem WLAN zu finden. Das könnt ihr in eurer Routersoftware herausfinden.
Habt ihr die Verbindung des USB UART noch nicht getrennt und ein Terminalprogramm gestartet, dann zeigt euch die Steckdose im Terminal die vergebene IP Adresse an. Ich nutze als Terminal HTERM, das gibt es kostenlos im Internet. Google ist dein Freund 
Gebt in euren Webbrowser jetzt die IP der Steckdose ein und ihr landet direkt auf der Hauptseite der Steckdose.
Unten auf der Seite sind die verfügbaren Commands gelistet.
Grundsätzlich gibt es hier dann die Möglichkeit den ESP zu resetten, die Zugangsdaten eures WLAN zu löschen und den AP neu zu starten,
das ganze EEPROM zu löschen oder das OTA Update aufzurufen.
Liste der in Beta1.0.0 verfügbaren Commands :
<ipadresse>/ON schaltet die Steckdose ein
<ipadresse>/OFF schaltet die Steckdose aus
<ipadresse>/powerONState?=<value> Bei Stromverlust schaltet die Steckdose 0=AUS / 1=EIN
<ipadresse>/update ruft die Seite Firmware Update auf
<ipadresse>/reboot startet den Steckdosencontroller neu
<ipadresse>/erasessid Löscht die WIFI Zugangsdaten
<ipadresse>/eraseEEPROM Löscht den gesamten Speicher (Werkseinstellungen)
Jetzt ladet ihr die angehängte Obi-wall-plug_Ver_BETA1.0.4.ino.generic.bin.zip Datei herunter und speichert diese auf eurem Rechner.
Klickt in der Webseite der Steckdose unten auf [FIRMWARE UPDATE], wählt die .BIN Datei aus und ladet sie auf die Steckdose hoch.
Es sollte eine Success Meldung erscheinen und dann wird der "ESP" neu gestartet.
Sobald er wieder im WLAN verfügbar ist, wechselt der Browser wieder auf die Startseite.
Funktionalitäten
Die Steckdose kann am vorhandenen Taster EIN und AUS geschaltet werden.
Die LEDs leuchten dann, wenn das Relay AN ist, also die Steckdose eingeschaltet wurde.
Leider sind beide LEDs am selber GPIO Pin, so daß diese nicht getrennt steuerbar sind.
Bei Gelegenheit werde ich mir überlegen, wie man diesen LEDs mittels verschiedenen Blinkcodes eine Statusanzeige eingehaucht bekommt.
Der Taster wird 1x in der Sekunde abgefragt, und dann das Relay getoggelt (umgeschaltet).
Um erneut umzuschalten müsst ihr den Taster loslassen, da ist eine Sperre eingebaut (In den ersten Tests war das ein tolles Sekundenblinken :lol: )
Fertig gestellte Erweiterungen
Verzögert EIN (Verzögerung per Value in sek.)
Sofort EIN - Verzögert AUS (Verzögerung per Value in sek.)
Sofort AUS - Verzögert EIN (Verzögerung per Value in sek.)
AutomatikSchleife - wiederholend alle X Sekunden AN dann für X Sekunden AUS (x als Value einstellbar)
Anlegen von Datenpunkten im ioBroker und in der Steckdose
Damit die Steckdose mit dem ioBroker kommunizieren kann, benötigt ihr den SimpleAPI Adapter.
Dieser muss installiert sein und es muss eine Instanz laufen (grüner Punkt).
Bitte dann im ioBroker unter Objekte 2 neue Datenpunkte anlegen.
Wir brauchen den Pfad später in der Steckdose exakt so, wie unter Objekte angelegt. Also Groß/Kleinschreibung beachten.
Der Pfad zum ioBroker Objekt wird in der Steckdose in folgende Unterteilungen aufgesplittet :
DATAPOINT PATH.SUBPATH.STATE NAME
So sieht es aus in der Steckdosensoftware :

So fertig angelegt im IoBroker :

Der Datenpunkt State wurde als Datenpunkt vom Typ Logikwert angelegt.
Der Datenpunkt Info wurde als Datenpunkt vom Typ Zeichenkette angelegt.
Anschließend werden diese Informationen in der Steckdose angelegt und dauerhaft im EEPROM gespeichert.
Diese sind auch nach einem Stromausfall vorhanden und werden bei Start der Firmware geladen.
Hier anhand des Beispiels oben die zu verwendenen Aufrufe :
http://<ip der/steckdose>/ioBroker?ip=192.XXX.XXX.XXX
http://<ip der/steckdose>/ioBroker?port=8087
http://<ip der/steckdose>/ioBroker?path=esp8266.0
http://<ip der/steckdose>/ioBroker?sub=OBI-Steckdose
http://<ip der/steckdose>/ioBroker?state=State
http://<ip der/steckdose>/ioBroker?message=Info
SCHALTEN

Beispiel Blockly Script zur Steuerung der Steckdose
Bitte beachtet, daß einen Änderung des STATE Datenpunktes in den Objekten KEINE Steuerung der Steckdose übernimmt, sondern nur den aktuellen Status anzeigt.
Um einen Trigger für das Schalten der Steckdose zu bekommen, habe ich noch einen Datenpunkt SetState angelegt. Auf diesen werden dann aus dem ioBroker heraus die Scripte angesprochen. Trigger = Auf Änderung
Verbrauchswerte
Ich habe mit einem Laborleistungsmessgerät mal die Eigenverbrauchswerte der Steckdose ohne angeschlossenen Verbraucher gemessen.
Diese betragen :
AUS = 0,53W (1,25VA) und EIN = 1,78W (3,7VA pf=0,47)
Keine Sorge, die VA Werte sind die Scheinleistung, ihr zahlt beim Stromverbrauch nur die Watt (Wirkleistung). Die hohen Scheinleistungswerte erklären auch, warum die Steckdose im Betrieb gut handwarm wird.
WiFi.reconnect
Da der ESP Core mit manchen ESP's ein Problem zu haben scheint, nach einer gewissen Zeit die Verbindung zu unterbrechen und danach keine Verbindung mehr aufbaut, habe ich eine Funktion eingebaut, die dies verhindert. Dazu sind 2 Einstellungen nötig.
1. Zeitschleife für den Reconnect setzt ihr mit
<ipadresse>/keepalive?=
2. Die Funktion ein/ausschalten mit
<ipadresse>/reConnect?=1
1= Funktion AN 0= Funktion AUS
Die aktuellen Einstellungen werden oben links unter Settings angezeigt. Die Einstellung des Zeitwertes wird nicht dauerhaft gespeichert.
Standard beim 1. Start ist Funktion ist AN.
Beta Funktionen V1.0.2
Zusätzlich sendet die Steckdose in einer wählbaren Zeitschleife den aktuellen Status an den ioBroker. Die Dauer ist wählbar und mit dem Command
<ipadresse>/ioBroker?statetime=
einstellbar. Diese Einstellung wird dauerhaft gespeichert. Mindestwert ist 60 sek.
Der Schaltzustand des Relais nach einem Spannungsverlust lässt sich jetzt wählen.
<ipadresse>/powerONState?=<value> 0 oder 1
1= AN 0=AUS
Bitte bedenken, daß das Einschalten nach Spannungsverlust ein Sicherheitsrisiko darstellen kann. Je nach angeschlossenem Verbraucher können ungewollte Leistungsverbräuche auftreten. Thema : Ihr seit gerade 2 Wochen in Urlaub gefahren und das EVU hat mal kurz die Spannung abgeschaltet. Und habt einen Heizlüfter an der Steckdose = Brandgefahr Bei 2000W verbraucht ihr für diese 2 Wochen 672 kWh also deutlich über 100€ Strom!!!!
SCHALTEN DER STECKDOSE ÜBER DIE CCU
Auch jetzt schon funktioniert das schalten der Steckdose über die CCU, auch wenn die Firmware momentan noch keine Funktionalitäten für die Statusmeldung in die CCU bereit hält.
Dies erfolgt ganz einfach über folgendes Script :
string stdout;
string stderr;
! string url="http://<ip adresse/der/steckdose>/ON";
! string url="http://<ip adresse/der/steckdosee>/OFF";
system.Exec ("wget -q -O /dev/null " # url, &stdout, &stderr);
Das Anführungszeichen in den Zeilen ist eine Auskommentierung und muss entfernt werden bei der Funktion, die ihr nutzen wollt.
Es erfolgt noch keine Statusmeldung direkt von der Steckdose an die CCU, daher wird weder ein Schalten über den Steckdosentaster noch über ioBroker an die CCU gemeldet.
BETA 1.0.4 beinhaltet nun eine Integration in der CCU als eigenständiges Gerät über CuxD.
Wie das eingerichtet wird steht hier : viewtopic.php?f=35&t=12125&start=140#p150649
Die blaue LED an der Steckdose (WLAN Symbol) leuchtet im ausgeschalteten Zustand dann auf, wenn Datengesendet werden. Nur mal so zu Info 
Wichtiger Hinweis in eigener Sache:
Ihr benutzt diese Firmware auf eure eigene Gefahr!
Ich übernehme keinerlei Garantie für die fehlerfreie Funktion oder jeglichen Schaden, der sich aus der Nutzung dieser Software und Anleitung ergibt.
Euch ist bekannt, daß ihr mit Öffnen der Steckdose die Garantieansprüche verliert.
Wenn ihr hiermit nicht einverstanden seit, dann benutzt die hier angebotene Firmware nicht !
Änderungen :
- WiFi Setup SSID - Die Felder haben jetzt eine Beschriftung bekommen, das Passwortfeld ist nun kein Textfeld, sondern blendet die Eingabe aus.
- FirstRun Erkennung - Es werden Default Daten ins EEPROM geschrieben, wirre Zeichen sollte es jetzt nicht mehr geben
- /delayON?= Es wird um <wert>verzögert eingeschaltet</wert>
- /delayOFF?= Es wird um <wert>verzögert ausgeschaltet</wert>
- /ONdelayOFF?= Es wird sofort EIN und um <wert>verzögert ausgeschaltet</wert>
- /ONdelayOFF?= Es wird sofort AUS und um <wert>verzögert eingeschaltet</wert>
- /AutoONOFF?= Es wird wiederholend um <wert>verzögert umgeschaltet (Blinklicht)</wert>
- Der AP startet jetzt auch tatsächlich im gesicherten Modus (Eingabe eines Passworts bei Anmeldung an den AP)
- Nach Eingabe eines Commands und der Bestätigungsseite im Browser wird nach 3 Sek. automatisch wieder auf die Hauptseite umgeschaltet.
- Bestätigungsseiten farblich an die Hauptseite angepasst
Um den AutoONOFF zu unterbrechen, schaltet ihr die Steckdose einfach AN oder AUS…
Fehler nach Stromausfall der WLAN Verbindung behoben
Die Steckdose versucht nach dem Neustart für 1 Minute, sich mit den vorhandenen WLAN Zugangsdaten mit dem WLAN zu verbinden.
Klappt das nicht, startet sie (wie gehabt) einen AccessPoint und wartet auf Eingabe neuer WLAN Daten. (Prozedere ist auf Seite 1 beschrieben)
Wenn nach 3 Minuten keine neue Daten eingegeben sind, startet die Steckdose erneut und versucht wieder, mit den vorhandenen Daten ins WLAN einzuloggen.Bei normalen Fritzboxen und WLAN Routern sollte nach 4 Minuten das WLAN fertig gestartet sein und die Steckdose loggt sich ein und dann funktioniert auch alles wie gehabt.
Implementierung einer direkten CCU CUXD Unterstützung
Hier kommt jetzt die CCU Nutzung (auch ohne ioBroker möglich) ins Spiel.
Dazu müssen 3 Parameter in der Oberfläche der Steckdose eingetragen werden :
- CCU- IP Adresse
- CUXD Device Name mit Kanal
- Übertragung aktiviert / deaktiviert
<steckdosenip>/CCU?ip=<value>set the CCU IP Adress
<steckdosenip>/CCU?cuxdDevice=<value>set the CUXD Devise with channel number
<steckdosenip>/CCU?cuxd=<value>send state to CuxD? 0=NO 1=YES
value ersetzt ihr bitte mit den passenden Daten.
CUXD Device wird folgendermaßen eingetragen : CUX2801001:1 , also inklusive Kanalname !!!!
Bitte in eurer HM schauen, welcher Gerätename tatsächlich stimmt.
Der 1. angelegte System Name ist eigentlich immer CUX 2801001
Wie das CuxD Gerät angelegt wird, steht genau in der angehängten Datei Anleitung_Obi-Steckdose-CuxD.pdf beschrieben.
Die Steckdose verhält sich anschließend wie ein normales HM Gerät.
Es sind keinerlei zusätzliche Systemvariablen nötig.
Der Status wird im CuxD Gerät wenn aktiviert ist auch sofort aktualisiert.
Schalten ist natürlich auch möglich 
Weitere Minor Changes :
- ioBroker Statusübertragung lässt sich deaktivieren. /ioBroker?active=<value>send state ioBroker? 0=no 1=yes
- Steckdosen Accesspoint heißt jetzt : ESP8266 OBI-Wallplug xxxx
- Trotz zusätzlicher EEPROM Speicherzellen bleiben die alten Daten erhalten, wenn vorhanden!
Lizenzhinweise
Die Software wurde erstellt mit der unter die GPL Lizensierung fallende Entwicklungsumgebung Arduino. (https://www.arduino.cc/en/Main/Software)
Zusätzlich wurde der ESP8266 Core fallend unter die LGPL Lizensierung verwendet. (https://github.com/esp8266/Arduino)
Desweiteren wurden folgende mit dem ESP8266 Core gelieferten Bibliotheken eingesetzt :
<esp8266wifi.h>
<esp8266webserver.h>
<eeprom.h>
<wificlient.h>
<esp8266mdns.h>
<esp8266httpupdateserver.h>
Die Einrichtung des WiFizugangs erfolgt mittels modifiziertem Code von Nikant https://github.com/nikant/espWiFi2eeprom
Weitere Schnittstellen, die benutzt bzw. angesprochen werden :
ioBroker SimpleApi : https://github.com/ioBroker/ioBroker.simple-api
Homematic AddOn CuxD : https://homematic-forum.de/forum/viewto … 37&t=15298
Im Anhang befinden sich die .bin Datei zum direkten Flashen per OTA, als auch der Source Code (-SC.zip) für die Arduino Umgebung.
Die .bin Datei wurde kompiliert mit Arduino 1.8.5 und dem ESP8266 Core Version 2.4.1
Bitte beachten, daß ich keinerlei Support übernehme, solltet ihr den INO Code abändern.
Für mich ist aus privaten Gründen das Projekt hiermit bis auf weiteres abgeschlossen.
Erweiterungen
ab BETA 1.0.6 von sissiwup -> Link
letzte Version 1.2.2b von sissywup mit Alexa Unterstützung -> Link
WICHTIGER HINWEIS !
Diese Firmware ist ausschließlich für die 1. Generation der Steckdose = abgerundetes Gehäuse.
Die neueren Dosen verwenden ein anderes ESP8266 Modul (WROOM2) und haben eine andere Pinbelegung!!
Hier gibt's den Threat zur neuen Dose : https://forum.iobroker.net/topic/17060/obi-funk-steckdosenumbau-esp8266-generation2-eckig
Grüße
Tom
#### Downloads ####
OTA-WifiSetup.zip --- Arduino IDE Quellcode für das Einbinden ins WLAN und die OverTheAir Update Funktion !!!Hiermit starten!!!!
Anleitung_Obi-Steckdose-CuxD.pdf --- Anleitung Steckdose mit CuxD für Homematic Nutzer
Obi-wall-plug_Ver_BETA1.0.4.ino.generic.bin.zip Beta 1.0.4 BIN Datei für OTA Update
Obi-wall-plug_Ver_BETA1.0.4-Code.zip Beta 1.0.4 INO Dateien / Quellcode