Basteleien

ESP8266-01-WLAN-Thermostat mit ESP8266-01-WLAN-Relais für Stellantrieb Fußbodenheizung

 

1. WLAN-Thermostat mit DS18B20 Temperaturfühler an ESP8266-01

1.1 Flashen der Firmware

Zunächst muß der esp8266-01 mit der nodemcu-firmware geflasht werden.Dazu benötigt man den nodemcu flasher-master.

Diese Software kann hier: nodemcu-flasher heruntergeladen werden.

In der Software die Com-Schnittstelle des FTDI-Programmierers einstellen und unter config die firmware an der Adresse 0x00000 auswählen. Vorne mit dem Kreuz diese Adresse markieren. Dann unter Operation den ESP8266-01 flashen. Als Firmware wähle ich, diese scheint mir am stabilsten zu sein: nodemcu_integer_0.9.5_20150318.bin.

Damit der esp8266-01 geflasht werden kann muß  GPIO 00 mit GND verbunden werden.

Schaltbild ESP8266-01 – Flashen

Pin-Belegung ESP8266-01

ESP8266-01-Thermostat im Gehäuse mit 5V Mikro-USB-Anschluß

 

 

 

1.2 Programmieren des Thermostat-ESP8266-01

Der ESP8266 kann mit Hilfe der Software Esplorer programmiert werden ( Nach dem flashen kurz die Stromversorgung unterbrechen, sonst gibt es keine Verbindung über den Esplorer).

Die Software kann hier heruntergeladen werden: ESPlorer.

Damit der ESP8266 als Thermostat fungieren kann ist ein Temperaturfühler DS18B20 erforderlich. Der Temperaturfühler wird wie folgt an den ESP8266 angeschlossen:

Schaltplan ESP8266-01-DS18B20

 

Esplorer-Reiter Skript

 

Mit „Save to ESP“ werden die lua Dateien auf dem ESP8266 gespeichert. Die init.lua ist eine autostartdatei, sie wird sofort beim start des ESP8266 ausgeführt. Deshalb empfiehlt es sich zum ausprobieren die init.lua z.Bsp. in test.lua umzubenennen, auf dem ESP8266 zu speichern und über den Button Run zu starten. Erst wenn man weiß, daß alles funktioniert die test.lua wieder löschen und als init.lua auf dem ESP8266 zu speichern. Diese Prozedur vermeidet, daß der ESP8266 in versehentlich programmierte Endlosschleifen läuft, diese sind dann, wenn überhaupt nur sehr mühsam wieder zu beseitigen.

Esplorer-Reiter Command

