Sonoff, S20, POW und SC mit neuer Firmware flashen

Von Itead.cc gibt es seit einiger Zeit verschiedene WiFi Smart Home Geräte. Einige dieser habe ich auch bei mir im Einsatz:

Allerdings läuft bei mir nicht die originale Firmware sondern Espurna. Diese gibt es aktuell in der Version 1.7 und stellt für mich alle gewünschten Funktionen bereit.

  • MQTT Interface für alle Daten
  • Webinterface für die einfache Konfiguration
  • OTA Update

Das Beste daran ist, dass die Firmware ohne Anpassungen mit Home Assistant kompatibel ist.

Hier mein Workflow für den Sonoff POW

Als erstes wird das Sigel gebrochen. Zurückschicken lohnt sich eh nicht.
Auf der Platine sind am Rand vier Punkte zu sehen. Diese sind folgendermaßen belegt:

Ein USB auf Serial Konverter mit 3.3V Signal (Amazon) wird angeschlossen. Wichtig ist, dass die Platine nicht von Außen mit Strom versorgt, oder sogar noch am Netzkabel hängt! Mit gedrücktem Knopf wird die Versorgungsspannung zugeschaltet. Jetzt befindet sich der ESP im Bootloader Modus und kann neu programmiert werden. Das mache ich mit Atom, der PlatformIO IDE.

Nachdem das Firmware Image geladen wurde, wiederhole ich die Prozedur mit Versorgungsspannung stecken, während der Knopf gedrückt ist. Jetzt ist das Dateisystem an der Reihe, das beinhaltet die HTML Applikation zum Steuern der Schalter und anzeigen der Sensordaten.

Wenn dann das Dateisystem geflasht wurde, startet die Software einen WiFi Access Point. Mit dem Passwort „fibonacci“ kann man sich dort anmelden. Mit dem Netzwerk verbunden kann man das Gerät unter der Adresse 192.168.4.1 erreichen. Dort muss das Standardpasswort geändert werden und ein neues vergeben. Anschließend kann man unter dem Menüpunkt WiFi das gewünschte WiFi Netzwerk eintragen, in dem sich der Schalter aufhalten soll.

Anschließend befindet sich der Schlater im Netzwerk. Unter MQTT kann dann noch die Adresse des MQTT Brokers eingetragen werden. Dieser übernimmt die Kommunikation zwischen den Geräten und Home Assistant.

Die Konfiguration für Home Assistant wird um folgende Punkte erweitert:
homeassistant:
#[…]
  customize:    
    sensor.sonoffpowa03803_leistung:
      friendly_name: Leistung
    sensor.sonoffpowa03803_spannung:
      friendly_name: Spannung

    sensor.sonoffpowa03803_relay:
      friendly_name: Schalter
#[…]

switch:
  – platform: mqtt
    state_topic: „/Herbert/switch/SONOFF_POW_A03803/relay/0“
    command_topic: „/Herbert/switch/SONOFF_POW_A03803/relay/0“
    name: „sonoffpowa03803_relay
    qos: 0
    payload_on: „1“
    payload_off: „0“

#[…]

sensor:
  – platform: mqtt
    state_topic: „/Herbert/switch/SONOFF_POW_A03803/voltage“
    name: „sonoffpowa03803_spannung“
    qos: 0
    unit_of_measurement: „V“
  – platform: mqtt
    state_topic: „/Herbert/switch/SONOFF_POW_A03803/power“
    name: „sonoffpowa03803_leistung“
    qos: 0
    unit_of_measurement: „W“

Nach einem Neustart stehen nun drei weitere Elemente Home Assistant zur Verfügung. Viel Spaß beim Nachbauen

Nokia 3210 Retro Fit Board

Ich hatte früher ein Nokia 3210. Heutzutage ist es allerdings ein wenig außer Mode geraten. Nagut, es ist eigentlich nicht mehr benutzbar. Deshalb habe ich begonnen ein Mainboard zu designen, dass in die Mechanik des alten Nokia Knochens passt.

Frontansicht der Retrofit Platte (es fehlen noch viele Bauteile)

Das ganze Projekt wird auf Github zur Verfügung stehen. Die aktuelle Version umfasst folgende Features:

  • STM32F439 MCU
  • 160×128 OLED Display
  • Audio Codec LM4930
  • Stereo Mikrofon
  • Haptic Feedback Engine
  • A7 GSM/GPRS Mobile Radio Module
  • ESP8266 WiFi Module
  • µSD-Card Interface

