Photovoltaik mit Eigenverbrauch Steuerung (Kostal plenticore; EM410)

Begonnen von ch.eick, 16 Juli 2019, 19:18:12

Vorheriges Thema - Nächstes Thema

Mumpitz

Hast du für das ganze auch eine Visualisierung in Tablet UI gemacht?


Gesendet von iPad mit Tapatalk

ch.eick

Ich nutze nur das fhem Web und konzentriere mich auf die Funktionalität;-)

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

gvzdus

Hi, ich habe einen anderen Ansatz gewählt, der aber in Teilen zu Deinem zum ähnlichen Ergebnis führt.

Bei mir sorgt eine etwas erweiterte steckerfertige PV (wird bald durch 7 kWh auf dem Dach abgelöst) für die Eingangsseite. Deren Ergebnis wird mit Shellys gemessen. Auf der Netzseite habe ich eine moderne Meßeinrichtung, die zwar nicht rückwärts zählt, aber negative Zahlen bei Einspeisung ins Netz anzeigt. (Zähler: EMH ED300L, Lesekopf von Weidmann Elektronik (ca. 50 Euro)).

Ich steuere zur Zeit 3 Verbraucher dynamisch:

  • Die Tiefkühltruhe
  • Die Heizkreispumpe
  • Eine Steckdose in der Garage, über die einstweilen nur E-Bikes geladen werden
Auch hier kommen Shellys (Plug S / 2.5) zum Einsatz.

Grundsätzlich gilt das Gleiche wie bei Dir: Hysterese für den Solarüberschuss in Sachen Unter- / Überschreitung sowie gekoppelt mit einer Mindestzeit dieses Wertes. Anders als bei Dir muss ich noch zusehen, dass die 3 variablen Verbraucher sinnvoll sequentiell an's (Nicht-)Netz gehen, bzw. davon abfallen.

Dafür habe ich mir einen satten Sack Dummys geschaffen, die einem Momentanzustand entsprechen (plus 50 Watt, plus 100 Watt, plus 500 Watt u.s.w, sowie die negativen Pendants).
Auf diesen Dummys sitzen Watchdogs, die garantieren, dass die Bedingung für eine Mindestzeit erfüllt ist.
Und diese Watchdogs beschreiben dann im positiven Sinne Dummys, die einen Zustand der Stabilität ausdrücken. Also z.B. "plus100isstable130" für 130 Sekunden stabil über 100 Watt. Genauso gibt es ein "plus100isstable100" für 100 Sekunden stabil über 100 Watt. Der 100 Sekunden "Stabilitätsdummy" steuert den ersten Verbraucher, der 130-Sekunden-Stabilitätsdummy den zweiten. Annahme: Nimmt der 1. Verbraucher nicht ab, weil z.B. die Tiefsttemperatur der Tiefkühltruhe erreicht ist, oder beträgt der Überschuss so viel, dass es für beide Verbraucher reicht, triggert auch der 130-Sekunden-Dummy - sonst nicht, weil mit dem Einschalten des 100-Sekunden-Dummys der Überschuss unter 100 Watt abfiel.

Für das Abschalten sind die "Negativstabilitätsdummys" zuständig. So vermeide ich, dass allzu viel Hektik beim schnellen Cumulus-Durchzug ins System kommt.

Also zunächst die erste Ebene: Die Momentanzustände setzen, sowie die "Stabilitäts-Dummys" ggf. resetten:


define SolarUeberschuss notify MT175:power:.* {
my $a=ReadingsVal("MT175","power","");
my $sol=ReadingsVal("solargen", "state",0);
$a-=65 if ($hour>12 && $sol<300 && $sol>70);
fhem("set stromplus0 " . ($a<0 ? "on" : "off"));
fhem("set stromplus50 " . ($a<-50 ? "on" : "off"));
fhem("set stromplus100 " . ($a<-100 ? "on" : "off"));
fhem("set stromplus200 " . ($a<-200 ? "on" : "off"));
fhem("set stromsub50 " . ($a>50 ? "on" : "off"));
fhem("set stromsub100 " . ($a>100 ? "on" : "off"));
fhem("set stromsub200 " . ($a>200 ? "on" : "off"));
fhem("set stromsub1000 " . ($a>1000 ? "on" : "off"));
if ($a>=-100) {
fhem("set stromplus100isstable30 0");
fhem("set stromplus100isstable100 0");
fhem("set stromplus100isstable130 0");
};
if ($a<50) {
fhem("set stromsub50isstable30 0");
fhem("set stromsub50isstable60 0");
};
if ($a>0) {
fhem("set stromplus0isstable30 0");
}
}


