ESP8266-WiFi-Thermostat.txt 6.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ESP8266-WiFi-Thermostat und Raumsensor
  2. ======================================
  3. Einfacher WiFi-fernsteuerbarer Thermostat aus billigen Komponenten
  4. Ziel war die Entwicklung eines auf wesentliche Funktionen reduzierten Raumthermostat, der über WiFi an ein
  5. Netzwerk angebunden und fernbedient werden kann. Der Aufbau sollte möglichst mit günstigen Standardkomponenten
  6. auskommen und in ein möglichst platzsparendes Gehäuse untergebracht werden.
  7. Das Gerät soll zur direkten Ansteuerung einer Gastherme benutzt werden und den vorhandenen mechanischen oder
  8. elektronischen/programmierbaren Raumthermostat ersetzen. Es wurde bewusst auf erweiterte Funktionen wie
  9. Uhr und Programmierbarkeit verzichtet, um die Komplexität gering zu halten. Da das Gerät sowieso in Verbindung mit
  10. einer zentralen, "intelligenten" Haussteuerung genutzt werden soll ist das nicht erforderlich.
  11. Lediglich die Grundfunktionalität muss für den Fall eines Ausfalls der zentralen Steuerung oder des Netzwerks
  12. autark gegeben sein. Als Haussteuerung soll die Open-Source Software Domoticz zum Einsatz kommen.
  13. Die implementierten Funktionen reduzieren sich somit auf:
  14. - Messung der aktuellen Raumtemperatur (und Luftfeuchtigkeit, nur für Telemetrie, für die Regelung nicht erforderlich)
  15. - Thermostat mit Hysterese und umschaltbarem Modus mit zwei unterschiedlichen Solltemperaturen (Normalbetrieb und Absenkbetrieb) + Aus
  16. - direkte Bedienung über Tasten
  17. - Ausgabe auf LCD: aktuelle Temperatur, Soll-Temperatur, Betriebsmodus
  18. - Telemetrie über WiFi (MQTT-Protokoll)
  19. - Fernbedienung von Solltemperatur und Modus via MQTT und der Vollständigkeit halber auch über Webinterface
  20. - direkte MQTT-Anbindung an die Domoticz-Zentrale für Temperatursensor, Solltemperatur und Betriebsmodus
  21. - einfaches Webinterface
  22. - Konfiguration der wichtigsten Parameter via UART/MQTT-Befehle sowie Webinterface
  23. - Speicherung des aktuellen Betriebsmodus sowie der Soll-Temperatur
  24. - WiFi und MQTT-Anbindung im non-blocking mode
  25. Optional:
  26. - IR Abstandssensor (aktivierung der Displaybeleuchtung bei Annäherung)
  27. - PIR-Bewegungssensor (Anwesenheitserkennung durch Steuerzentrale - Statusänderung wird nur via MQTT gepublished)
  28. - Anzeige der Aussentemperatur (wenn diese via MQTT angeliefert wird - in diesem Fall wechselt die Anzeige wie im per DisplayInterval festgelegt)
  29. - Bedienung lokal:
  30. - Umschaltung des Betriebsmodus (Normal, Absenkung, Heizung aus)
  31. - Änderung der Solltemperatur für Normalbetrieb (+ und - Taste)
  32. - bei Tastendruck - egal welcher Taste - wird zunächst nur die Displaybeleuchtung eingschaltet, nach einstellbarem Timeout ohne Bedienung wieder aus
  33. erst bei aktiver Beleuchtung ist die Eingabe aktiv (dies wird wenn vorhanden durch den IR-Abstandssensor ersetzt bzw. ergänzt)
  34. - Fernsteuerung über MQTT:
  35. - Solltemperatur ändern
  36. - Betriebsmodus umschalten
  37. - Konfigurationsparameter setzen
  38. - Einstellungen:
  39. - Solltemperatur für Absenkbetrieb
  40. - Hysterese
  41. - minimale Einschaltzeit der Heizung (Verhinderung zu häufiger Taktung bei zu kleiner Hysterese)
  42. - minimale und maximale über Tasten und MQTT/Domoticz einstellbare Soll-Temperatur
  43. - MQTT out topic, an welches die verschiedenen Werte zyklisch gepublished werden (jeweils eigenes hardcoded subtopic)
  44. - domoticz/out topic (zur empfohlenen Nutzung des Hierarchical out topic in Domoticz - domoticz/out/${floorplan name}/${plan name})
  45. - Domoticz-Idx für die einzelnen Messwerte/Steuerfunktionen
  46. - MQTT-Server Host, Port, User, Passwort, Last-Will-Topic usw.
  47. - Webinterface User und Passwort
  48. - Konfiguration via WiFi-Manager - wenn kein WiFi konfiguriert ist oder nicht verbunden werden kann wird ein AP geöffnet, über den die Konfiguration erreichbar ist
  49. - SSID und WPA-Key
  50. - Konfiguration nur zur Compile-Zeit:
  51. - Pin-Zuordnungen
  52. - I2C-Adressen (LCD)
  53. - Fallback AP-Name für WiFiManager, sowie Passwort dafür
  54. - Speicherung:
  55. Konfigurationsänderungen werden im SPIFFS dauerhaft gespeichert.
  56. Bei Änderung via MQTT/UART-command erst nach Ausführung des save-Befehls, bei Änderung über das Webinterface direkt.
  57. Änderung des Betriebsmodus sowie der Solltemperatur wird - wenn dies in der Konfiguration aktiviert ist - nach einem Timeout von 5 Sekunden nach der letzten Änderung
  58. gespeichert.
  59. - Domoticz-Anbindung:
  60. Domoticz wird über MQTT direkt unterstützt, wenn mindestens eine Idx konfiguriert wurde.
  61. Folgende Domoticz-Dummy-Devices werden unterstützt bzw. benötigt:
  62. - Thermostat SetPoint - für die Soll-Temperatur
  63. - Selector Switch mit 3 Stufen - für die Betriebsart, 0 = Aus, 10 = Normal, 20 = Absenkung
  64. - Temp + Humidity
  65. Es wird, sofern mindestens eine Idx und ein domoticz/out-topic konfiguriert ist, das konfigurierte domoticz/out-topic subscribed und jede darin eingehende Payload geprüft.
  66. Da die Payloads relativ groß und im json-Format sind, und die Idx anhand jedes Gerät "seine" messages identifiziert nicht im topic name sondern nur
  67. in der Payload selbst ersichtlich ist, muss dabei jede eingehende Payload verarbeitet werden. Je nach Umfang der Domoticz-Installation kann das eine
  68. sehr große Zahl an Payloads pro Zeit bedeuten - das ist mit den limitierten Ressourcen auf einem MCU sehr problematisch.
  69. Aus diesem Grund sollte NIEMALS das komplette domoticz/out-topic benutzt werden, sondern immer ausschließlich das Hierarchische.
  70. Hierbei werden alle Geräte einem Floorplan zugewiesen und sind dann unter dem topic domoticz/out/${floorplan name}/${plan name} verfügbar.
  71. Kommt ein neuer Wert für eines der Devices via domoticz/out herein, so wird dieser Wert unmittelbar übernommen und ohne Verzögerung die Speicherung im Flash ausgelöst.
  72. Wirklich im Flash gespeichert wird allerdings nur wenn sich der Wert auch tatsächlich geändert hat.
  73. Bei Änderung eines lokalen Werts (Betriebsmodus, Soll-Temperatur) - über Tasten, Webinterface oder MQTT - wird dieser neue Wert wie schon beschrieben 5 Sekunden nach
  74. der letzten Änderung im Flash gespeichert. Gleichzeitig wird der neue Wert über MQTT an das topic domoticz/in mit gleicher Idx gepublished.
  75. Das ist auch dann der Fall, wenn die Änderung von domoticz/out gekommen ist. Um eine Endlosschleife zu verhindern wird nach einem solchen publish für 2 Sekunden die
  76. domoticz/out-Verarbeitung deaktiviert. Dadurch ist gewährleistet, dass jede Änderung in beide Richtungen aktuell gehalten wird, aber in keinem Fall eine Endlosschleife
  77. zwischen dem Thermostat und Domoticz auftreten kann.