Allerdings bin ich mir bei der MCU nicht sicher, da ich gerne ein Android als Betriebsystem verwenden möchte. Dazu würde ich die MCU durch einen Prozessor tauschen. Genauer würde ich gerne den i.MX7 von NXP einsetzen. Dieser ist ein Dual Core Prozessor mit bis zu 1,2GHz. Das ist für ein Android ausreichend.
Weiterhin hätte ich auch gerne Bluetooth mit an Board. Dazu habe ich die TI WiLink Module ins Auge gefasst.

 Das Board kann nach Fertigstellung dann in die Mechanik eines Nokia 3210 eingebaut werden. Also nicht wie los und noch schnell eins der letzten kaufen.

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.

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.

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.

Review of Sonoff Smart Home Schalter mit Wifi

Ich habe vor ein paar Tagen ein Sonoff Schalter bestellt. Dieser ist im Grunde ein ESP8266 Modul mit einem Relais. Zusätzlich bringt es alles mit, was man benötigt, um an Netzspannung betrieben zu werden. Es eignet sich also um direkt vor ein Gerät geschaltet zu werden.

Im Lieferumfang des Sonoff befindet sich auch eine App mit der man den Schaltzustand des Relais über das Internet auslesen und ändern kann. Die Konfiguration ist denkbar einfach. Das Sonoff mit Netzspannung versorgen, dann den Knopf am Gehäuse für ca. 3 Sekunden drücken und die LED blinkt schnell. Gleichzeittig öffnet das Sonoff einen WLAN Access Point. Mit der App wird dann der Accesspoint gefunden und sich damit verbunden. In der App kann dann konfiguriert werden, welches WLAN Netzwerk als Zugang zum Internet verwendet werden soll. Dazu wird die SSID ausgewählt oder eingegeben, Der Zugangsschlüssel, sowie die Einstellung ob feste IP oder DHCP verwendet werden soll, werden ebenfalls vorgenommen. Anschließend verbindet sich das Sonoff mit dem angegebenen Netzwerk und kann über die App im Netzwerk gefunden werden. Über einen Webdienst kann dann der Schalter betätigt werden.

Das ganze für 8€ ist natürlich ein Angebot, dass es vertretbar macht. Vergleichbare schaltbare Steckdosen sind wesentlich teuerer. Allerdings wäre es eine Verbesserung, wenn das Schalten auch über das lokale Netz funktioniert und nicht unbedingt eine Verbindung in das Internet voraussetzt. Hier kommt Herbert Mk3 ins Spiel. Darauf läuft ein MQTT Server. Dieser kann Nachrichten an MQTT Clients verteilen. Dazu muss das Sonoff allerdings auch MQTT sprechen können. Das ist allerdings in der aktuellen Firmware nicht vorgesehen.

Für den Einsatz mit MQTT muss also eine andere Firmware auf das Sonoff programmiert werden. Mit Hilfe des ESP8266 Arduino Projekts ist die Software kein Problem. Die Schaltung des ESP8266 auf dem Sonoff wurde von Peter Scargill veröffentlicht.

Mit einem handelsüblichen FTDI 3V3 Seriellen Kabels habe ich mich an die Pins gehängt und konnte so den Inhalt des SPI-Flash auslesen (Backup der originalen Firmware) und anschließend eine eigene Firmware aufspielen.

Für die Sonoff Plattform gibt es bereits verschiedene Firmwares. Hier zeige ich euch zwei Alternativen zur ITead Firmware und der eWeLink App. Außerdem die Firmware, die ich weiterentwickelt habe.

Sonoff-MQTT-OTA von arendst

Auf Basis der ESP Entwicklungsumgebund oder der Arduino Bibliothek für den ESP8266 kann mit dieser Firmware das Sonoff mit vielen neuen Features ausgestattet werden.

Kommunikation wird über das MQTT Protokoll abgewickelt. Dabei gibt es folgende Befehle:

  • Relais ein-, aus- oder umschalten
  • MQTT Topic ändern
  • OTA Firmwareupdate URL ändern
  • OTA Firmwareupdate ausführen
  • Status anzeigen

Der Knopf am Gerät wird verwendet für

  • Relais umschalten
  • Wifi Smartconfig
  • OTA Update durchführen
  • Gerät zurücksetzen
Da ich mal wieder Lust hatte in einer anderen Sprache als C zu programmieren, habe ich noch eine weitere Firmware herausgesucht.

nodeMCU Sonoff von Frederic HARS