2 Hinweise:

  • Ich lege einen "fetten" Notify in der Regel erst mit leerem Perl-Ausdruck (also {} ) an, um ihn dann im Editor der GUI zu befüllen.
  • Der Ausdruck "$a -= 65 ..." in der 4. Zeile verschiebt den Arbeitspunkt am Nachmittag bei schwindender Solarleistung. Nach dem Motto: Lieber jetzt das Gerät auch teilweise mit Netzstrom füttern, statt auf bessere Zeiten etwas später zu hoffen, müssen nicht mehr 100 Watt, sondern nur noch 35 Watt Überschuss für das "100-Watt-Kriterium" da sein

Jetzt exemplarisch die Watchdog-Ebene am Beispiel von stromplus100stable30:

define dummy stromplus100isstable30
define stromplus100stable30 watchdog stromplus100:on 00:00:30 stromplus100:off set stromplus100isstable30 1
attr stromplus100stable30 autoRestart 1
attr stromplus100stable30 regexp1WontReactivate 1


Damit habe ich meine "Stabilitätshysteresen".

Anhand dieser schalte ich nun per Notify und je nach Rahmenvoraussetzungen (würde jetzt zu weit führen, lege ich aber gerne auch noch mal dar) die Verbraucher.

Nur kurz skizziert:

  • Die Tiefkühltruhe ist auf "Brutal kühlen" eingestellt, hat aber einen LaCrosse-Sensor, den FHEM ausliest. In jedem Fall wird bei -17 Grad eingeschaltet. Vor 12 Uhr wird bei noch nicht ausreichendem Solarüberschuss (Prinzip Hoffnung) bei -18 Grad der Strom wieder weggezogen, ansonsten bei -19 Grad. Ist genug Solarüberschuss da, darf die Tiefkühltruhe kühlen, wie sie eingestellt ist
  • Für die HK-Pumpe wird in Abhängigkeit vom weitest geöffneten Ventil (MAX-Thermostate) ein stündliches Laufzeitquota der HK-Pumpe festgelegt: >= 55% heißt 60 Minuten, <15% 0 Minuten. Die HK-Pumpe wird eingeschaltet, wenn das Quota für die laufende Stunde entweder sonst nicht erreicht ist, oder aber Solarüberschuss besteht und noch Quota offen ist

ch.eick

Gratulation für die Umsetzung.

Kannst Du schon etwas zur Einsparung bei der Tiefkühltruhe sagen?

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

gvzdus

Ich würde es nicht durchhalten, dieses Setup über ein Jahr unverändert zu vermessen :-)

Lass mich schätzen: Die Sonne scheint die Hälfte der Zeit. Anfang und Ende sind aber zu schwach. Dagegen rechne ich, dass das Tiefkühlen mir 2 Stunden schenkt, die ich jetzt mal als ungefähr gleich ansehe. Und dann gibt es die Dunkelmonate sowie die ganz schlechten Solartage. Ob ich die mit einem Drittel oder der Hälfte ansetze? Also zwischen 1/3 und 1/4 würde ich schätzen. Meine Tiefkühltruhe liegt um die 200-250 kW/h, der Ersatz würde sich erst nach 10-12 Jahren rechnen. 200 kW/h sind 60 Euro, also zwischen 15-20 Euro im Jahr. Aber es geht mir um's Prinzip: Ich "gucke oft Stromproduktion", und ich denke, jeder, der seine Solarzellen verfolgt, kennt den Schmerz, wenn der Geschirrspüler ausgerechnet seine 2 kW-Phasen in den Durchzug des Cumulus-Wolkenfeldes legt. Ich ärgere mich auch über Klingeltrafos, die 1,1 Watt brauchen (nur 25 Euro in 10 Jahren) - für etwas, was man mit 0,1 Watt lösen könnte. Mein "Klingeltrafo" ist jetzt ein altes Fritzbox-Netzteil.

Anbei mal die Temperatur/Schalt-Grafik ggü. der Solarproduktion.
Anbei mal Heizung (300 Watt = Brenner, 70 Watt = HK-Pumpe), Verbrauchszahlen und die Tiefkühlschaltung.

