"Wattgenaue" Leistungssteuerung von Heizern mit ESP32 Tasmota IoBroker

Hallo Leute,

ich wollte heute mal meine Lösung für eine ziemlich „wattgenaue“ Ansteuerung von Heizern vorstellen. Ich benutze es für meinen Warmwasserspeicher und einen alten Ölradiator. Die ganze Steuerung läuft bei mir jetzt seit über 3 Jahren. Damals hatte ich nur eine kleine 600 W Anlage :innocent:

In vielen Beiträgen wird gern einfach ein Relais oder ein Schütz genommen. Das funktioniert, hat aber seine Nachteile. Es muss genug Leistung vorhanden sein, wenn nicht, bleibt der Heizer aus, oder man nimmt den Rest aus Netz und unter Last schalten ist für Relais auch nicht so toll. Mein Warmwasserspeicher hat z.B. 2 KW. Das sind also keine kleine Lasten von denen wir hier reden.

Ich benutze für meine Steuerung ein ESP32 und ein Solid State Relais (SSR). In dem Bild habe ich mal eine grobe Skizze gemalt.

Der Vorteil bei einem SSR ist, das es immer im Nulldurchgang der Spannung schaltet. Damit schaltet es Lastfrei und der Nulldurchgang erfolgt aller 10 ms. Also kann man auch schön oft schalten :slight_smile: . Dafür gibt es viele Varianten, u.a. einmal die Pulsweitenmodulation (PWM) oder eine Puls Frequenz Modulation (PFM). Bei der PWM wird einfach über eine bestimmte Zeit angeschaltet und eine bestimmt Zeit wieder abgeschaltet. Bei der PFM wird einfach immer wieder ein- und ausgeschaltet, mit einer bestimmten Häufigkeit (Frequenz). Damit kann man bis auf 10 ms runter schalten, also auch sehr kleine Leistungen. Natürlich kann man damit auch, wie mit einem Relais, die Heizer einfach an und ausschalten. Wenn man pro Phase ein SSR verwendet oder 1 dreiphasiges SSR verwendet, kann man auch 3 phasige Verbraucher steuern.

Noch etwas Theorie:

  • Mein Warmwasserspeicher hat einen 3 phasigen Heizstab mit insgesamt 6000 W. Pro Phase also 2000 W. Ich benutze nur 1 Phase. Voll Zeit eingeschalten sind 100 %. Wenn ich den jetzt mit 1 % laufen lasse, heizt er mit ca. 20 W
  • Um 1 kg Wasser um 1 Kelvin zu erwärmen, werden 1,16 Wh benötigt
  • Um 1 m³ Luft um 1 Kelvin zu erwärmen, werden 0,33 Wh benötigt

Mein Warmwasserspeicher hat 200 l Volumen oder 200 kg Wasser. Wenn ich also 200 kg Wasser um z.B. 10 K erwärmen möchte, benötige ich 2300 Wh. Ober der Heizer das in einer Stunde oder im 5 Stunden macht, ist mir egal :slight_smile:

Damit konnte ich mit einer 600 W Anlage mein Wasser warm machen :slight_smile: Dauert dann halt 4 Stunden.

Zum testen der Theorie hatte ich mir am Anfang eine kleine Arduinosoftware gebastelt. Die erzeugt einfach ein PWM Signal mit verschiedene Pulsweiten und auf dem Smart Meter habe ich mir die übrig gebliebene eingespeiste Leistung angesehen. Der Verbrauch vom Heizer stimmt ganz gut mit der Berechnung überein. Ist aber auch klar. Der Heizer ist ein ohmischer Widerstand.

Jetzt musste ich mir nur noch die entsprechen Software basteln.

Ich nutzte für meine Heimautomatisierung eine Raspberry Pi 4. Früher lief es auf einem 3er. Darauf läuft u.a. IoBroker und ein MQTT Server. Auf den ESP32 habe ich Tasmota installiert.

In einem einfachen Skript wird berechnet, wie viel Leistung gerade eingespeist wird und wie viel davon verbraucht werden soll. Dieser Sollwert wird dann über den MQTT Server dem ESP32 zur Verfügung gestellt. Die Berechnung läuft einmal pro Sekunde.

Der ESP32 nimmt den Sollwert und erzeugt eine entsprechende PWM/PFM und steuert damit das SSR an. Der Heizer heizt :slight_smile:

Hier mal ein Screenshot von der Weboberfläche im Tasmota. Ich habe mal 500 W vorgegeben. Ich habe mal noch ein Temperatursensor verbaut, da kann ich auch noch eine abschalttemperatur einbauen oder eine Frostschutzfunktion, z.B. unter 5°C heiz mit 500 W oder so.

Ich habe mal noch die Werte für die Luft dazu geschrieben. Ich nutzte das im Frühling, Herbst und Winter auch für den Ölradiator. Der hat 1500 W und läuft so vor sich hin. Bei guten Bedingungen, heizt er die Stube auf 25 °C hoch. Dann öffne ich die Türen und heize den Rest vom Haus noch mit.

Ich habe mal bei Github ein Repos erstellt: Github

Da ist noch nicht alles drin und ich bin neu bei Github. Ich installiere gerade nebenbei ein neuen ESP32 für ein Heizer in der Werkstatt. Da kann ich das hier noch mal von Grund auf nachstellen. Damit ich hier kein Mist verbreite :grinning:

  • aktuell ist die Berry Software für Tasmota drin (die funktioniert)
  • ein Skript für die Implementierung in IoBroker muss ich noch testen, dann kommt das auch
  • Arudino Software kommt im Anschluß (die muss ich noch etwas anpassen)

So, das war mal ein etwas längerer Post, sorry!

Wenn ihr Fehler findet oder mitmachen möchtet, gerne :grinning: (ich hoffe das ich das bei Github richtig eingestellt habe damit ihr auch hochladen könnt :thinking:)

Noch ein paar Bilder:
Hier sieht man mal ein Tagesverlauf bei wolkigem Himmel. Man sieht ganz gut, dass die Steuerung ganz gut die 0 W (Einspeisung/Entnahme) schafft.

Viele Grüße,
Arno

2 „Gefällt mir“

Jo, schaue mal in die TAB, Technische Anschluss Bedingungen des Netz Betreibers, dann zerplatzen die legalen Träume recht schnell.
PWM. Der smarte Zähler erfordert eine gewisse Mindest Geschwindigkeit für Effektivwertbildung sonst summiert er einfach die kurzen Leistungs paeks und nützt der PV nicht wie gedacht, sollte hier eine Art Null Einspeisung realisiert werden wollen, dagegen spricht wieder die TAB.
Trotzdem viel Spaß.

Moin Hopfen,

die Stromzähler haben zwar ne hohe Abtastrate (bis zu 2 KHz), aber mitteln, je nach Typ über ne gewisse Zeit (10..250 ms). Das ist abhängig vom Zähler.

Ich habe das mal probiert. Die Solaranlage hat 600 W erzeugt und ich habe ca. 400 W in den Warmwasserspeicher gegeben. Das Smartmeter war der Meinung das ich nichts einspeise und auch nichts entnehme. Der Zähler vom Stromanbieter war der selben Meinung. Nach 1 Stunde habe ich dann noch zusätzlich den Zählerwert verglichen (vor und nach dem Test) und 1.8.0 und 2.8.0 war gleich. Der Smartmeter zählt bis zu 50. Harmonischen Oberwelle. Der Zähler muss "nur" bis zur 16. Harmonischen Oberwelle.

Wie schon gesagt, ich nutze das jetzt seit 3 Jahren.

Grüße,
Arno