Diese Firmware bietet auf Basis des LUA-Interpreters von NodeMCU den Schlatzustand über ein Webinterface oder MQTT zu ändern. Die Verbindung zum MQTT Server wir in einer globalen Konfigurationsdatei eingetragen und dann von NodeMCU hergestellt.
Der MQTT Broker kann mit dieser Firmware lediglich den Schaltzuusand zusenden. Das Sonoff kann den Knopf nicht auslesen, also auch nicht vor Ort betätigt werden.
Die LED zeigt den Schaltzustand an.
Die MQTT Verbindung unterstützt keine Passwortgesicherte Verbindung, es sollte also nur im privaten Netzwerk eingesetzt werden. die Konfigurationsdatei kann über das Webinterface können die LUA Skripte geupdated werden. Die NodeMCU Firmware bleibt allerdings fix und muss über eine Kabelverbindung geupdatet werden.
Aus Basis dieser Firmware habe ich Anpassungen gemacht, die meine Sonoffs für mein Hausautomationsprojekt funktionsfähig machen. Der Fork von mir beinhaltet nicht nur kleine Änderungen für die Funktionsweise des MQTT, sondern auch die Funktion des Knopfes zum Umschalten des Relais.

Diese weitern Funktionen werden noch kommen:

  • Wifi Smartconfig
  • Wifi Autoconfig für Herbert/PiDome
  • Konfiguration über MQTT
  • Speichern des letzten Schattzustands
  • OTA Script
  • OTA Verwaltung für Herbert/PiDome

Herbert Mk3: An der Wand

Das neue und offizielle Raspberry Pi Touchscreen mit DSI Anbindung und kapazitivem Touch ist endlich auch für mich lieferbar gewesen. Nachdem ich fast einen Monat darauf gewartet habe kann ich die Schaltzentrale für meine Wohnung jetzt endlich an den Nagel hängen…

Raspberry Pi 7″ TFT Gehäuse: Modell

Mit einem eigenenen 3D-gedruckten Gehäuse hängt der Raspberry Pi 2 mit Display jetzt im Flur. Mit an Board ist ein BLE Dongle, zwei WLAN Sticks und ein 64GByte Massenspeicher. Auf dem System läuft ein Raspbian mit LXDE und Iceweasel Browser als Frontend und openhab, mogodb, mosquitto, HerbertScanner und HerbertNode im Backend.

Openhab mit mosquitto habe ich ja bereits in älteren Posts bereits erwähnt und mongodb als Datenbank ist auch keine Besonderheit. Die zwei interessanten Softwarekomponenten sind HerbertScanner und HerbertNode.

HerbertScanner ist eine Applikation, die mit dem BLED112 von BlueGiga kommuniziert und die Advertisement Pakete der BLE Buttons im Umkreis registriert. Ein Advertisement Paket im richtigen Format wird an mosquitto, also als MQTT Nachricht weitergeleitet. So werden Daten von BLE Endpunkten a die openhab Zentrale geleitet.
Die Konfiguration der BLE Geräte muss zur Zeit manuell durchgeführt werden. Dazu muss der MQTT Kanal ‚/Herbert/#‚ abonniert werden.  Dort werden alle Nachrichten abgeliefert. Neue Geräte erscheinen da dann auch und können mit der ID registriert werden.

HerbertNode ist eine Applikation, die für das Konfigurieren der WLAN Endpunkte eingesetzt wird. HerbertNode scannt die WLAN Netzwerke in der Umgebung und findet die Accesspunkte von ESP2866 Geräten. Diese starten, wenn sie keine Konfiguration besitzen, oder das konfigurierte Netzwerk nach 30 Sekunden nicht gefunden wurde in den Accesspoint Modus. Sobald HerbertNode eine ESP2866 SSID sieht, verbindet er sich mit dem AccessPoint und stellt eine HTTP Anfrage nach ‚/info‘. Das Gerät gibt dann Informationen über sich im JSON-Format an HerbertNode weiter. HerbertNode hat eine Liste der verfügbaren Geräte im Umkreis. Vom Benutzer kann in dieser Liste das Gerät ausgewählt und dem Netzwerk hinzugefügt werden, dazu wird dem Gerät die SSID und der Zugangsschlüssel für das Herbert-WLAN übertragen.

Der Code wird im Laufe der nächsten Wochen noch verfeinert und stabilisiert. Es treten teilweise noch Fehler auf, die noch behoben werden müssen, bevor Herbert zum ersten mal veröffentlicht wird.

ESP8266 – 2: Temperatur mit dem ESP8266 und DHT11

Das Hausautomationsteam in meiner Wohnung hat einen neuen Teamkollegen bekommen. Ein Tempertatur und Luftfeuchte Sensor. Der Sensor basiert auf einer kleinen Schaltung mit dem DHT11 Sensormodul und einem ESP-01 Board. Daran angeschlossen befinden sich zwei AA Akkus.