Die roten Spikes des Stromverbrauchs sind die Kaffeemaschine, der fette rote Balken ab 9 Uhr die Waschmaschine, die erst mit 2 kW heizt, um dann bis etwa 11:30 Uhr das Schwankungsmuster des "Stopp, Rotieren" durchzieht (etwa 200 Watt Hysterese). Die "Stabilitätszeiten" müssen m.E. so bemessen sein, dass die Kaffeemaschine und eben das Stop/Rotieren der Waschmaschine keine Statusänderung hervorrufen.

P.S. Am besten gefällt mir die Zeit um 10 Uhr: Ein etwa halbstündiges Wolkenloch, die erhöhte Solarproduktion triggert die HK-Pumpe, was wiederum das Anspringen des 300 Watt-Brenners kurz danach auslöst, und die Tiefkühltruhe wird auch geweckt: Und schon laufen bis zu 450 Watt hoch, weil gerade der Strom da ist.

ch.eick

Zitat von: gvzdus am 12 Mai 2020, 22:09:29
Ich würde es nicht durchhalten, dieses Setup über ein Jahr unverändert zu vermessen :-)
Stehen die Werte nicht im Logfile oder besser im DBLog? Mit einem geschickten SQL koenntest Du die Verbraeuche dann aufsummieren und anhand der PV Produktion erkennen, wo die Leistung her kommt.
Ansonsten kannst Du ja nicht erkennen, ob sich der Aufwand lohnt.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

KölnSolar

Hallo Ihr Zwei,
Zitatjeder, der seine Solarzellen verfolgt, kennt den Schmerz,
(lach u. zustimm), der Geschirrspüler ist wohl das fürchterlichste elektr. Gerät im Haushalt für den PV-Freund.  ;D
ZitatIch ärgere mich auch über Klingeltrafos
oder über FBH-Stellventile, die im Sommer dauernd ein paar Wh verbrauchen, nur weil sie normal open anstatt normal closed sind.  ::)
ZitatAnsonsten kannst Du ja nicht erkennen, ob sich der Aufwand lohnt.
Daher fahre ich die etwas weniger effektive aber viel einfachere Variante. Ich schalte den Gefrierschrank per twilight. Nachts ist er aus und nach Sonnenaufgang(den Versatz muss jeder selber rausfinden) wird er wieder eingeschaltet. Bringt in der Theorie ein paar Wh.

Grüße Markus

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

ch.eick

Hallo Markus
Hast Du kontrolliert wieviel sich die Themperatur über Nacht verändert?

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

gvzdus

Ja, zumindest unser Tiefkühlschrank würde über Nacht zu warm werden - die -17 Grad bzw. -16 Grad sicherlich an anderen Stellen muss ich für den Ehefrieden schon halten.

Ich habe auch Alerts konfiguriert, um eine Unerreichbarkeit des Shellys zu alarmieren oder - das schon lange - einen Temperaturanstieg über -15 Grad.

ZitatStehen die Werte nicht im Logfile oder besser im DBLog?

Ja, der Shelly landet im Logfile. Aber eine Aussage kann ich ja nur treffen, wenn ich zum Zeitpunkt jedes Stromzählermesswertes (die ggf. sekündlich kommen) eine Entscheidung berechne: "Wie viel war Solar, wie viel Netz?" und das aggregiere. Das mache ich für den Hausverbrauch insgesamt, aber eben nicht für jeden Shelly - und unter einem Jahr stabiler Konfiguration würde ich mich nicht trauen, eine halbwegs allgemeingültige Aussage zu treffen.

ch.eick

Zitat von: gvzdus am 13 Mai 2020, 09:07:03
Ja, zumindest unser Tiefkühlschrank würde über Nacht zu warm werden - die -17 Grad bzw. -16 Grad sicherlich an anderen Stellen muss ich für den Ehefrieden schon halten.
Man sollte bei der Gefriertruhe die niedrigste Temperatur einstellen, damit es ueber Nacht die gewuenschten -17 Grad nicht ueberschreitet. Somit laeuft die Truhe nur tagsueber, wodurch jedoch
der Temperaturanstieg der Nacht wieder herausgeholt werden muss. Hier waere ein Vergleich des Gesamtverbrauches ueber einige Tage schon eine Aussage.

