[Tutorial] [AKTUALISIERT] Selbstgebauter Thermostat und Integration/ Programmierung in Gladys

[AKTUALISIERUNG 20-11-23] Hinzufügen der Nutzung des Geräts « Thermostat » auf dem Dashboard, um die Solltemperatur zu verwalten.

Hallo zusammen!
Ich schlage vor, euch meinen Thermostat zu teilen, ein selbstgemachtes System zur Steuerung des Heizkessels.


(Ja, ich weiß, es fehlt ein bisschen Farbe :wink: aber das vorherige Tablet, das den Geist aufgegeben hat, war größer und verbarg diesen Schandfleck!)
Zuerst muss man wissen, was ein Thermostat ist und das ist nicht schwer zu verstehen…
Ein Thermostat (für Heizkessel) ist ein einfacher « Ein/Aus »-Schalter, der mit einem Temperatursensor und einer Programmverwaltung (manchmal) gekoppelt ist.

  1. Der Schalter:
    Ich habe ein verbundenes Relais von Sonoff (+/- 4,30€) gewählt, das ich mit Tasmota geflasht habe (nicht obligatorisch, aber es verhindert Datenlecks in China und hält alles lokal). Es ist dasselbe, das ich für die Garage und die Schranke verwende (Mir fällt gerade ein, dass ich das Tutorial dazu nie verschickt habe, das wird noch kommen!). Ihr werdet es unter anderem hier finden;
  2. Der Temperatursensor:
    Die Auswahl ist groß! Verbundene Sonden aller Marken oder DIY (meine Wahl: DHT11 (2,50€, ESP01S inklusive) und DHT22 (3,50€ ganz nackt))… Das Ziel ist es, Gladys mindestens eine Raumtemperatur zu übermitteln;
    [EDIT 20-11-23] Nach zwei Jahren Nutzung der DHTs empfehle ich euch, wenn ihr es selbst machen wollt, lieber einen BME680 zu verwenden, der viel genauer ist und auch den Luftdruck misst!
  3. Die Programmverwaltungseinheit:
    Gladys, das leistungsfähigste, intuitivste, benutzerfreundlichste System von allen, natürlich! :wink:

A. Material
Ihr werdet das oben vorgeschlagene Material benötigen, aber auch:

  • Ein Lötkolben und seine Zubehörteile (Lötzinn usw.);
  • Eine 5V-Stromversorgung (ein USB-Ladegerät, das in der Schublade herumliegt) und ein entsprechendes USB-Kabel (das, dessen Micro-USB-Seite nicht mehr funktioniert, aber das ihr nicht weggeworfen habt, man weiß ja nie)
  • Ein Programmiergerät, um das Sonoff-Relais (nicht obligatorisch) und das ESP-01s (wenn ihr das genommen habt) mit Tasmota zu flashen. Mehr Infos zum Flashen mit Tasmota in diesem Beitrag

B. Das Sonoff-Relais

Man muss:

  • Die Stromversorgung anlöten (Seite +/-)
  • Es flashen: Ein einfaches normales Tasmota-Firmware wird ausreichen: Tutorial hier
  • Es konfigurieren: Geht auf die Geräteseite, klickt auf « Weitere Konfiguration » und fügt die folgende Vorlage hier ein:

    Vorlage:
    {"NAME":"Sonoff RE5V1C","GPIO":[17,255,255,255,255,255,0,0,21,56,0,0,0],"FLAG":0,"BASE":18}
    Nach dem Speichern und Neustarten des Relais gehen Sie zum Tab « Modulkonfiguration » und wählen « Sonoff RE5V1C » aus (dann speichern-neustarten);
  • Die Drähte von der Heizung anlöten oder Verbinder verwenden und am Relais (Seite « OUT ») befestigen
  • Alles in ein kleines Gehäuse setzen (falls Sie einen 3D-Drucker haben, ich füge mein geiles Design bei! :smiley: )

    Link zur .stl
    Der Knopf passt in den dünnen Teil in eines der beiden Löcher und ermöglicht den Zugriff auf den integrierten Schalter im Modul. Der tiefere Teil wird an der Wand befestigt. Das Relais geht nach hinten, die Leiterplatte nach vorne. Ich werde bald ein Foto hinzufügen :wink:

C. Die Temperatur
Es gibt zahlreiche Lösungen, um die Temperatur eines Raumes zu kennen. Persönlich verwende ich zwei selbstgemachte Typen, die ich oben erwähnt habe. Ich mag das « All-in-One »-Modul mit DHT11+ESP01s, geflasht mit Tasmota (wieder einmal!) aber es gilt als weniger genau als der DHT22.
Das DHT11-Modul muss mit 5V versorgt werden und das ist gut, denn wir haben bereits eine Stromversorgung! Man kann sie also parallel schalten oder die Sonde verschieben, wenn der ursprüngliche Thermostat schlecht platziert war (was in meinem Fall so war). Für den DHT22 muss ein zusätzliches ESP-Modul hinzugefügt werden (z. B. ein ESP01s, aber die Stromversorgung ist kompliziert oder ein Wemos D1 mini (teurer)) oder man bastelt am RE5V1C-Modul, um den DHT22 (oder DHT11) direkt anzuschließen. In diesem letzten Fall muss der « data »-Pin des DHT mit dem « ERX » (oder « IO2 ») des RE5V1C-Moduls verbunden werden! Mehr Infos hier.
In jedem Fall muss man dem Tasmota-Modul mitteilen, dass ein Temperatursensor angeschlossen ist (oft erkennt es ihn von selbst!).

