Viessmann API und Node-Red – Teil 7

Solarthermie: Ertrag ohne Wärmemengenmesser ausrechnen

Obwohl die Viessmann API in der Lage ist, den Solarertrag anzuzeigen, ist das  entsprechende API Feature heating.solar.power.cumulativeProduced in machem (leider auch in meinem) Fall leer.

Das liegt daran, dass die Solarinstallation mit einem Wärmemengenmesser ausgerüstet sein muss. Dieses Gerät vergleicht die Solar-Vorlauftemperatur mit der Solar-Rücklauftemperatur und misst zusätzlich den Durchfluss. Bei moderneren Wohnungen wird über solche Geräte die Heizkostenabrechnung gemacht.

Wie finde ich nun heraus, wieviel Energie von meinen Solarthermiepanels erzeugt wird wenn ich kein Calorimeter habe?

Um 1 Liter Wasser um ein Grad Celsius zu erwärmen, benötigt man 1,163 Wattstunden [Wh] Energie. Dementsprechend braucht man um 1000 Liter Wasser um 10 Grad zu erwärmen 10.000 mal soviel Energie: 11628 Wh bzw. 11,628kWh. Das ist wohlgemerkt eine idealistische Betrachtung ohne Wärme- und Effizienzverluste.

Unser Heißwasserspeicher (Puffer/Boiler) ist normalerweise am oberen Ende (top) heißer als am unteren Ende (bottom). Für unseren Workaround verwenden wir einfach den Durchschnitt (avg für average) zwischen beiden Werten.

CaCicala_0-1665822045695.png

Beispiel: nehmen wir an, dein Puffer hat 80°C oben und 25°C unten. Die durchschnittliche Temperatur ist (80+25) / 2 = 52,5°C

Das ist alles, was wir brauchen, um den Solarertrag auszurechnen: Wir berechnen die den Unterschied der Durchschnittstemperatur zwischen zwei unterschiedlichen Messungen (nachher – vorher), multiplizieren das mit dem Faktor 1,1628Wh und multiplizieren nochmal mit der Menge des erwärmten Wassers (Boilerinhalt).

CaCicala_3-1665822147504.png

Yield ist der Ertrag in Wh, t1 ist die spätere Messung, t2 die vorherige.

Einen schönen Rechner dafür gibt es bei: https://gettopics.com/de/calc/wasser-erhitzen-energie-rechner

Fallstricke

Physiklehrer und andere werden jetzt die Stirn runzeln. Ja, ich vereinfache hier bei einigen Punkten. Nicht berücksichtigt sind Wärmeverluste in Rohren, Isolation, Puffer etc. Wir berechnen auch nur die gespeicherte Energie und nicht die in den Panels produzierte Energie.

Auch kann die Wärmeverteilung in Schichtladespeichern anders sein. Dem kann man mit entsprechend mehr Sensoren und einer Durchschnittsberechnung zwischen den Sensoren begegnen. Aus den Durchschnitten wird dann ein Gesamt Durchschnitt errechnet.

Zusätzliche Energiequellen z.B Heißwasserbereitung durch Heizgeräte, welche den Puffer gleichzeitig aufladen, sind nicht berücksichtigt, da der jeweilige Energiebeitrag schwer zuzuordnen ist.

Ebenso wird die Menge an Energie nicht berücksichtigt, die gespeichert wird während gleichzeitig Energie aus dem Puffer abgezogen wird d.h. durch einen Warmwasserhahn oder den Heizungsvorlauf.

Da diese Zustände normalerweise nur von kurzer Dauer sind, reicht der hier präsentierte Ansatz für eine halbwegs genaue Schätzung aus. Im Sommer ist sie sicher genauer als im Winter.

Ein praktisches Beispiel

Meine Installation besteht neben anderem Kram aus einem Viessmann (Italia) Solarcell HSK 1000 Kombispeicher (Warmwasser und Heizung) mit 842 Litern Nettovolumen.