Hier der Reiter Commands des Esplorer. Hier können verschiedene Befehle an den ESP8266 abgesetz werden (Restart, ChipID, List files und nicht zu vergessen der Befehl „compile send.lua to .lc“ – dies gilt natürlich für jedes andere auf dem esp8266 gespeichert lua-skript also „compilie xxx.lua to .lc“. Dies kann interessant sein, wenn es Speicherplatzprobleme gibt, denn die compilierten .lc skripte benötigen meistens nicht so viel Speicherplatz. Nach dem compilieren kann man dann die entsprechende lua-Datei vom ESP8266 löschen.

1.3 Dateien des WLAN-Thermostat-ESP8266-01 und ihre Funktionen

Insgesamt sind vier .lua Dateien erforderlich: init.lua, ds18b20.lua, send.lua, ds.lua.

Die Datei init.lua erzeugt einen webserver für die Einstellung der Solltemperatur und Anzeige der Ist-Temperatur Die Webseite (smartphonegerecht dimensioniert) kann von jedem Browser, sofern er sich im eigenen privaten LAN-Netz befindet mit der Adresse (hier 192.168.178.110, das ist die IP-Adresse des Web-Servers des ESP8266-01) aufgerufen werden:

Webseite esp8266-Thermostat

ESP8266-01-Thermostat im Gehäuse mit mikro-USB Anschluß für die 5V Stromversorgung

 

Beim Start des ESP8266 wird die Standard-Soll-Temperatur von 21 Grad Celsius eingestellt (stemp=21, am Anfang der Datei init.lua). Über einen timer wird alle 30 Sekunden die Dateien ds.lua und send.lua ausgeführt. Die Datei ds.lua sorgt dafür, daß – durch den timer alle 30 sek- die Temperatur gemessen wird (temp). Die Datei send.lua – durch den timer alle 30 sekunden – sendet die Ist-Temperatur und die eingestellte Soll-Temperatur an eine php-datei in einem Webserver eines RaspberryPi (temp_vergleich.php).Wichtig ist natürlich, daß sowohl in der Datei send.lua als auch in der Datei temp_vergleich die richtigen IP-Adressen eingetragen werden (IP-Adresse des Webservers des RaspberryPi in der Datei send.lua, IP-Adresse des zweiten ESP8266 mit Relais in der Datei temp_vergleich.php. Auch muß in der Datei init.lua das richtige WLAN-Netz mit dem entsprechenden Passwort eingetragen werden (Zeile8: wifi.sta.config(„name_wlan_netz“,“passwort_wlan_netz“). In der Datei init.lua wird eine feste IP-Adresse erzeugt (Zeile 10:wifi.sta.setip({ip=“192.168.178.110″,netmask=“255.255.255.0″,gateway=“192.168.178.1″}).

In dieser Datei (temp_vergleich.php) werden Soll-und Ist-Temperatur miteinander verglichen. Abhängig vom Ergebnis des Vergleiches sendet die php-Datei temp_vergleich.php den Befehl „0x“ oder „1x“ an den ESP8266-01 mit Relais.

Ist die Ist-Temperatur grösser als die Solltemperatur wird das Signal „0x“ – was gleichbedeutend mit Ausschalten ist – an einen weiteren ESP8266-01, der ein Relais ansteuert, gesendet. Die Stellantriebe der Fußbodenheizung werden ausgeschaltet.

Ist die Ist-Temperatur kleiner als die Solltemperatur wird das Signal „1x“ – was gleichbedeutend mit einschalten ist – an den ESP8266-01 mit Relais gesendet. Die Stellantriebe der Fußbodenheizung werden eingeschaltet.

Möchte man die Standardeinstellung der Solltemperatur von 21 Grad Celsius verändern, so muß lediglich einer der Buttons 18, 18.5, 19.5, 20, 20.5, 21, 21.5 22, 22.5, 23, 23.5, 24 gedrückt werden, die Solltemperatur ändert sich entsprechend dieses Wertes. Genauso wie die Ist-Temperatur alle 30 sek per Timer an den Webserver des RaspberryPi gesendet wird, so wird auch die Solltemperatur alle 30 sek an den Raspi gesendet, in der Datei temp_vergleich.php auf dem Web-Server des RaspberryPi mit der Ist-Temperatur verglichen und der zweite ESP8266-01 mit Relais entspechend den Werten geschaltet.

 

2. WLAN-Thermostat-Relais mit einem ESP8266-01

Da der ESP8266-01-Thermostat-Relais im Heizungsraum untergebracht wird, muß natürlich sichergestellt werden, daß für diesen ESP8266 auch WLAN-Empfang gewährleistet ist.

Der ESP8266-01 für das Thermostat-Relais wird  im Grundsatz beschaltet wie der ESP8266-Thermostat. Anstelle des Temperaturfühlers DS18B20 wird das Relais angeschlossen.  Das Schaltbild des 5V/220v Relais sieht folgendermaßen aus:

Relais Prinzipschaltplan

 

ESP8266-01-Thermostat-Relais-Schaltplan

 

2.1 Dateien des ESP8266-01 Thermostat-Relais

 

Für den ESP8266-01-Thermostat-Relais sind zwei Dateien erforderlich: init.lua, antwort_r.lua

Die Datei init.lua versorgt den ESP8266 mit einer IP-Adresse aus dem privaten Netz. Hier wurde eine feste IP-Adresse .109 gewählt.

Weiterhin ist der ESP8266 mit der IP-adresse 192.168.178.109:9274 auf Port 9274 empfangsbereit für Befehle.

Bekommt der ESP8266 von der Datei temp_vergleich.php den Befehl „0x“, so wird der Pin GPIO02 auf HIGH=3,3V geschaltet. Das Relais schaltet den Stellantrieb aus. Die Heizung ist aus.

Bekommt der ESP8266 von der Datei temp_vergleich.php den Befehl „1x“, so wird der Pin GPIO02 auf LOW=0V=GND geschaltet. Das Relais schaltet den Stellantrieb an. Die Heizung ist an.

Mit Hilfe der Datei antwort_r.lua wird eine Webseite erzeugt, die den Zustand des ESP8266-Thermostat-Relais anzeigt, „Heizung ist AUS“ oder „Heizung ist AN“. Darüber hinaus kann mit Hilfe eines Buttons der Zustand des Relais manuell abgefragt werden.

 

Webseite Thermostat-Relais

Thermostat-Relais im Einsatz an der Heizung