Mein neuestes Projekt ist ein SmartHome-Gateway auf Basis des ESP8266, welches ich euch natürlich hier gerne vorstellen möchte. Momentan implementiert sind ein 433MHz-Sender für Funksteckdosen aller Art, eine IR-Diode sowie ein Temperatur-/Luftfeuchtigkeitssensor. Das Setup lässt sich natürlich beliebig erweitern und den eigenen Bedürfnissen anpassen.

Vorteile zu Lösungen mit Einplatinencomputer wie Raspberry / Banana Pi sind die Robustheit bei Stromausfällen (Stichwort(e) kaputtes Dateisystem) und natürlich auch der sehr günstige Preis.

 

1. Hardware

Als Board setze ich hier mein NodeMCU-Entwicklungsboard ein, da es praktischerweise über einen USB-Anschluss verfügt und Breadboard-tauglich ist. Außerdem bietet es im Gegensatz zu den kleineren ESP8266-Modellen wie dem ESP-01 wesentlich mehr GPIOs.
Meine (von einer alten Fernbedienung ausgelötete) IR-Sendediode steuere ich über einen Transistor (NPN mit CBE-Reihenfolge [momentan ein BC547]) an, die Basis habe ich mit einem Widerstand von ca. 600Ω mit einem digitalen Pin des Boards verbunden.

Als Temperatur-/Luftfeuchtigkeitssensor nutze ich einen DHT11. Dieser ist nicht sehr genau, aber für meine Bedürfnisse soweit ausreichend. Wer es genauer haben möchte, kann zu dem etwas teureren Modell DHT22 greifen, das sich analog einsetzen lässt.

Für die Funksteckdosen nutze ich schließlich noch einen billigen FS1000A-Transmitter mit externer Antenne. Diesen hatte ich von anderen Projekten noch über. Wer neukauft, sollte lieber einen Superheterodyne-Transmitter einsetzen, den es in China auch bereits für wenige Cent gibt. Dieser hat erfahrungsgemäß eine wesentlich höhere Reichweite und lässt sich ebenso einfach einstecken.

Eine kleine Steckplatinenansicht seht ihr hier:

Und so schaut es bei mir aktuell in der Realität aus:nodemcu_universal_1

2. Software

Dieses Projekt mit dem ESP8266 habe ich wieder mit Hilfe der Arduino IDE umgesetzt. Dort gibt es für die Ansteuerung der eingesetzten Sensoren und Aktoren bereits fertige Bibliotheken, sodass die Umsetzung damit sehr simpel ist.

Mein aktueller Sketch sieht insgesamt so aus:

Alles wird also über einfache HTTP-Requests angesteuert. Zwar wäre auch eine Umsetzung z.B. über MQTT denkbar, allerdings braucht man dann noch einen Broker (bzw. nutzt einen im Internet) und die App-Auswahl zur Steuerung ist stark eingeschränkt (ich nutze hier NetIO für die Steuerung über eine GUI auf Android/iOS sowie AIVC zur Sprachsteuerung).

Die verwendeten Bibliotheken sind konkret:

  • rc-switch für die Funksteckdosen (siehe dazu ausführlichen Artikel hier)
  • IRremote für die IR-Diode (mehr dazu siehe hier)
  • DHT-sensor-library zum Auslesen des DHT11 in einer älteren Version (mit der neueren hatte ich massive Verbindungsprobleme zum Sensor)

Das HTTP-Interface habe ich dabei wie folgt gestaltet:

  • Für die Funksteckdosen: [IP]/rc?group=xxxx&switch=xxxx&action=x (wobei „group“ und „switch“ den DIP-Einstellungen der Steckdosen entsprechen und bei „action“ eine „1“ an entspricht und eine „0“ aus)
  • Für IR-Geräte: [IP]/ir?code=xxx&bits=xx&protocol=x („code“ entspricht hier der mit der Bibliothek ausgelesenem Code in Dezimal, „bits“ der ausgelesenen Länge und „protocol“ dem Protokoll [z.B. NEC oder Sony])
  • Für DHT-Sensor: [IP]/dht?type=x (dieser Befehl kann auch ohne „type“ aufgerufen werden, dann erhält man „[Temperatur];[Luftfeuchtigkeit]“, ansonsten lassen sich Temperatur und Luftfeuchtigkeit auch einzeln über „temp“ bzw. „hum“ auslesen/anzeigen)

3. Nutzung und Erweiterung

Wie bereits erwähnt nutze ich NetIO bzw. AIVC zur Steuerung. Das klappt mit beiden Apps vollkommen problemlos. Hier noch 2 Screenshots von meinen Ansichten in der NetIO-App (lassen sich bequem über einen Editor am PC anlegen):netio_nodemcu

Der Code lässt sich im Übrigen beliebig erweitern, sodass auch andere Sensoren oder Aktoren eingebunden werden können. Eventuell ergänze ich mein Setup demnächst noch um ein Barometer oder ähnliche Spielereien.

Momentan ist das Projekt ausgelegt auf eine permanente Stromversorgung über den Micro-USB-Anschluss, solltet ihr das Projekt (oder Teile davon) batteriebetrieben verwenden wollen, solltet ihr euch noch Gedanken um die Schlafzustände es ESP8266 machen.

Wenn ihr euer Setup in unterschiedlichen Umgebungen einsetzen möchtet, ist ein Blick auf das Projekt „WiFiManager“ für den ESP8266 sinnvoll, der es auch erlaubt, die WLAN-Daten schnell über ein Webinterface zu konfigurieren.


Bei Fragen zu dem Projekt oder Anregungen könnt ihr wie immer gerne das Kommentarfeld unten verwenden.