Er ist von Haus aus mit 4 Sensoren mit der Vitotronic 200 verbunden, um die Warmwasserbereitung zu steuern und das Umschalten von Gas auf festen Brennstoff. Wenn Du Glück hast, findest du die entsprechenden Sensorwerte in der API unter:

heating.dhw.sensors.temperature.hotWaterStorage.top
heating.dhw.sensors.temperature.hotWaterStorage.middle
heating.dhw.sensors.temperature.hotWaterStorage.midBottom
heating.dhw.sensors.temperature.hotWaterStorage.bottom

Leider liefert die API bei mir diese Werte nicht. Ich habe mir deshalb mit zusätzlichen 1 Wire Sensoren (DS18B20)  beholfen, die ich zu den Viessmann Sensoren oder in freie Sensoröffnungen gesteckt und an meinen Raspberry Pi angeschlossen habe.

Alternativ kann man auch die Werte für
WWSolar = unten:  heating.solar.sensors.temperature.dhw und
WW Temperatur = oben: heating.dhw.sensors.temperature.hotWaterStorage
heranziehen. Ist allerdings ungenauer.

Nehmen wir an, die erste Messung beträgt 41,5°C und die zweite 41.7°C. Die Differenz ist also 0,2°C. Das Ergebnis ist wie folgt:

CaCicala_4-1665822219110.png

195,8 Wh ist also die Energie, welche während der Messdauer in den Speicher geladen wurde. Um diesen Rohertrag besser verständlich zu machen, können wir den Ertrag mittels Dreisatz auf eine Stunde hochrechnen. Nehmen wir an, wir messen alle 4 Minuten bzw. 240 Sekunden:

CaCicala_6-1665822568833.png

Das ist natürlich nur ein theoretischer Wert der voraussetzt, dass die Sonneneinstrahlung über eine Stunde konstant ist.

Wenn wir das programmieren, sollten wir folgende Einschränkungen beachten:

  • Berechnung nur, wenn die Temperatur gestiegen ist.
  • Berehnung nur wenn die Solarumwälzpumpe läuft
    heating.solar.pumps.circuit = “on”

Ertrag pro Tag

Wenn wir ausrechnen wollen, welchen Tagesertrag wir erreicht haben, müssen wir lediglich den Rohertrag aufsummieren. Dies berücksichtigt, dass die Sonneneinstrahlung über den Tag schwankt. Eine Auflösung von 240 Sekunden ist meines Erachtens ausreichend. Klein genug um Schwankungen der Wassertemperatur durch Entnahme zu berücksichtigen, groß genug um der Trägheit des Mediums Wasser Rechnung zu tragen.

Node-Red

Nachfolgend noch der JSON Code. Er basiert u.a. auf meinen One Wire Sensoren aber das kannst du selber anpassen. Zusätzlich schreibe ich den Rohertrag in Influx. Kurz vor Mitternacht wird der Tageswert genullt. Der Status der Solarpumpe steckt bei mir in einer Variablen.

ich freue mich über Kommentare, entdeckte Fehler und natürlich auch Lob.

Schreibe einen Kommentar

Ich freue mich über Lob und Kritik.
Falls du Probleme mit der hier vorgestellten Anleitung hast und nicht weiter kommst:
Bitte das Problem oder die Fehlermeldung(en) möglichst genau beschreiben, auch an welcher Stelle (z.B. in welchem Node oder Befehl) und unter welchen Umständen der Fehler auftritt.
Gerne kannst du mir auch ein Mail schreiben. Die Adresse findest du im Impressum.
Ich gebe mir viel Mühe, meinen Lesern weiterzuhelfen. Je konkreter du bist, desto einfacher und schneller kann ich versuchen zu helfen.
Deine E-Mail-Adresse wird nicht veröffentlicht.
"
Erforderliche Felder sind mit * markiert