In meinem alten Haus interpretiere ich einen Heizkreis als einzeln steuerbaren Heizkörper bzw. dessen Stellventil. Das Stellventil wird per Aufsteckmotor geöffnet bzw. geschlossen. Diese Anordnung ist kostengünstig und bisher sehr verlässlich. Nach ersten Erfahrungen sparen solche Regelungen wegen ihrer Zielgenauigkeit und Fernverfügbarkeit deutlich erkennbar Energie ein. Einen Sprachassistenten kann ich hierfür derzeit allerdings nicht nutzen. Dies ist einem Shelly TRV (s.u.) vorbehalten.
Technische Vor- und Nachteile
Die Regelung arbeitet mit jeder relevanten Zieltemperatur verlässlich und genau. Hierbei ist sie jedem mechanischen Thermostaten deutlich überlegen.
Sie benötigt für ihre Funktion elektrische Energie. Elektrische Energie ist jedoch auch für den Betrieb der Heizanlage erforderlich.
Unsere Smart Home Umgebung
Seit 2021 nutzen wir zwei verschiedene Gerätearten des bulgarischen Herstellers Allterco Robotics zur elektrischen Heizkreisregelung. Die darin eingesetzten Mikrocontroller vom chinesischen Hersteller Espressif sind in der ersten Gerätegeneration ESP8266 und in der zweiten Generation ESP32. Die Firmware von Allterco Robotics für die meisten Geräte der zweiten Generation basiert auf dem RTOS mongoose und stellt sehr vielseitig nutzbare Programmierschnittstellen bereit. Insbesondere anwendungsbezogene Implementationen sind mit Hilfe von Skripten in einer JavaScript Untermenge realisierbar.
Ich setze eine selbst zusammengestellte Smart Home Zentrale (kurz: Smartcenter) auf Basis eine Raspberry Pi ein. Auf einer solchen Zentrale sollten zumindest Node-RED und ein MQTT Broker (hier Mosquitto) arbeiten. Ich nutze darauf zusätzlich das Zeitreihen-Datenbanksystem Influx und zur grafischen Darstellung von Zeitfunktionen Grafana.
Bisher genutzte Gerätearten zur Heizkreisregelung
- Ein Shelly 1 mit Sensor-AddOn ist ein Gerät der ersten Generation, womit kein Skript möglich ist.
Die Regelung wird hier per Node-RED Flows implementiert, ist somit ausschließlich funktionstüchtig bei Verfügbarkeit und Erreichbarkeit des Smartcenter. - Ein Shelly TRV (vermutlich von Temperature Regulating Valve) mit eingebautem Akkumulator. Diese Geräteart arbeitet autark, solange der Akkumulator einen hinreichenden Ladezustand aufweist.
- Das jüngste "Mitglied": Ein Shelly Plus 1 mit Sensor-AddOn ist ein Gerät der zweiten Generation. Dieses arbeitet an Hand eines von mir erstellten Skripts autark. Bisher ist nur ein Gerät dieses Typs im Einsatz.
Insbesondere die dritte Geräteart überzeugt mich am meisten, weshalb ich die anderen sukzessive durch diese ersetzen will. Zur Bedienung einer solchermaßen implementierten Heizkreisregelung nutze ich ein per Node-RED Flows implementiertes Dashboard. Das Dashboard ist eine interaktive Website, welche somit auf verschiedenen Endgeräten in einem halbwegs aktuellen Browser verfügbar ist. Genutzt werden können PC/Notebook, Tablet, Smartphone. Es stellt folgende Mensch-Maschinen-Schnittstellen bereit.
- Ablesen von aktueller Temperatur und ggf. relativer Luftfeuchtigkeit.
- Ad hoc Änderung der Zieltemperatur.
- Modus "Fenster offen" stellt automatisch temporär eine festgelegte Zieltemperatur ein.
- Acht Wochenpläne zur automatischen Einstellung der Zieltemperatur an Wochentagen und zu Uhrzeiten.
Diese können freigegeben und gesperrt werden. Siehe hierzu auch folgende Abbildung!
Das Dashboard bietet für die Heizkreise (Lokationen) eine aufklappbare Übersicht ... und mehr, was hier unwesentlich ist.😉
Da diese Gerätevariante autark arbeitet, funktioniert die Regelung auch dann, wenn Strom da ist, aber WLAN oder Smartcenter nicht verfügbar sind. Allerdings fehlt ohne WLAN bzw. Smartcenter die Handhabungsmöglichkeit per Dashboard zum ad hoc verändern der Zieltemperatur. Hier kommt nun eine einfache Notbedienung zum Zuge, die auch von weniger IT affinen Zeitgenossen genutzt werden kann.
Manuelle Einstellung der Zieltemperatur per Taster
Das AddOn verfügt neben Anschlüssen für digitale Sensoren zur Messung von Temperatur und ggf. relativer Luftfeuchtigkeit auch über einen digitalen/binären Eingang für Taster/Schalter und einen analogen Eingang zur Spannungsmessung. Letztere können unabhängig voneinander und vom Mess-Sensor genutzt werden. Sowohl den digitalen als auch den analogen Eingang beschalte ich jeweils mit einem Taster. Am analogen Eingang liegt dann entweder die Referenzspannung (High) oder 0V (Low) bei gedrücktem Taster. Einer der Taster dient dem Erhöhen, der andere dem Absenken der Zieltemperatur - jeweils um eine konfigurierbare Schrittweite.
Bisher habe ich die prinzipielle Funktionsweise per gesteckter Schaltung (Laborbetrieb) und kleinem Skript getestet. Sie funktioniert verlässlich mit einer kleinen Einschränkung. Zwischen zwei Tastendrücken muss jeweils mindestens ca. 1 Sekunde gewartet werden. Als Rückmeldung zum verarbeiteten Tastendruck lasse ich das Ausgangsrelais für 1s einschalten. Das leise Klacken ist für Nichtschwerhörige erkennbar und so ist die Veränderung prinzipiell wahrnehmbar.
Der analoge Eingang benötigt eine Mindestdauer der anliegenden Eingangsspannung, damit der Tastendruck registriert wird. Deshalb habe ich parallel zum Taster einen Elektrolytkondensator von ca. 100µF geschaltet. Damit genügt ein kurzer Tastendruck, weil beim loslassen der Kondensator in Reihe zum internen Widerstand - Wert leider noch unbekannt - die analoge Eingangsspannung nur langsam ansteigen lässt. Ich habe dazu bisher keinerlei Messung und Zeitkonstantendimensionierung vorgenommen. Es funktioniert derzeit aber bestens. Falls die Lebensdauer des Elko wegen der Kurzschlüsse per Taster erheblich sinken sollte, kann ein zusätzlicher Widerstand den Taster-Kurzschlussstrom begrenzen. Ob solche Kurzschlüsse den Elko schneller altern lässt, weiß ich derzeit nicht.
Das Projekt wird von mir weiter gepflegt.
Ziele
- Aufbau der Taster Anordnung in den Deckel einer Leerdose - in welcher sich der Shelly Plus 1 mit AddOn befindet.
Soll heißen: Nutzbarmachung des bisherigen Steckaufbaus. - Erweiterung des bisherigen Skripts um die Erfassung der Tastendrücke und Veränderung der damit beabsichtigten Zieltemperatur.
- Implementation einer Konfigurierbarkeit für minimale, maximale Temperaturwerte und Schrittweite zu den Tastendrücken.
- Implementation einer per Skript implementierten einfachen Webseite zum Ablesen von Zieltemperatur, gemessener Temperatur und ggf. Luftfeuchtigkeit. Diese wird bei Ausfall von WLAN oder Smartcenter auf einem Smartphone o.ä. nutzbar sein, nachdem man das Smartphone WLAN mit dem Accesspoint des Shelly gekoppelt hat.
zu 4.
Alternativ könnte ein wandmontiertes Bediengerät mit Display genutzt werden, welches ausschließlich mit dem Shelly Accesspoint gekoppelt ist. Ich halte mehr davon, ein bereits vorhandenes, vielseitig nutzbares und vertrautes Gerät wie ein Smartphone hierfür einzusetzen. Wer besonderen Wert auf Geräteredundanz legt, mag beides vorsehen.
Lösung zu Ziel 4 ist fertig
Der Regelungs-Shelly liefert auf HTTP-Anfrage eine schlichte, interaktive Webseite mit den aktuellen Daten. Die folgenden Abbildungen zeigen die jeweils gleich gelieferte Tabelle. Diese Webseite wird sowohl auf einem PC als auch auf einem Smartphone mit HTML 5 fähigen Web Browser gut nutzbar dargestellt. Sie bietet verschiedene Refresh Modi, die man per Link durchklicken oder per Request in den URL einbauen kann.
Der Modus "per Taster einstellen" lädt die Webseite nach jeder Sekunde neu, damit der Anwender damit eine zügige Rückmeldung der per Taster geänderten Zieltemperatur erhält.
Als normaler "Regelbetrieb" ist ein Neuladen alle 60s vorgesehen. Die Namen sowie die Refresh Zyklen der Modi liegen in einer leicht änderbaren Datenstruktur vor. Evtl. werde ich diese Datenstruktur im KVS relativ leicht editierbar ablegen, damit man für solche Änderungen nicht in den Skriptcode eingreifen muss.
Die pfeilartigen Dreiecke auf beiden Seiten der Zieltemperatur sind aktivierbar, wodurch die Seite interaktiv ist. Damit lässt sich die Zieltemperatur in Schritten von 0,5°C erhöhen bzw. absenken. Das Verändern der Zieltemperatur gelingt auch per Request (s.u.).
Die Webseite wird angefordert per
http://<IP-Adresse des Shelly>/script/<Id des Skript>/data
Dahinter kann die Request folgen. Diese wird eingeleitet mit einem Fragezeichen gefolgt von genau einem verarbeitbaren Parameter. Diese Parameter sind:
- m=<Modus Index> - der Index wird im Skript auf den Indexbereich der Modi abgebildet.
- s=<neue Zieltemperatur> - setzt die Zieltemperatur auf den angegebenen Wert.
- d=<Änderung der Zieltemperatur> - verändert die Zieltemperatur um den angegebenen Wert, auch Vorzeichen behaftet.
Beispiel:
http://192.168.33.1/script/1/data?s=12.5
setzt die Zieltemperatur auf 12,5°C.
Eine Sekunde nach der Änderung der Zieltemperatur wird die Webseite neu geladen, um die aktualisierten Daten anzuzeigen.