D. Integration in Gladys
Entweder hat man alles in Tasmota gemacht und wird über dessen dedizierte Integration gehen, oder man verwendet ewelink für das Relais und andere je nach Ihren Temperatursensoren.
Kurz gesagt, Sie müssen nur die Temperatur- und Relaisgeräte als « Schalter » hinzufügen, alles ist automatisch!

E. Die Programmierung

« Und hier begannen die Römer zu kämpfen… »

Das Einfachste ist zu sagen, dass man die Heizung einschalten möchte, wenn es im Raum zu kalt ist, und ausschalten, wenn es warm ist. Aber das macht ein einfacher mechanischer Thermostat sehr gut!
Wir werden also anders vorgehen. Wir werden virtuelle Geräte (Fake Devices) erstellen, die uns bei der Programmierung helfen.

Das Prinzip

  • Wir werden « Volllastzeiten » erstellen (wobei die Heizung ein « Komfort »-Temperaturziel von 22°C für den Abend hat, definiert durch den Thermostat auf dem Dashboard)
  • Und « Niedertarifzeiten », in denen die Heizung 19°C halten muss

Das Ziel der Programmierung wird sein, den Status von « Niedertarifzeiten » in « Volllastzeiten » zu ändern, entweder durch Zeit-, Anwesenheits-, Jahreszeiten-, Wetter-, Urlaubsauslöser (triggers) oder sogar eine Kombination aus alldem (Achtung, Neuronen…)!

In Gladys

Gehen Sie zum Tab « Integrationen » und wählen Sie « MQTT » und klicken Sie auf « Neu + ».
Geben Sie ihm einen sinnvollen Namen, eine externe ID wie mqtt:Haus:TimerHC, weisen Sie ihm einen Raum zu und wählen Sie « Schalter » im Feld « Funktionalität hinzufügen ».

Geben Sie dann die Werte wie unten vorgeschlagen ein und « Speichern »:

Fügen Sie auch ein Thermostat-Gerät hinzu, mit dem Sie Ihre Heiztemperatur vom Dashboard aus wählen können.



Verwenden Sie nicht vergessen, dieses Gerät zu Ihrem Dashboard hinzuzufügen!
image

In meiner Installation habe ich auch Timer für « Urlaub » und « Jahreszeit » erstellt

Was kann man damit machen? Szenen! An die Arbeit!
Ich habe mindestens 4 davon (Heizung EIN, Heizung AUS, Heizung EIN HC, Heizung AUS HC):
a) Wenn die Temperatur unter 21°C liegt (am Dashboard definiert) UND wir in Komfortzeiten sind, schalten wir die Heizung ein;
b) Wenn die Temperatur über 22°C liegt (am Dashboard definiert) ODER wir in Niedertarifzeiten wechseln, schalten wir die Heizung aus;
c) Wenn die Temperatur unter 16,5°C liegt, schalten wir die Heizung ein;
d) Wenn die Temperatur über 17,5°C liegt und wir in Niedertarifzeiten sind, schalten wir die Heizung aus
So sieht das aus:
a)


Die Szene wird alle 5 Minuten oder wenn wir in Heizzeiten wechseln ausgelöst


Wir überprüfen, warum die Szene gestartet wurde (Wenn die Temperatur niedriger ist als die Solltemperatur und wir in Heizzeiten sind) und schalten den « Heizkessel »-Schalter ein

b)


Die Szene wird alle 5 Minuten oder wenn wir in Niedertarifzeiten wechseln ausgelöst


Wir überprüfen, warum die Szene ausgelöst wurde (Niedertarifzeiten oder zu hohe Temperatur) und schalten den « Heizkessel »-Schalter aus
Hinweis: Wenn Sie genau hinschauen, gibt es ein « +1 » neben dem Wert des « Hauptthermostats ». Das bedeutet, dass wenn Sie eine Komforttemperatur von 21°C wählen, diese Szene die Heizung bei 22°C abschaltet. Sie können diesen Wert natürlich nach Ihren Bedürfnissen anpassen!

c)



Der « Sommer »-Trigger ist optional. Für mich ist das ein Modus « Heizung komplett ausgeschaltet ».

d)




Wir überprüfen, dass wir tatsächlich in Niedertarifzeiten sind und schalten aus

Und warum haben wir noch nicht über Zeitpläne gesprochen? Es kommt!
Zum Vergleich, das Ziel ist nicht nur, den Heizkessel ein- oder auszuschalten, sondern zu sagen, ob wir ein Komforttemperaturziel haben oder nicht!
Es sind also in Szenen, dass wir den virtuellen Stecker « Timer Komfortzeiten » umschalten
Wir werden also zwei Szenen erstellen:
a) Wir brauchen etwas Wärme am Morgen, dann am Abend wechseln wir in Komfortzeiten;
b) Der Rest der Zeit, wir gehen in Niedertarifzeiten.

Und hier fügen wir alle anderen Auslöser, Bedingungen usw. hinzu…

  • Ich habe einen Urlaubsmodus hinzugefügt (im Grunde, wenn wir weg sind, bleiben wir in Niedertarifzeiten) und aktivieren alles für den Tag unserer Rückkehr (praktisch, wenn man vom Skifahren zurückkommt :wink: )
  • Und einen Sommermodus (AUS), denn selbst wenn es tagsüber kalt ist, möchte ich lieber, dass die Heizung nicht eingeschaltet wird, auch wenn ich abends ein kleines Feuer mache :wink:

So sieht das aus:
a)





b)

Fertig!
Allerdings können Sie das Programmieren weiter vorantreiben, Ihre Anwesenheitsmelder kombinieren, Raumtemperaturen (Heizung einschalten, wenn die Bürotemperatur zu niedrig ist, während jemand anwesend ist…) usw. ABER, vergessen Sie nicht, nur den Status der „Komfortstunden“ zu ändern, sonst landen Sie mit 28°C im Wohnzimmer…

Na gut, ich habe trotzdem ein Bonus…
Auf dem RE5V1C gibt es einen Knopf… Es wäre schade, ihn nicht zu nutzen…
Wenn Sie darauf drücken, schaltet er den Kessel ein oder aus, aber… Gladys wird hinter Ihnen herräumen, je nach Ihren Heizungsaktivierungsbedingungen! Also…
Sie müssen im Tasmota-Relais (nur dort) folgendes tun:

  • Den Knopf vom Relais trennen
  • Die Wirkung der Druckausübung auf den Knopf ändern, damit der Status des „Komfortstunden“-Timers geändert wird

Dazu müssen Sie die Adresse des MQTT-Topics des „Komfortstunden“-Timers herausfinden:
Integrationen → MQTT → Timer HC → Bearbeiten und kopieren Sie dies:

Dann gehen Sie zur Weboberfläche des Tasmota-Relais und geben Sie die folgenden Befehle in die „Konsole“ ein, um den Knopf vom Relais zu trennen:

SetOption73 1

Dann erstellen Sie die Regeln, die darin bestehen, dass „ein Druck den Status des ‹ Komfortstunden ›-Timers auf ‹ ON › setzt, zwei Drücke ihn auf ‹ OFF › setzen“. Ersetzen Sie in dem folgenden Code gladys/master/device/mqtt:Maison:TimerHC/feature/mqtt:Maison:Timers:Heures_Confort/state durch den zuvor kopierten Wert.

Rule1 on button1#action=single do publish gladys/master/device/mqtt:Maison:TimerHC/feature/mqtt:Maison:Timers:Heures_Confort/state 1 endon on button1#action=double do publish gladys/master/device/mqtt:Maison:TimerHC/feature/mqtt:Maison:Timers:Heures_Confort/state 0 endon

Dann aktivieren Sie Regel 1:
Rule1 1

Und wenn es Ihnen Spaß macht und Sie das Prinzip verstanden haben, können Sie auch Aktionen für 3, 4 und 5 Drücke erstellen (Achtung, 6 Drücke starten das Modul neu!).

Tolles Tutorial!!

Danke, dass du dir die Zeit genommen hast :slight_smile:

Ich werde es auf den sozialen Medien teilen, Gladys!

Es fehlt nur noch eine generische PID-Funktion in Gladys und das System ist perfekt. Danke für den Tutorium @GBoulvin

@VonOx Generische PID?

Gemeinsam oder allgemein, es ist mit der Heizungssteuerung und -regelung verbunden, unabhängig vom Stellglied oder Sensor.

Hallo @GBoulvin,
Kleine technische und praktische Frage: Die Wahl der DHT11- und DHT12-Sensoren basiert auf einer größeren Genauigkeit oder könnte ein beliebiger Temperatursensor (z. B. Sonoff SNZB-02) ausreichen?

Hallo!
Keine große Sache mit dem Temperatursensor!
Du kannst fertige verwenden oder sie selbst machen, ganz einfach…
Beim DIY gelten die DHT11 als wenig zuverlässig, die DHT22 sind viel besser und werden oft in Geräten für Temperatur und Luftfeuchtigkeit verwendet.
Wenn ich es nochmal machen müsste, würde ich einen fertigen Akku-Sensor nehmen :wink: