Heizung steuern: PV Überschuss > ESP32 & Home Assistant (1/2)

 

Nach ca. 20 Jahren konnte ich mit Home Assistant und einem ESP32 die Kontrolle über meine Wärmepumpe übernehmen. Um den erzeugten Strom meiner PV-Anlage tagsüber besser nutzen zu können, kam mir die Idee, die Heizung möglichst dann zu aktivieren, wenn die PV-Anlage gerade am meisten Strom liefert. Nachdem ich den Stromverbrauch und Temperaturwerte bereits in Home Assistant zur Verfügung hatte, fehlte nur noch die Möglichkeit aktiv in die Heizung einzugreifen.

Klappt vermutlich mit jeder Heizung: Temperatur vortäuschen ... 

Meine Heizung ist sowohl für die Warmwasseraufbereitung als auch für die eigentliche Heizung verantwortlich. Die Heizung wird rein über die Außentemperatur gesteuert, der Boiler über dessen Wassertemperatur. Neben einem Außenfühler werden dazu Temperatursensoren für den Boiler und den Pufferspeicher eingesetzt. Zwar besitzt meine Wärmepumpe bereits eine serielle Schnittstelle, leider ist diese aber nicht dokumentiert und eine Smart Grid Ready (SG Ready) - Schnittstelle besitzt das gute Gerät auch noch nicht. Aus diesem Grund habe ich mir über alternative Möglichkeiten Gedanken gemacht. Ein Blick in die Dokumentation der Heizungssteuerung hat mir verraten, dass es sich bei den Temperatursensoren des Boilers und Pufferspeichers um PTC-Widerstände handelt. Dies hat mich auf die Idee gebracht den Widerstandswert bei Bedarf zu ändern. Das Verändern der Temperaturwerte ermöglicht mir die Pufferspeicher- und Boilertemperatur vorzutäuschen, was die Heizung bei niedrigen Temperaturen veranlasst den Boiler oder Puffer zu heizen oder bei einer vorgetäuschten hohen Temperaturen nichts zu machen. Wichtig dabei war mir, dass die Heizung auch ohne Home Assistant weiter funktioniert. Daher verwende ich den verbauten PTC-Temperatursensor weiter und ersetzt diesen bei Bedarf mit einem niedrigen Widerstandswert für das Einschalten und einem hohen Widerstandswert für das Ausschalten. Meine ersten Versuche mit einem digitalen Potentiometer waren nicht erfolgreich, daher habe ich auf simple Relays und fixe Widerstände zurückgegriffen.

Für die Überwachung der Temperaturwerte des Boilers und Pufferspeichers in Home Assistant habe ich bereits einen ESP32 im Einsatz. Durch eine Erweiterung mit einem 4-Kanal Relay Board kann ich jeweils 2 Relays für die Steuerung des Warmwassers und 2 Relays für das Steuern des Pufferspeichers verwenden. Als Widerstände habe ich 1kOhm zur Verfügung, was bei dem verbauten PTC-Temperatursensor einen Temperaturwert von 25°C entspricht. Ein Wert von 1,25 kOhm würde bereits über 50°C bedeuten: ähnlich einem aufgeheizten Boiler. Keinen 250 Ohm Widerstand zur Hand, habe ich 4 Stück 1kOhm in einer Parallelschaltung verwendet. Hier die schematische Darstellung am Beispiel des Boilers.

Erklärung: Wenn die beiden Relays nicht aktiv sind, wird der ursprüngliche PTC-Temperatursensor verwendet. Das Aktivieren des ersten Relays unterbricht den PTC und ersetzt diesen mit den verbauten Widerständen, was einer Temperatur von über 50°C entspricht und die Warmwasseraufbereitung deaktiviert. Schalte ich das 2te Relay zu, werden die Widerstände für den 250Ohm-Wert überbrückt und der verbleibende 1kOhm-Widerstand täuscht der Heizung 25°C vor: Zeit für die Warmwasseraufbereitung. 

Die Schaltung ermöglicht also 3 Zustände für jeweils Boiler und Pufferspeicher: 

  • bisheriger Automatikbetrieb mit dem PTC der Heizung (Relais 1 aus + Relais 2 aus)
  • Heizung deaktivieren (Relais 1 ein + Relais 2 aus)
  • Heizung aktivieren (Relais 1 ein + Relais 2 ein)

Relay 1 und 2 wird für den Boiler und Relay 3 und 4 für den Pufferspeicher verwendet. Die dreipoligen Kabel: Gelbgrün, Blau und Braun führen zum bestehenden PTC-Anschlusskabel

Für das Warmwasser funktioniert das so weit. Für die eigentliche Heizung sind die simulierten 25°C zu hoch um diese immer aktivieren zu können, daher habe ich die Widerstände für den Pufferspeicher mit folgenden Werten ersetzt: Anstelle des 1kOhm Widerstands verwende ich 2x470 Ohm (= 940Ohm), was einer Temperatur von 17°C entspricht und ein zusätzlicher  300Ohm-Widerstand: 940 + 300Ohm simuliert wieder etwas über 50°C. Siehe dazu auch: alte Wärmepumpe jetzt Smart, dank Home Assistant (2/2).

CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22PTC%2010%20k%26lt%3Bbr%26gt%3Bt%20(%C2%B0C)%20R%20(%E2%84%A6)%26lt%3Bbr%26gt%3B-%2030%20623%26lt%3Bbr%26gt%3B-%2025%20652%26lt%3Bbr%26gt%3B-%2020%20682%26lt%3Bbr%26gt%3B-%2015%20713%26lt%3Bbr%26gt%3B-%2010%20745%26lt%3Bbr%26gt%3B-%205%20779%26lt%3Bbr%26gt%3B%200%20813%26lt%3Bbr%26gt%3B%2B%205%20848%26lt%3Bbr%26gt%3B%2B10%20885%26lt%3Bbr%26gt%3B%2B15%20922%26lt%3Bbr%26gt%3B%2B20%20961%26lt%3Bbr%26gt%3B%2B25%201000%26lt%3Bbr%26gt%3B%2B30%201040%26lt%3Bbr%26gt%3B%2B35%201082%26lt%3Bbr%26gt%3B%2B40%201124%26lt%3Bbr%26gt%3B%2B50%201211%26lt%3Bbr%26gt%3B%2B60%201302%26lt%3Bbr%26gt%3B%2B70%201397%26lt%3Bbr%26gt%3B%2B80%201496%26lt%3Bbr%26gt%3B%2B90%201599%26lt%3Bbr%26gt%3B100%201706%26lt%3Bbr%26gt%3B110%201817%26lt%3Bbr%26gt%3B120%201932%22%20style%3D%22text%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3Balign%3Dright%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22580%22%20y%3D%2230%22%20width%3D%2290%22%20height%3D%22370%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%Integration in ESP-Home, siehe: Relay Board ESP32 - ESPHome

Zusätzlich zu den bereits vorhandenen Temperatursensoren und einem Wasserdurchflussmesser habe ich das Relay-Board wie folgt in ESP-Home hinzugefügt:

[+]
# Relais
switch:
  - platform: gpio
    pin: GPIO32
    name: Relay-Heizung-Wasser-fake
    id: relay1
    inverted: true
  - platform: gpio
    pin: GPIO33
    name: Relay-Heizung-Wasser-kalt
    id: relay2
    inverted: true
  - platform: gpio
    pin: GPIO25
    name: Relay-Heizung-Puffer-fake
    id: relay3
    inverted: true
  - platform: gpio
    pin: GPIO26
    name: Relay-Heizung-Puffer-kalt
    id: relay4
    inverted: true

Smart Grid Ready (SG Ready) nachrüsten?

SG Ready schafft die Basis für den Aufbau eines intelligenten Stromnetzes. Wärmepumpen, die ein SG Ready Label besitzen können über eine definierte Schnittstelle angesprochen und gesteuert werden. Die hier vorgestellte Lösung entspricht natürlich nicht dem SG Ready Standard, kann aber dennoch dazu verwendet werden in das Verhalten der Wärmepumpe einzugreifen und den Eigenverbrauch, speziell in Kombination mit einer PV-Anlage, wesentlich zu steigern. 

Home-Assistant Automation

Damit meine Heizung möglichst dann aktiviert wird, wenn die PV-Anlage Strom liefert, habe ich in Home Assistant eine Automation zusammengestellt:
Der in meiner Heizung verbaute Drehstromkompressor kann lediglich zwei Betriebszustände: ein und aus. Beim Aktivieren der Wärmepumpe baut sich allmählich der Druck auf und der Stromverbrauch steigt bis max. 4,5KW. Um noch etwas Reserve zu haben, soll die Heizung erst ab einem 10-minütigen Überschuss von über 5,5kW aktiviert werden: "When meter_power is below -5500 for 10:00". 

Ziel dieser Automation ist, einen möglichst idealen Zeitpunkt für den Start der Warmwasseraufbereitung zu nutzen:

Legende: Rot: Stromverbrauch, Grün: PV-Produktion, Gelb: Heizung (Warmwasseraufbereitung)

Damit die Schaltvorgänge der Relais einfacher angesprochen werden können, habe ich Scripts für die einzelnen Zustände angelegt:

Skript Sequenz
Warmwasser automatisch

Relay-Heizung-Wasser-fake ausschalten (Relay1)

Warmwasser ein

Relay-Heizung-Wasser-kalt einschalten (Relay2)

Relay-Heizung-Wasser-fake einschalten (Relay1)

Warmwasser aus

Relay-Heizung-Wasser-kalt ausschalten (Relay2)

Relay-Heizung-Wasser-fake einschalten (Relay1)

Pufferspeicher automatisch

Relay-Heizung-Puffer-fake ausschalten (Relay3)

Pufferspeicher ein

Relay-Heizung-Puffer-kalt ein (Relay4)

Relay-Heizung-Puffer-fake ein (Relay3)

Pufferspeicher aus

Relay-Heizung-Puffer-kalt aus (Relay4)

Relay-Heizung-Puffer-fake ein (Relay3)

Die Scripts habe ich dann in der Automation verwendet:

Folgende Auslöser starten die Automation für die Warmwasseraufbereitung:

Auslöser Beschreibung
When meter_power is below -5500 for 10:00

meter_power spiegelt die Daten des Smartmeters wider: negative Werte (-) bedeuten einen Stromüberschuss

ID: PV-Überschuss

When heating.Warmwasser is below 40 ID: Wasser=kalt
When heating.Warmwasser is above 50 ID: Wasser=heiß
Wurde die Automation gestartet, wird eine der folgenden Aktionen ausgeführt:
Aktionen Beschreibung
Perform 'Perform 'Call a service 'Script: Warmwasser ein' ausführen wenn 'When triggered by Wasser=kalt'

Warmwasseraufbereitung einschalten, wenn das Wasser kalt ist (Trigger Warmwasser is below 40)

'Aufruf eines Dienstes 'Skript: Warmwasser ein' auf ' ausführen wenn 'When triggered by PV-Überschuss Warmwasseraufbereitung einschalten, wenn: ein PV-Überschuss getriggert wurde.

 'Aufruf eines Dienstes 'Skript: Warmwasser aus' auf ' ausführen wenn 'Wasser warm'

