ESP8266/WorldDominationSwitch

Aus C3MAWiki
Wechseln zu: Navigation, Suche

WorldDominationSwitch

Projekt-Idee

Unsere Erfahrungen mit dem ESP8266 haben die Idee aufkommen lassen, einen autarken WLAN-Schalter zu bauen. Durch den günstigen Preis und die bereits vorhandene Raumautomatisierung auf Basis von OpenHAB und MQTT erscheint der ESP8266 als eine gute Lösung, um einen Schalter zu bauen, der bei Betätigung per WLAN eine Aktion auslöst.

Projektteilnehmer


Bilder

Funktionsweise

Die Umsetzung ist "chaotisch": Die Basistechnologien sind der ESP8266, MQTT und die NodeMCU-FIrmware . ESP8266 benötigt 2,8V bis 3,3V Strom und lässt sich damit ideal an entweder zwei Migon-Alkaline-Batterien oder an einer 3V CR2-Lithiumzelle betreiben. Der ESP8266 ist ausserdem so kompakt, dass er zusammen mit einer Lithiumzelle in einem Aufputz-Tastergehäuse verschwindet. Über die Nodemcu-FIrmware lässt sich der ESP8266 in einen DeepSleep-Mode versetzen und benögit nach unseren Messungen dann nur noch ca. 30 Mikroampere Strom. Damit ist der Ruhestrom so gering, dass auch die Lithium-Batterie eine ausreichend lange Betriebszeit bereitstellen sollte. Um die zur Verfügung stehende Strommenge möglichst optimal zu nutzen, arbeitet der ESP8266 nun in etwa folgendes ab, nachdem er über den Schalter resettet worden ist:

  • Oh, was jetzt ? Leben!
  • Ah ein WLAN! Ich probiere mal 10 Sekunden, da reinzu gehen
    • Ich bin im WLAN, Yeah! Was für einen Wert hat den der MQTT-Topic für das Licht ? an oder aus?
    • Okay, schreibe per MQTT das Gegenteil
  • Gute nacht! ich geh wieder schlafen

Der gesamte Vorgang benötigt etwa 2-3 Sekunden. Währen dieser Zeit benötigt der ESP8266 zwischen 100 und 250 mA und geht dann wieder schlafen.


Hardware

Die komplette Hardware besteht eigentlich aus dem Taster im Aufputzgehäuse und dem ESP8266-Modul. Ausserdem benötigt man einen 10kOhm Wiederstand und ein wenig Litze. Dann wird folgende Verbindung hergestellt:

  • Batterie-Minus <-> ESP8266 GND <-> Taster-Eingang1
  • Batterie-Plus <-> ESP8266 VCC <-> ESP8266 GPIO0 <-> ESP8266 CH_PD
  • Batterie-Plus <-10kOhm-> ESP8266 RST
  • Taster-Eingang2 -> ESP8266 RST

Im Regelbetrieb liegt also der Reset-PIN über 10kOhm Pullup gegen VCC und wird durch den Taster zum Resetten auf GND (=Batterie-Minus) gezogen

Normalerweise hat das ESP8266 auf dem von uns verwendeten Modul ESP-01 eine rote Power-LED. Diese LED haben wir von der Platine gekratzt,damt konnten wir die Stromaufnahme im Deepsleep-Modus mehr als halbieren und benötigen eben noch etwa 30Mikro-Ampere

Bedienung

Der Schalter benutzt die statische IP 10.23.42.22

Der erste WorldDominationSwitch schaltet das Licht in unserer Werkstatt ein- und aus. Dazu liest er den derzeitigen Lichtstatus über das MQTT-Topc /room/light/5/state ein und schaltet die Lichter über die MQTT-Topics /room/light/5/command und /room/light/6 command um.

Wenn das MQTT-Topic /room/light/debug auf "enabled" steht, dann legt sich der Schalter nicht automatisch schlafen. Über "nc 10.23.42.22 2323" kann man sich dann auf das LUA-CLI verbinden.

Bei dem derzeitigen Code legt sich der Schalter nach 10 MInuten Laufzeit aber auf jeden Fall auch dann schlafen, um die Batterie nicht auszulutschen.

Achtung: Zugriff auf CLI nur durch qualifiziertes C3MA-Fachpersonal !!

Firmware-Hinweis

Aufgrund eines Speicherengpasses mussten wir die NodeMCU-Firmware ohne Flieskomma-Unterstützung kompilieren. Hierzu muss man die Firmware selbst kompilieren, nachdem man in die /app/lua/luaconf.h bei Zeilennummer 572 die Anweisung

  • #define LUA_NUMBER_INTEGRAL

einfügt.


Quellcode