ESP-01 Modul mit DHT11 Sensor und 2 AA-Akkus

Die Software im ESP2866 wurde diesesmal nicht mit LUA und NodeMCU, sondern mit dem von ESP verfügbaren SDK erstellt. Ich habe dafür die Bibliothek für den DHT Sensor und den MQTT Client verwendet. Diese beiden Bibliotheken sind frei verfügbar und könne hier heruntergeladen werden.

Das System basiert immernoch auf einem MQTT Broker als zentraler Kommunikationshub. Die Sensoren besitzen alle eine eindutige Chip Indentifikationsnummer. Diese, kombiniert mit dem Systemnamen, bilden die Topics, auf denen die Sensoren Daten für das System bereit stellen. Eine Konfiguration des Sensors bei Inbetriebnahme ist auch in Arbeit. Dazu lauscht der Hauptknoten (Webserver, MQTT broker, Festplatte, usw.) auf WLAN Accesspoints die mit dem Namen ESP beginnen. Diese werden in einer bestimmten Liste angezeigt und können vom Hauptknoten angesprochen werden. Dabei verbindet sich der Knoten mit dem Sensor und überträgt die Daten, die für das eigentliche Netzwerk verwendet werden. Diese Kommunikation muss verschlüsselt stattfinden, daher wird auf die AES-Bibliothek des ESP2866 zurück gegriffen. Mit den Daten kann der Sensor sich dann am lokalen WLAN anmelden und seine Daten dem MQTT Broker zur Verfügung stellen.

Code für den Sensor gibt es hier. Eingestellt wird das ganze über die user_config.h
http://gist-it.appspot.com/github/DasBasti/esp8266/blob/master/Sensoren/Temperatur/dht112mqtt/include/user_config.h?footer=minimal&slice=10:46 Der Code wacht auf, verbindet sich mit dem MQTT Broker (Herbert) und sendet seine Messwerte. Danach begibt er sich wieder in den Tiefschlaf. Es sind sicherlich noch Optimierungen möglich, so ist es mit einem unmodifizierten ESP-01 Modul nicht möglich aus dem Tiefschlaf wieder aufzuwachen.

Werte in Openhab auf Herbert

ESP8266 – 2: Ferngesteuerte Steckdose

Ein anständiger Name für eine Steckdose

Nachdem der Fenstersensor so weit funktioniert benötigen wir noch einen Aktor, der anhand des Signals sinnvolle Aufgaben erledigen kann. Wie zum Beispiel die Abzugshaube abschalten, wenn das Fenster geschlossen wird. Das ist ziemlich praktisch, wenn man nicht möchte, dass die Abzugshaube Luft durch den Kamin zieht. Daher die Regel, wenn das Fenster in der Küche offen ist, kann man die Abzugshaube einschalten, wenn nicht, dann nicht. Herzstück der Steckdose wird wieder ein ESP8266 Modul sein. Zusätzlich ein AC/DC Converter, der aus der Netzspannung eine akzeptable 5V macht. diese wird über einen LDO auf 3,3V für den Controller heruntergeregelt. Das Relais, dass die Phase schaltet wird aus den 5V versorgt und über einen Transistor gesteuert. Die Schaltung ist also so simpel, dass es sich noch nicht einmal lohnt einen Schaltplan zu zeichnen. Nichtsdestotrotz gibt es hier einen.

Der Aufbau auf Lochraster ist wenig Spektakulär, nur dass darauf zu achten ist, möglichst zu keiner Zeit die Netzspannung in der Nähe des Digitalteils zu haben. Das kann sehr schnell zu magischem Rauch führen.

Aufbau der Hardware im Inneren der Steckdose.

Der Code für den ESP ist wieder auf GitHub zu finden. Es besteht aus zwei Dateien, dem Startup Script und dem eigentlichen Program.
http://gist-it.appspot.com/github/DasBasti/esp8266/blob/master/Aktoren/Steckdose/Timeout/init.lua?footer=minimalNach der Initialisierung wird der WiFi Accesspoint eingerichtet. http://gist-it.appspot.com/github/DasBasti/esp8266/blob/master/Aktoren/Steckdose/Timeout/AP.lua?footer=minimal&slice=1:6Eine Funktion zum ausschalten der Steckdose durch ein Timeout wird festgelegt http://gist-it.appspot.com/github/DasBasti/esp8266/blob/master/Aktoren/Steckdose/Timeout/AP.lua?footer=minimal&slice=7:11Der Server, der auf Port 80 nach Verbindungen lauschen soll wir über eine Zeile gestartet. Der Accesspoint hat nach vorgabe der NodeMCU Software die IP_Adresse 192.168.4.1, sie muss also nicht gesondert festgelegt werden. Zusätzlich wird noch ein Event-Handler angegeben, wenn der Server ein Request erhält. Fertig ist der Software Teil dieses zugegebenermaßen sehr einfachen Aktors. Allerdings kann die Hardware auch dazu verwendet werden, um in das Herbert-Netzwerk eingebunden zu werden. Allerdings ist Herbert am Einsatzort dieser Steckdose noch nicht verfügbar. http://gist-it.appspot.com/github/DasBasti/esp8266/blob/master/Aktoren/Steckdose/Timeout/AP.lua?footer=minimal&slice=13:29