Zitat
zum Zeitpunkt jedes Stromzählermesswertes (die ggf. sekündlich kommen) eine Entscheidung berechne: "Wie viel war Solar, wie viel Netz?" und das aggregiere. Das mache ich für den Hausverbrauch insgesamt, aber eben nicht für jeden Shelly - und unter einem Jahr stabiler Konfiguration würde ich mich nicht trauen, eine halbwegs allgemeingültige Aussage zu treffen.
Den Hausverbrauch liest man doch am Zaehler ab ;-)
Sekuendlich finde ich mit Kanonen auf Spatzen geschossen.
Eine Solaranlage liefert Dir die Werte, wieviel von wo nach wo gelaufen ist. Fuer Balkonmodule ist das natuerlich etwas schwieriger.

Ich habe meine Messungen auf minuetlich getriggert, was selbst bei einer Summierung meinem Anspruch genuegt. Bei einer Summierung ueber Monate lag das nur 2-3 KWh gegenueber dem Zaehlerstand daneben.
Die Ungenauigkeit goenne ich mir ;-) und im Netz bzw. bei den Events ist es dann etwas ruhiger.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

gvzdus

Ich verstehe Deine Aussage nicht. Einen Verbraucher wie die Tiefkühltruhe kann ich messen. Wenn ich wissen will, wie viel Solarstrom und wie viel Netzstrom er braucht, nützen mir Minuten oder Stundensummen nichts. Für mich als "Balkonbetreiber" mag die Waschmaschine beim Stop-Rotieren-Stop im Saldo bei "Solarproduktion = Hausverbrauch" liegen, der Zähler sieht das leider anders und stellt mir z.B. die Hälfte des Stromverbrauchs beim "Rotieren" als Netzverbrauch in Rechnung, während die andere Hälfte beim Stopp für Nix ins Netz geht. Für die "Dachbetreiber" sind dann taktende Kochgeräte die Spaßbremsen. Daher müsste ich für eine korrekte Aussage "Auf wie viel Solarstrom kriege ich meine Tiefkühltruhe gedrückt?" eben zeitlich genau auflösen.

ch.eick

Stimmt, bei mir spielt der Speicher ja noch rein. Verbrauchswerte von PV pro Gerät ist schwierig.

Edit:
Ich habe mal ein Bild fuer den Leistungsbezug und die Hauptverbraucher, die ich separat Zaehlen kann angehaengt.
Da beide Diagramme immer uebereinander stehen kann man sehr schoen sehen woher die Leistung genommen wurde.
Um 4:30 uhr war der Speicher leer, weil der Tag zuvor eher bescheiden war, ansonsten reicht der Speicher momentan immer.
Bei den Haupverbrauchern ist die blaue Linie "Total_PV_reserve" ein berechneter Wert, den ich fuer das Einschalten weiterer Verbraucher verwende, da steckt noch ein Wirkungsgrad mit drin.
Die brutale Stufe bei Total_DC_Power war die Zwangsladung des Speichers, da hatte ich mal etwas rumgespielt.
Am Tag zuvor war der Automatismus zum Laden nicht so wie ich es mir vorgestellt hatte, den der Speicher war nicht voll und am naechsten Tag war schlechtes Wetter angekuendigt.

@KoelnSolar da muessen wir doch noch eine Wetterprognose basteln ;-)

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

KölnSolar

Zitat@KoelnSolar da muessen wir doch noch eine Wetterprognose basteln ;-)
Die Prognose einzubasteln ist ja das kleinere Problem. Eine detaillierte(stundengenaue) Prognose mit hoher Eintrittswahrscheinlichkeit zu bekommen-> unmöglich. Ich nehm da nur das Bsp. mit den plötzlichen Cumuluswolken.

Die Kernfrage ist daher: Mit wieviel Ungenauigkeit will man bei einer Automatisierung leben. Deshalb meine Gefrierschranksteuerung per twilight. Egal, ob sonnig oder Regen. Bei den Großverbrauchern fahr ich auf "Sicht"-> Wettervorhersage beobachten und entscheiden, ob ich Großverbraucher einschalte oder doch lieber 1-2 Tage abwarte.

ZitatHast Du kontrolliert wieviel sich die Themperatur über Nacht verändert?
Natürlich. Ist minimal, so im Gradbereich. Selbst im Winter(also bei ca. 10h ohne Strom). Dabei fällt mir auf, dass ich nur die halbe Wahrheit wiedergegeben habe :-[: Mit zeitlichem Versatz zu twilight schalte ich die Dose ein. Ausgeschaltet wird IMMER um 23 Uhr. Könnte ich mal etwas "intelligenter" gestalten... ::)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Mumpitz