Warmwasseraufbereitung deaktivieren, wenn Wasser warm (Trigger Warmwasser is above 50)
YAML:
[+]
description: ""
mode: single
trigger:
  - platform: numeric_state
    entity_id: sensor.meter_power
    for:
      hours: 0
      minutes: 10
      seconds: 0
    id: PV-Überschuss
    below: -5500
  - platform: numeric_state
    entity_id: sensor.heating_warmwasser
    below: 40
    id: Wasser=kalt
  - platform: numeric_state
    entity_id: sensor.heating_warmwasser
    above: 50
    id: Wasser=heiß
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Wasser=kalt
    then:
      - service: script.warmwasser_ein
        data: {}
  - if:
      - condition: trigger
        id:
          - PV-Überschuss
    then:
      - service: script.warmwasser_ein
        data: {}
  - if:
      - condition: trigger
        id:
          - Wasser=heiß
      - condition: device
        type: is_on
        device_id: ???
        entity_id: ???
        domain: switch
    then:
      - service: script.warmwasser_aus
        data: {}

Die Automation wurde in der Version auf dieser Seite etwas vereinfacht: etwaige Verbesserungen die sich aus dem Praxisbetrieb ergeben, werde ich in diesen Artikel einfließen lassen. Weitere Informationen zu den Automatisierungen, siehe: Home Assistant Automatisierung - Möglichkeiten & Grundlagen.

Mithilfe der folgenden Seite kann die benötigte Energiemenge für die Warmwasseraufbereitung berechnet werden: Online Energie-Rechner: elektrischer Strom vs. Wärmepumpe.

Heizung steuern

Das Erwärmen des Hauses benötigt ungleich mehr Strom, als die Warmwasseraufbereitung. Durch eine entsprechende Heizungssteuerung kann möglichst viel des erzeugten Stroms direkt für die Heizung verwendet werden. An Tagen mit starker Bewölkung, liefert die PV-Anlage zu bestimmten Zeiten eventuell weniger Strom, als die Heizung für deren Betrieb benötigt, daher macht an diesen Tagen ein Batteriespeicher doppelt Sinn. Angenommen, die Heizung läuft nicht im Dauerbetrieb, sammelt die Batterie den Strom und kann die Heizung auch bei einer schlechteren Sonneneinstrahlung immer wieder mal mit dem gesammelten Strom starten. Da die Heizung die Batterie relativ schnell entleert, sollte diese so wenig wie möglich in der Nacht betrieben werden. Um den Betrieb in der Nacht zu minimieren, kann das Haus als Energiespeicher verwendet werden, indem es um ein Grad höher erwärmt wird, als notwendig. Ist genügend Strom vorhanden, kann die Batterie zudem am späten Nachmittag nochmal für die kommende Nacht geladen werden. Auf Basis dieser Idee, könnte ein Herbsttag von Frühmorgens bis zum nächsten Tag, wie folgt aussehen: 

Sonnenaufgang-Vormittag  Der Akku wird geladen
Mittags Akku ist voll geladen: Start der Warmwasseraufbereitung und im Anschluss die Heizung, bis die Raumtemperatur um ein Grad höher ist als notwendig. (Abhängig vom Wetter könnte der Akku an dieser Stelle etwas entladen werden: Macht aber nichts, solange bis zum Abend noch genügend Strom gesammelt wird)
später Nachmittag

Das Haus ist warm und aktuell auch der Pufferspeicher, daher können die Umwälzpumpen gestoppt werden, damit die vorhandene Energie in der Nacht aus dem Pufferspeicher abgerufen werden kann. 

Vor Sonnenuntergang

Der Akku wird erneut auf 100 % geladen und ist bereit um den Haushaltsstrom in der Nacht abzudecken.

Nochmal zur Erinnerung: Der Boiler ist heiß, der Pufferspeicher auch und das Haus ist um 1 °C höher erwärmt als notwendig.  

Abends und in der Nacht

Die Heizung bleibt deaktiviert, das Haus kühlt ganz leicht ab (Um die 1 °C die wir zuvor mehr geheizt haben). Der Strom für das Haus kommt von der Batterie.

In den frühen Morgenstunden Die Umwälzpumpen werden aktiviert, damit die gespeicherte Wärme des Pufferspeichers abgerufen wird …

In der Praxis schauen meine ersten Tests dazu wie folgt aus:

Die Solarproduktion Mitte Oktober lag an diesen Tagen bei ca. 30–45 kWh, der Stromverbrauch der Wärmepumpe bei ca. 12–14 kWh pro Tag und der Haushaltsstromverbrauch bei ca. 15 kWh, die durchschnittliche Außentemperatur über 24h bei ca. 5,5 °C und die Raumtemperatur bei 22-23°C. Sollte die Sonneneinstrahlung für diesen Ablauf nicht reichen, können in der Automation zusätzliche Trigger eingebaut werden: Als Beispiel könnten die Umwälzpumpen gestartet werden, wenn die Raumtemperatur um mehr als 1 °C abkühlt. Sollte diese Maßnahme nicht reichen, kann die Heizung auch in der Nacht aktiviert werden. Dennoch: je mehr Strom am Tag direkt vom Ertrag der PV-Anlage konsumiert wird, desto höher ist die Selbstversorgungsquote und desto mehr Geld kann mit der Automation gespart werden. Ich bin gerade dabei verschiedene Automatisierungs-Varianten für die Heizung zu testen. Gestartet mit einer Automation für die verschiedenen Trigger und Aktionen, hatte ich später mehrere Template-Sensoren als Trigger verwendet. In der Zwischenzeit habe ich mehrere Automatisierungen für die verschiedenen Aktionen getestet und zuletzt wieder eine Automation mit einem Zeitraster-Trigger und Wenn-Dann-Abfragen in den Aktionen, siehe auch: Home Assistant Automatisierung - Möglichkeiten & Basics. Die Details meiner Automatisierung habe ich in folgenden Beitrag dokumentiert: "alte Wärmepumpe jetzt Smart, danke Home Assistant"

Fazit

Das Steuern der Heizung ist eine einfache und kostengünstige Maßnahme um den Eigenverbrauch der PV-Anlage zu erhöhen. Wird der Boiler, oder Pufferspeicher tagsüber erwärmt, muss die Energie in der Nacht nicht wieder zugekauft werden: Davon profitieren nicht nur PV-Anlagen ohne Stromspeicher, auch beim Einsatz eines Akkus kann dieser entlastet und unter Umständen sogar etwas kleiner dimensioniert werden.

Zur konkreten Umsetzung, siehe auch: alte Wärmepumpe jetzt Smart, danke Home Assistant (2/2)

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Aktualisiert: 04.04.2024 von Bernhard | Translation English |🔔 | Kommentare:0

ESPHome: Temperatur- und Feuchtigkeitssensoren DHT11/22 | ESP32 | Relay Board ESP32 - ESPHome
Home Assistant: Steckdosen steuert Rasemähroboter | Automatisierung | Maximaler PV Eigenverbrauch der Wärmepumpe (2/2)

Top-Artikel in diesem Bereich


DS18B20 Temperatursensoren ESP32, MQTT und WiFi - HowTo

Zusätzlich zur Anbindung eines Durchflussmessers über RS485 habe ich 5-Stück DS18B20-Temperatursensoren an den ESP32 angesteckt, damit deren Werte auch über MQTT an HomeAssistant übertragen werden.


ESP32 WiFi Beispiel - Arduino IDE

Als Vorbereitung für den Upload von Sketches an einen Microcontroller habe ich die ESP32-Boardinfromationen und einen USB to UART Bridge Treiber installiert, siehe: Vorbereitungen für das Programmieren eines ESP32.


ESP32 Flowmeter - RS485 Modbus

Wie in dem Artikel "ESP32 programmieren, Arduino - Voraussetzungen installieren" beschrieben, war mein erstes Ziel einen TUF-2000M Ultrasonic Flow Meter über einen ESP32 auszulesen. Dazu habe ich im Internet ein Beispiel zu einem ESP8266 gefunden: Reading a TUF-2000M Ultrasonic Flow Meter with an Arduino or ESP8266 und https://forum.arduino.cc/t/comunicacion-rs485/698786/2. Das Setup des TUF-2000M habe ich in folgendem Artikel beschrieben:  Erfahrungsbericht: Ultraschall Durchflussmesser TUF-200...

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details