Wichtig ist, dass nach einem vollendeten Projekt der Schreibtisch in den Ursprungszustand zurück 
gesetzt wird, um beim Nächten Projekt alles wieder vor Ort zu finden. 

Herbert Reloaded: Haus Automation

Mein Projekt, die Wohnung komplett über ein Automationsbus zu steuern, geht langsam voran. Aber warum noch ein Haus Automations Bus? Weil die bereits verfügbaren nicht genau dem entsprechen, was ich gerne hätte. Einige sind auf eine dauerhafte Verbindung ins Internet angewiesen, andere sind zu teuer, oder nicht vollständig. Oder benötigen Datenleitungen zu den Knotenpunkten.

Herbert wird einmal die Wohnung steuern und dafür werde ich existierende Hardware umbauen, oder eigene Hardware entwerfen, die genau die Aufgaben erfüllt, die ich mir von einem Hausbus wünsche. Der Aufbau wird folgende Topologie besitzen:

Herbert Topologie V2.0

Das Zentrum von Herbert ist ein Raspberry Pi 2, der in einem externen Festplattengehäuse untergebracht ist. Die externe Festplatte ist immer noch in dem Gehäuse und wird die Speicherzentrale für das NAS. Der Pi hat leider nur langsames USB 2.0. Da das WLAN und die Festplatte über USB angeschlossen sind werden keine neune Geschwindigkeitsrekorde aufgestellt werden können. Für regelmäßige Backups ist es allerdings schnell genug.

Herbert 2.0

Neben dem NAS besitzt Herbert ein openHAB Interface. openHAB ist ein offenes Haus Automation System, dass in Java entwickelt wurde, dadurch ist es auf vielen Plattformen lauffähig. Es besitzt Module um viele bereits verfügbaren Systeme zusammen zu schließen und über die eine Plattform zu steuern. Ich habe mich entschieden die Kommunikation über MQTT zu lösen. MQTT ist eine Kommunikationsplattform für Maschine-zu-Maschine Kommunikation. Man kann sich ein einem Verteiler (Broker) anmelden und für verschiedene Nachrichten anmelden. Danach erhält man die Nachrichten auf diesem Kanal. Der Part des Brokers wird von der offenen Software Mosquitto übernommen, die ebenfalls auf dem Raspberry Pi läuft.

Die Firmware NodeMCU besitzt ein Lua Modul, dass die Kommunikation mit einem MQTT Broker sehr einfach gestaltet. Das Modul mqtt.Client() bietet Funktionen zum Anmelden für Nachrichten, als auch zum Verschicken von Nachrichten.

Diese Nachrichten werden an vereinbarte Topics gesendet. Diese sind in der Konfigurationsdatei von openHAB und in der Lua Quelltext abgespeichert. Weitere Funktionen des NodeMCU sind der Stromsparende Tiefschlafmodus und die Kommunikation über die serielle Schnittstelle. Beide dieser Funktionen werden an unterschiedlicher Stelle benötigt. Der Tiefschlaf ist für die Sensoren notwendig, wenn diese nur Nachrichten senden, aber keine Empfangen sollen. Die serielle Schnittstelle ist für die Kommunikation mit einem anderen Controller gedacht, der dem ESP die nötige Berechnungspower zur Verfügung stellen kann.

Der Auf/Zu Sensor ist in der Aktuellen Version dem Fensterwächter sehr ähnlich. Allerdings ist er noch nicht so weit veröffentlicht zu werden. Alle Module mit allen Programmen und Schaltungen werden aber in der nächsten Zeit hier zur Verfügung stehen. Der Code und die Konfigurationsdateien für Herbert liegen ebenfalls auf GitHub.

Resourcen:
Raspberry Pi Debian Variante: Rasbian
openHAB Dokumentation + Autostart Anleitung
MQTT auf dem Raspberry Pi installieren
NodeMCU API Dokumentation