NEWS
PV überschuss Heizen
-
Hallo zusammen
Unterdessen ist mein PV-Anlage fertig und meine Batterie auch auf das maximum ausgebaut. Nun kommt der Winter und ich möchte meiner Pellettsheizung etwas unterstützung bieten. Dafür habe ich einen 3x2kW Heizstab eingebaut, bei dem jede Phase einzeln mit einem Shelly gesteuert werden kann.
Mein aktuelles Blockly macht das auch eigentlich sehr gut, aber eben nur auf manuelles Softeinschalten über die Visu. Ich möchte da eigentlich eine automatische Regelung realisieren damit die Netzrückspeisung erst erfolgt wenn die Batterie voll und der Pufferspeicher voll ist.
Aber genau da sind meine Softwarekenntnisse jetzt sehr schnell zu Ende. Bis jetzt habe ich auch keine wirklich Beispiele gefunden die ich auch verstehe. Vieleicht gibt es ja Informationen die ich nicht gesehen oder übersehen habe?
-
@andibr sagte: Mein aktuelles Blockly
Welches?
@andibr sagte in PV überschuss Heizen:
Netzrückspeisung erst erfolgt wenn die Batterie voll und der Pufferspeicher voll ist.
Was soll Priorität haben? Batterie oder Pufferspeicher?
-
@paul53
Grundsätzlich die Batterie. Kann sein das sich dass irgendwann noch ändert, denn mein Sohn will sich ein neues Auto anschaffen. Das wird dann vermutlich auch irgendwie noch geladen werden müssen.Das Blockly kann ich reinkopieren, aber ich möchte es neu machen, weil es eben keine echte automatikfunktion hat und immer alle 3 Shelly zusammen schaltet.
Übrigends meine PV ist eine Kombi aus Victron und Fronius, entsprechend kann ich sämtliche PV Daten mit MQTT oder Node-Red abholen oder verschieben. Auch die Messung der Rückspeisung ins Netz ist doppelt gemessen, ich habe die Werte aus dem Victron und zusätzlich habe ich kürzlich so ein neuer Shelly 63em verbaut.
-
@andibr Schau dir mal das Video an https://www.youtube.com/watch?v=ZCf9FN_inus
Ich habe mir nach diesem Video mein Blockly zusammengebastelt und es funktioniert wunderbar -
-
@paul53
Wow, danke, ich baue mir das morgen gleich mal nach und schaue wie weit ich komme. Genau das mit dem Stufe hoch und runter habe ich irgendwie nicht begriffen. Aber hier scheint es ja einfacher zu verstehen zu sein.Edit:
Für alle die meine komlizierte Lösung sehen wollen, hier noch das aktuelle:
Aber es ist wirklich sehr aufwendig und funktioniert nur teilweise, darum will ich einen neuen Ansatz dafür realisieren.
-
Hallo Paul53
Vieleicht stelle ich mich da jetzt etwas doof an, aber es funktioniert so nicht.
Der Einspeisewert (Gesamtwirkleistung) liegt bei Netzrückspeisung als positive Zahl vor. Kann es sein das es daran scheitert?
-
@andibr sagte: es funktioniert so nicht.
Dann logge mal die Variablenwerte und den SOC, um zu sehen, woran es hapert.
Übrigens muss die Gesamtwirkleistung mind. 5 Minuten lang über 2500 W betragen, damit hochgeschaltet wird.
Die Temperaturgrenzwerte passen so?@andibr sagte in PV überschuss Heizen:
meine komlizierte Lösung sehen wollen
Ist nicht entzifferbar.
-
javascript.0 14:11:20.260 info Überschuss5356.947 Temperatur72.5 SOC99 javascript.0 14:11:21.251 info Überschuss5482.259 Temperatur72.5 SOC99
Ich habe nun folgendes deaktiviert
Wenn ich das "nicht verzögerung Delay....." aktiviere geht es nicht mehr.
-
@andibr sagte: Wenn ich das "nicht verzögerung Delay....." aktiviere geht es nicht mehr.
Das ist erforderlich, um einen Mehrfachstart des Timers zu verhindern, der sich dann nicht mehr stoppen lässt. Aktiviere es wieder, selektiere nochmal delayOn und zeige den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
Du verwendest jetzt einen anderen Trigger-Datenpunkt, der negativ bei Netzeinspeisung ist?
Das macht man besser so: -
on({ id: 'alias.0.VisuPVA.Rueckspeisung' /* Rueckspeisung */, change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; temp = getState('alias.0.Heizung.Speicher_oben').val; ueberschuss = getState('alias.0.VisuPVA.Rueckspeisung').val * -1; if (ueberschuss < 2500) { (() => { if (delayOn) { clearTimeout(delayOn); delayOn = null; }})(); } else if ((temp < 75) && (getState('alias.0.VisuPVA.Pytes_SOC').val > 85) && (!delayOn)) { delayOn = setTimeout(async () => { delayOn = null; if (!getState('alias.0.Heizung.Hz_Speicher_L1').val) { setState('alias.0.Heizung.Hz_Speicher_L1' /* Heizung_L1 */, true); } else if (!getState('alias.0.Heizung.Hz_Speicher_L2').val) { setState('alias.0.Heizung.Hz_Speicher_L2' /* Heizung_L2 */, true); } else if (!getState('alias.0.Heizung.Hz_Speicher_L3').val) { setState('alias.0.Heizung.Hz_Speicher_L3' /* Heizung_L3 */, true); } }, 60000); } if ((temp < 80) && (ueberschuss > 200)) { (() => { if (delayOff) { clearTimeout(delayOff); delayOff = null; }})(); } else if (!delayOff) { delayOff = setTimeout(async () => { delayOff = null; if (getState('alias.0.Heizung.Hz_Speicher_L3').val) { setState('alias.0.Heizung.Hz_Speicher_L3' /* Heizung_L3 */, false); } else if (getState('alias.0.Heizung.Hz_Speicher_L2').val) { setState('alias.0.Heizung.Hz_Speicher_L2' /* Heizung_L2 */, false); } else if (getState('alias.0.Heizung.Hz_Speicher_L1').val) { setState('alias.0.Heizung.Hz_Speicher_L1' /* Heizung_L1 */, false); } }, 120000); } });
Richtig, ich habe mir via Alias den Datenpunkt vom Shelly neu eingebunden, um die ganze Sache für mich verständlich zu machen, habe ich da jetzt eben die Umformung auf eine positiv Zahl mit reingepakt (Zeile 5)
Einfach um ganz sicher zu sein, dass da nicht noch irgendwas vom alten Müll mit läuft habe ich jetzt mal Iob neu gebootet, logisch das alte Skript vorher deaktiviert. Jetzt hat er zumindest mal eingeschaltet (Stufe 1). -> also läuft es doch irgendwie. Muss dann die Zeit wieder auf 5min stellen, ist mir klar.
Wenn ich da jetzt noch die Whirlpool zusätzlich mit dem 1.8kW Heizelement einbinden möchte, muss ich den einfach als 4 Heizung einfügen?
-
@andibr sagte: also läuft es doch
Alles andere hätte mich gewundert, denn der Javascript-Code ist korrekt.
@andibr sagte in PV überschuss Heizen:
Whirlpool zusätzlich mit dem 1.8kW Heizelement einbinden möchte, muss ich den einfach als 4 Heizung einfügen?
Ja, als 4. Stufe, wenn der Pufferspeicher Priorität haben soll. Allerdings könnte die Auswertung der Speichertemperatur zum Problem werden.
-
@paul53
Stimmt, der Pool hat natürlich eine ganz andere Temperatur. Mal schauen wie sich das ganze in den kommenden Tagen verhält. Vor allem auch, ob sich das mit dem ausschalten auch richtig verhält.Die kommende Woche scheint ja genau das Wetter zum ganzen zu sein, da wird es etliche Schaltzyklen geben.
Ich werde das jetzt mal eine Weile beobachten
Vielen herzlichen Dank für deine Bemühungen.
Andi