Zitat von: ch.eick am 13 Mai 2020, 10:55:39

Bei den Haupverbrauchern ist die blaue Linie "Total_PV_reserve" ein berechneter Wert, den ich fuer das Einschalten weiterer Verbraucher verwende, da steckt noch ein Wirkungsgrad mit drin.


Darf ich Fragen wie du diese Reserve berechnest und was du damit anstellst?

ch.eick

Zitat von: Mumpitz am 15 Mai 2020, 20:01:19
Darf ich Fragen wie du diese Reserve berechnest und was du damit anstellst?

Das ist noch aus meinen Anfaengen, um einen Wert zu haben, nach dem ich noch Verbraucher zuschalten kann. Bei mir spiel auf der DC Seite noch die Hochvolt Batterie mit rein, die ja auch geladen wird.
Dadurch kann ich nicht nur den Einspeisewert ins Netz verwenden, den das Laden der Batterie hat einen schlechteren Wirkungsgrad als wenn ich die Leistung sofort verwende.
Sollte die Batterie geladen werden, dann verringert sich die Ladeleistung automatisch beim zuschalten des Verbrauchers, ich rutsche jedoch nicht in den Leistungsbezug, den der kostet mehr.

Das ist die Summer der DC Leistung, um den Wirkungsgrad (ca. Wert) des WR verringert abzueglich dessen was ich eh schon verbrauche. Dann wird das ganze noch bei Null etwas angehuebscht :-)
Somit bleibe ich immer schoen etwas unter der PV Kurve.

Total_PV_Power_reserve:Total_DC_Power.* {my $reserve = ReadingsVal($NAME,"Power_DC_Sum","0") * 0.90 - ReadingsVal($NAME,"Home_own_consumption_from_PV","0");; ($reserve lt 0)?0:round($reserve,3)  }


Nun kann ich einfach beim zu steuernden Grossverbraucher diesen Wert verwenden:
- Es gibt jeweils pro Geraet ein PowerLimitOn/Off , um eine Hysterese zu haben, gegen die ich pruefe.
- Dann kann ich die Start und End Zeit definieren
- Natuerlich nur, wenn das Geraet aus ist
- Und wenn die maximale Laufzeit noch nicht erreicht wurde
ganz neu ist die Oder-Bedingung dazu gekommen, weil ich gestern beinahe in die 70 % Regelung gekommen waere :-)
- sobald ueber 70 % Eingespeist wuerde, schalte ich den Verbraucher auf jeden Fall ein, auch wenn er noch nicht innerhalb seiner Zeit ist.

Der Plenticore ist mit dynamischer 70 % Regelung eingestellt und hat dann bereits den gesamten Hausbedarf ueber die 70% Einspeisung verlagert.

DOELSEIF
(([PV_Anlage_1:Total_PV_Power_reserve] >= [Pool:PowerLimitOn] and
   [[Pool:TimeStart]-[Pool:TimeEnd]] and
   [Pool:state] eq "off" and
   [Pool_Counter:pulseTimePerDay] < [Pool:RunTimePerDay]
  ) or
  [PV_Anlage_1:Total_active_power_(powermeter)] <= -7000
)


Im ersten Post Punkte 4.; 8.; 9. ist das ganze DOIF, fuer mehrere Geraete, dokumentiert und ab und an auch mal aktualisiert.

Im anhaengenden Bild kann man erkennen, das z.B. der Pool laeuft und dann die Heizung mit der Warmwasser Bereitung um 14:00 Uhr sich eingeschaltet hat. Daraufhin schaltet sich
der Pool sofort ab, weil er seine Mindestlaufzeit schon Eingeschaltet war aber nicht genuegend PV_Reserve da ist. Durch die Bewoelkung heute schwankt die DC Leistung, sobald aber
wieder genuegend PV_Reserve, fuer eine Mindestzeit, da ist schaltet der Pool wieder dazu. Kleinere DC Einbrueche werden durch die Batterie gepuffert (oberes Diagramm). Nach der
Mindestlaufzeit von 30 Minuten, die ich fuer den Pool vorgewaehlt habe, schaltet er dann wegen dem wiederholten DC Einbruch wieder ab.

Gruss
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick