In diesem Beitrag möchte ich euch eine DIY-Lösung vorstellen, mit der ich die Steuerung meiner Gastherme auf ein völlig neues Niveau gehoben habe. Ursprünglich war meine Gastherme über den Raumregler Junkers TRQ21 gesteuert. Dieser Regler hatte jedoch eine entscheidende Schwäche: Er konnte nur die Temperatur im Wohnzimmer messen. Das führte oft dazu, dass andere Räume wie das Schlafzimmer entweder überheizt oder unterheizt waren – ein unbefriedigender Zustand, der mich zur Eigeninitiative bewegt hat.
Problem: Der limitierte Junkers TRQ21 Controller
Der Junkers TRQ21 erfüllte zwar seine Aufgabe, doch seine Funktionalität war sehr eingeschränkt. Da die Steuerung allein auf der Temperatur im Wohnzimmer basierte, wurden die individuellen Bedürfnisse anderer Räume völlig ignoriert. Das Schlafzimmer blieb oft kalt, während das Wohnzimmer bereits warm genug war. Eine Lösung musste her – und zwar eine, die flexibler, smarter und anpassbarer ist.
Meine DIY-Lösung: Eine eigene Platine mit ESP32
Ich entschied mich, den Raumregler durch eine eigene DIY-Steuerung zu ersetzen. Der Kern meiner Lösung ist eine selbst entworfene Platine, die mit einem Mikrocontroller vom Typ ESP32 ausgestattet ist. Dieser leistungsstarke Mikrocontroller dient als zentrale Steuereinheit und bietet die Möglichkeit über WLAN von meinem HomeAssistant aus gesteuert zu werden.


Der Schaltplan

Die Platine verbindet mehrere Komponenten und ermöglicht es, die Heizung anzusteuern. Die Heizung wird über drei Leitungen angeschlossen: 24V, Steuerleitung und GND.
Auf meiner Platine befindet sich ein 3,3V DC-DC Wandler, der aus den 24V von der Heizung den ESP32 mit der benötigten Spannung versorgt. Der ESP32 übernimmt die Steuerung der Heizleistung über einen Digital-to-Analog-Ausgang (DAC), der ein Signal an einen LM324 Operationsverstärker weiterleitet. Der Operationsverstärker erzeugt ein Steuersignal zwischen 0V und 24V, das an die Steuerleitung der Heizung ausgegeben wird.
Zusätzlich habe ich einen Backup-Temperatursensor auf der Platine integriert, der in Zukunft für einen Frostschutz genutzt werden soll (diese Funktion ist aktuell noch nicht im Programm implementiert). Zur Statusanzeige befinden sich zwei LEDs auf der Platine:
- Gelbe Led: Zeigt an, ob die Heizung gerade aktiv ist (Heizen ein/aus).
- Rote Led: Signalisiert, ob eine Störung vorliegt.
ESPHome als Firmware
Auf dem ESP32 läuft die beliebte Open-Source-Firmware ESPHome, die speziell für smarte Heimautomationen entwickelt wurde. ESPHome ermöglicht eine nahtlose Integration in HomeAssistant, was in meinem Fall der Schlüssel zur Lösung war.
Details
esphome:
name: heizung-esp
friendly_name: Heizung-ESP
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: "<removed>"
ota:
- platform: esphome
password: "<removed>"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Heizung-Esp Fallback Hotspot"
password: "<removed>"
captive_portal:
web_server:
port: 80
output:
- platform: esp32_dac
pin: GPIO25
id: dac_output
min_power: 0.17
binary_sensor:
- platform: status
name: "Heizung Status"
number:
- platform: template
name: Heizleistung
id: heizleistung
icon: mdi:heat-wave
optimistic: True
min_value: 0
max_value: 100
step: 1
mode: slider
on_value:
then:
- output.set_level:
id: dac_output
level: !lambda "return x/100;"
- if:
condition:
and:
- number.in_range:
id: heizleistung
above: 1
- switch.is_off: disable_led
then:
- switch.turn_on: yellow_led
else:
- switch.turn_off: yellow_led
switch:
- platform: gpio
id: yellow_led
pin: GPIO13
name: Gelbe LED
internal: True
- platform: template
name: "LED unterdrücken"
icon: mdi:alarm-light-off
id: disable_led
optimistic: True
on_turn_on:
then:
- switch.turn_off: yellow_led
on_turn_off:
then:
- if:
condition:
- number.in_range:
id: heizleistung
above: 1
then:
- switch.turn_on: yellow_led
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Backup Temperature"
humidity:
name: "Backup Humidity"
update_interval: 60s
status_led:
pin: GPIO12
HomeAssistant als zentrale Steuerung
Home Assistant agiert als übergeordnete Zentrale. Meine Heizkörperthermostate sind ebenfalls in Home Assistant integriert und teilen der Platine (bzw. dem ESP32) kontinuierlich mit, wie viel Heizleistung in den jeweiligen Räumen benötigt wird. Die Steuerung basiert somit auf den tatsächlichen Bedürfnissen aller Räume und nicht mehr nur auf einer einzigen Messstelle.


Was fehlt?
Auch wenn die DIY-Steuerung bereits funktionsfähig ist, gibt es noch ein wichtiges Detail, das aktuell fehlt: Ein passendes Gehäuse, um die Platine zu schützen und ordentlich an der Wand zu montieren. Hier plane ich, ein 3D-gedrucktes Gehäuse zu entwerfen, das sowohl die Elektronik vor Staub und äußeren Einflüssen schützt als auch eine ansprechende Optik bietet. Das Gehäuse wird Löcher für die Anschlüsse, Lüftungsöffnungen sowie Halterungen für die Wandmontage beinhalten. Sobald das Gehäuse fertig ist, wird die Installation nicht nur technisch, sondern auch optisch komplett sein.
Fazit
Die Umstellung von einem simplen Raumregler wie dem Junkers TRQ21 auf eine selbstgebaute Lösung mit ESP32 und ESPHome war definitiv die richtige Entscheidung. Meine Gastherme arbeitet jetzt effizienter, und ich kann sicherstellen, dass alle Räume in meinem Zuhause genau so beheizt werden, wie ich es möchte. Der Aufbau der Platine hat mir zudem erlaubt, die Steuerung individuell an meine Bedürfnisse anzupassen und Platz für zukünftige Erweiterungen zu lassen.