WiFi-Thermostat-Projekt-Repository mit Maschinencodes für die Zielplattform ESP8266 und ESP32: Github repo
Die Firmware WiFi_Thermostat und WiFi_Thermostat_mDNS ist in englischer Sprache für die Mikrocontroller ESP32 und ESP8266 (Espressif Systems) verfügbar. Die experimentelle Version der Basis-Firmware mit manueller Ausgabesteuerung ist nur in slowakischer Sprache verfügbar.
Unterstützen Sie das WiFi-Thermostat-Projekt über PayPal. Der Support ermöglicht es Ihnen, in Zukunft neue Funktionen hinzuzufügen und den Quellcode der Anwendung zu öffnen: PayPal donate
Die Softwareimplementierung ist speziell für Mikrocontroller-Plattformen von Espressif Systems mit WiFi-Konnektivität konzipiert. Sie unterstützt WiFi (2,4 GHz) auf ESP8266- und ESP32-Mikrocontrollern.
Der WiFi-Thermostat ist über das LAN-Netzwerk zugänglich und mit einer Weboberfläche ausgestattet. Diese dient der Konfiguration aller Thermostatelemente und ermöglicht gleichzeitig die Visualisierung der aktuellen Zustände.
Der Thermostat steuert den Kessel basierend auf der gemessenen Solltemperatur und einer Hysterese. Diese Regelung erfolgt unabhängig von der Webapplikation, die für die Konfiguration und Entscheidungsschwelle des Thermostats dient.
Zusätzlich zur Verfügbarkeit des Thermostats unter einer bestimmten IP-Adresse kann der Thermostat durch einen mDNS-Record ergänzt werden. Dieser generiert eine lokale Domain (hostname.local) innerhalb des Multicast-Dienstes, die nur im LAN-Netzwerk erreichbar ist.
Die Konfiguration des Thermostats im Heim-WLAN-LAN-Netzwerk wird durch den WiFiManager gesichert. Dieser speichert die WLAN-Netzwerkdaten (SSID und Passwort) im Flash-Speicher des Mikrocontrollers. Die Konfiguration wird einmalig durchgeführt, und das Gerät merkt sich die Einstellungen dauerhaft. Nach erfolgreicher Konnektivität (Zuweisung einer IP-Adresse durch den Router des WLAN-Heimnetzwerks) ist der Thermostat vollständig einsatzbereit.
Der HTTP-Webserver auf dem ESP8266/ESP32-Mikrocontroller ermöglicht das Ausführen mehrerer unabhängiger HTML-Seiten. Diese können informativ oder sogar funktional gestaltet sein.
In Bezug auf die Hardware verwendet das Projekt:
ESP8266 / ESP32
Temperatursensor DS18B20 am OneWire-Bus
Relais SRD-5VDC-SL-C / OMRON G3MB-202P zur Kesselschaltung (Active-LOW-Signal)
HTML-Seiten mit ESP8266 / ESP32:
/ - Grundseite mit Formular, aktueller Logikausgang für das Relais, aktuelle und Solltemperatur, Hysterese
/action.html - verarbeitet Werte aus dem Formular, schreibt sie in den emulierten EEPROM-Speicher, leitet den Benutzer zurück zur Stammseite
/get_data.json - verteilt Daten zur aktuellen Temperatur, Referenztemperatur und Hysterese an Dritte (Computer, Mikrocontroller, anderer Client ...) im JSON-Format - kann mit dem Beispiel verwendet werden JSON-Client, der Daten an MQTT Broker senden kann, zum Beispiel an die Hausautomation
Erweitert mit HTML-Seiten in einer experimentellen Version mit manuellem Modus, falls vorhanden:
/on.html - Ausgabe im manuellen Modus dauerhaft einschalten
/vyp.html - Ausgabe im manuellen Modus dauerhaft deaktivieren
/automat.html - Modus auf Automatik ändern (verwendet Hysterese und Zieltemperatur)
/manual.html - Wechseln Sie in den manuellen Modus (permanente EIN / AUS-Hardsteuerung)
Die Auflösung des DS18B20-Sensors beträgt während der Messung 12 Bit, was eine Temperaturauflösung von 0,0625 °C ergibt, was gleichzeitig der minimale Schritt zwischen den verschiedenen Messwerten ist. Daten über den OneWire-Bus können bei Bedarf in 500 bis 1000 ms an den Mikrocontroller zurückgesendet werden, abhängig von der Anzahl der Sensoren und der Buslänge.Das im Projekt verwendete elektromagnetische Relais SRD-5VDC-SL-C ermöglicht das Schalten bis zu 10A bei 230V, was einer Leistung von 2300W entspricht. Beim Schalten eines Gleichstromkreises (Last) können 300W (10A bei 30V DC) geschaltet werden. Als Alternative ist das OMRON G3MB-202P SSR-Relais voll kompatibel zum Schaltplan, jedoch nur für nicht induktive Lasten und ausschließlich für Wechselstromkreise geeignet, mit einer maximalen Schaltleistung von 460W (230V, 2A).Der Thermostat ist das ganze Jahr über einsatzbereit. Im Falle einer unnötigen Steuerung besteht die Möglichkeit, den Ausgang physisch zu trennen und den Thermostat als WLAN-Thermometer zu verwenden, um Daten aus dem Raum zu erhalten, in dem er sich befindet.
Bei einer Firmware mit Unterstützung für die manuelle Steuerung des GPIO-Ausgangs des ESP-Mikrocontrollers kann der Thermostat physisch ausgeschaltet werden, ohne ihn von der Relaisklemme trennen zu müssen. Die Thermostatlogik wird unabhängig vom Webserver und den angeschlossenen Clients alle 10 Sekunden ausgeführt, und es ist keine Keep-Alive-Verbindung erforderlich.
Bei jeder Ausführung der Logik schreibt der Thermostat Informationen über die aktuelle IP-Adresse oder den mDNS-Record (bei Verwendung mit mDNS-Firmware) auf den UART-Thermostat. Dadurch erhält der Benutzer Auskunft darüber, wo der Thermostat mit seinem Webinterface im LAN-Netzwerk erreichbar ist. Zusätzlich listet er den dynamischen freien Speicher (HEAP), der von 40 bis 44 kB reicht, sowie den aktuellen Status der Ausgabe auf, mit Benachrichtigung über Änderungen, falls sie auftreten (z. B. wenn die Entscheidungsschwelle überschritten wird).
Die 3V3-GPIO-Betriebslogik der ESP8266- und ESP32-Mikrocontroller reicht für ein digitales Änderungssignal aus, aber das Relais muss mit 5 V von VUSB bzw. VIN versorgt werden.
Die Webschnittstelle des WiFi-Thermostats ermöglicht Ihnen:
Sehen Sie in Echtzeit die Temperatur des DS18B20-Sensors, die Betriebszeit des Geräts, den Ausgabewert mit dynamischer Änderung, die aktuell eingestellten Konfigurationsdaten für den Thermostat, d. Solltemperatur und Hysterese
Ändern Sie die Ziel-(Referenz-)Temperatur im Bereich von 5 bis 50 °C in Schritten von 0,25 °C
Ändern Hysterese von 0 bis 10 ° C in Schritten von 0,25 ° C
Die Programmimplementierung eines Thermostats mit automatischer und manueller Leistungsregelung ist experimentell!
Kessel EIN / AUS-Steuerung - Automatikmodus:
Beispiel für EIN / AUS der Heizungssteuerung - VISUALISIERUNG IST NICHT TEIL DES PROJEKTS
Der Kessel ist aktiv, solange die Solltemperatur + Hysterese erreicht ist
Die Visualisierung von Wassertemperaturen zeigt die sogenannte Heizlauf und anschließendes Abkühlen des Wassers bis die Heizung wieder aktiviert wird, wenn die gemessene Temperatur unter der eingestellten Solltemperatur liegt - Hysterese
In der Basisversion des WiFi-Thermostats (ohne mDNS-Aufzeichnung) wurde ein manueller Steuermodus (hart EIN / AUS) implementiert mit der Möglichkeit zwischen manuellem und automatischem Modus umzuschalten.
Die Weboberfläche ist für größere und kleinere Bildschirme ausgelegt. Es ist reaktionsschnell und unterstützt hochauflösende Breitbild-Bildschirme sowie mobile Geräte.
Die Schnittstelle verwendet importierte CSS-Stile des Bootstrap-Frameworks von einem externen CDN-Server, der das clientseitige Gerät lädt, wenn eine Seite geöffnet wird, die auf ESP ausgeführt wird.
Durch den Import von CSS-Stilen von einem externen Server wird die Strom- und Speicherbelastung des Mikrocontrollers reduziert.
Um die eingestellten Werte des Thermostats auch nach einem Stromausfall zu bewahren, werden diese im EEPROM-Speicher des ESP gespeichert, der im Flash-Speicher emuliert wird, da die Plattform keinen physischen EEPROM-Chip besitzt. Die Referenztemperatur wird am Offset 10 gespeichert, die Hysterese am Offset 100. Jeder der Werte belegt maximal 5 Bytes im EEPROM-Speicher, zusätzlich zum Endzeichen.
Die Daten werden erst beim Senden des HTML-Formulars überschrieben, und der Betrieb des Thermostats schont den EEPROM-Speicher für maximale Haltbarkeit. Der Zustand des Ausgangs existiert nur im RAM-Speicher, wo er bei Änderungen überschrieben wird. Der Wert wird nicht im emulierten EEPROM-Speicher im Flash-Speicher abgelegt.
Wenn das Gerät beim ersten Start keine Daten auf den genannten EEPROM-Offsets gespeichert hat, erfolgt automatisch ein Schreiben mit Standardwerten: Referenztemperatur 20,25 °C und Hysterese 0,00 °C. Dadurch wird sichergestellt, dass der Thermostat auf Mikrocontrollern arbeiten kann, die keine vorherigen Werte im EEPROM-Speicher gespeichert haben - eine ausfallsichere Lösung.
ESP8266 und ESP32 verwenden die Funktion EEPROM.put() zum Schreiben in den EEPROM-Speicher, der jeden Datentyp unterstützt. Um das Schreiben in den Ziel-Offset zu bestätigen, wird EEPROM.commit() verwendet. Die Implementierung verwendet den Datentyp float() für eine 32-Bit-Zahl, die im EEPROM gespeichert wird und zur Referenz-(Soll-)Temperatur sowie zur Hysterese gehört.
Mit dem Refresh-Meta-Tag aktualisiert der Webserver alle 30 Sekunden die gesamte HTML-Seite, und die JavaScript-Zeit bis zum Refresh wird ebenfalls per JavaScript in die HTML-Seite geschrieben. Zu diesem Zeitpunkt ist es notwendig, die Änderung für den Thermostaten zu schreiben, da sonst die Eingabefenster für numerische Eingaben im Formular beim Aktualisieren der Seite zurückgesetzt werden.
Da die eingebaute Ethernet-Bibliothek die Verwendung eines asynchronen Webservers nicht beinhaltet (der beispielsweise mit den Espressif ESP8266/ESP32-Mikrocontrollern verwendet werden kann), ist es erforderlich, die gesamte Seite neu zu schreiben, da diese Implementierung 1:1 mit dem originalen Ethernet-Thermostat ist.
Die sich hauptsächlich ändernden dynamischen Daten betreffen den aktuellen Wert der Ausgabe - EIN / AUS, der dem Bediener den aktuellen Zustand der Ausgabe zusammen mit der Farbcodierung zeigt. Es ist zu beachten, dass die Systemlogik unabhängig vom Webserver arbeitet, daher kann sich die Ausgabe bereits in einem anderen Zustand befinden als in der Webanwendung aufgeführt. Eine Änderung der Ausgabe wird beispielsweise sofort auf den UART-Monitor geschrieben.
Auf der Website des Thermostats findet der Benutzer auch Informationen über die Betriebszeit des Geräts, wie lange es bereits in Betrieb war, angegeben in Tagen, Stunden, Minuten und Sekunden.
Der Thermostat ist ausschließlich für Innentemperaturen gedacht (über 0°C), an die die Systemlogik angepasst ist!
Der Thermostat kann vielseitig eingesetzt werden, beispielsweise um einen vorhandenen Raumthermostat zu ersetzen. Auch die Heizung im Aquarium oder Terrarium kann vorübergehend durch den Thermostat ersetzt werden, um eine konstante Temperatur aufrechtzuerhalten.
Der Autor des WiFi-Thermostats übernimmt keine Verantwortung für die Funktionalität des Thermostats, Ausfälle des Kessels oder Stromschläge aufgrund unsachgemäßer Installation des Thermostats im Netzwerk.
Hauptseite zur Änderung der Zieltemperatur und der Hysterese - Demo auf:
Beispieldaten
Zieltemperatur: 22.75 °C
Hysterese: 0.25 ° C
Messdaten: 22.49 ° C
Ausgabe: EIN
Der Thermostat heizt ab einer gemessenen Temperatur von 22.49 °C und darunter.
Wenn die Temperatur 23.01 °C erreicht, wird der Ausgang ausgeschaltet, das Melderelais öffnet und der Gaskessel hört auf zu heizen.
Das Aufheizen und Abkühlen des Raumes, in dem die Messungen durchgeführt werden, erfolgt.
Der Thermostat wird erst wieder aktiviert, wenn die Temperatur 22.49 °C oder niedriger erreicht.
Hauptseite zur Änderung der Solltemperatur und Hysterese:Verarbeitungsprozess der eingegebenen Daten (Nutzerumleitung):JSON-Webserverausgabe im Browser / Client über Websocket:
Ausgabe an UART-Monitor - Systemlogik + IP-Adresse einstellen, mDNS-Record:
Eine erweiterte Version des WiFi-Thermostats umfasst:
Bearbeitbarer Quellcode (.ino)
Verfügbare Sensoren SHT21, SHT31, DHT22, BME280, BMP280 für die Kesselsteuerung
Kühlmodus (inverse Logik zum Heizthermostat)
Basic OTA, OTA Web Updater, Eleganter Remote OTA
Möglichkeit, die Ausgabe über Callbacks zu steuern, die von UDP-Datagrammen über UDP-Clients (Packet Sender) aufgerufen werden.
Interaktion mit Amazon Alexa Echo Dot mit der Möglichkeit der Sprachsteuerung des Thermostats (UDP-Rückrufe)
Möglichkeit zur Veröffentlichung von Daten an MQTT Broker / per HTTP / HTTPS-Anfrage an einen entfernten Webserver mit Datenspeicherung in einer MySQL-Datenbank (ohne JSON-Client)
Verfügbare Bibliotheken für Mikrocontroller (ESP)
Bibliotheksarchiv (.zip) expandieren zu C:/Users/[User]/Documents/Arduino/libraries
Name der Bibliothek
Bibliotheksfunktion
Herunterladen
Dallas
Bibliothek für ESP8266- und ESP32-Mikrocontroller.
Es ermöglicht die Kommunikation mit dem Dallas DS18B20-Sensor auf dem OneWire-Bus. Kommunikationsmöglichkeit nach normaler oder parasitärer Verbindung.
Bibliothek für ESP8266- und ESP32-Mikrocontroller.
Erstellt einen Zugangspunkt (AP) und ein Captive-Portal zum Konfigurieren eines WLAN-Thermostats in einem WLAN-Heimnetzwerk.