NEWS
Brauche Hilfe bei PV Laden Skript
-
OK, da ich das ganze mit Timeout sowieso nie wirklich verstanden habe, habe ich das nun aus der Freigabe für den Speicher raus geworfen. Die beiden Werte <> sollten ja eigentlich bei der Trägheit des System ausreichend sein, damit es nicht prellt.
Hier nochmal die korrigierte Version
var Speicher, Verbraucher_1, Verbraucher_2, Verbraucher_3; // Beschreibe diese Funktion … async function Verbraucher_1_F() { setState("javascript.0.PV_Eigenverbrauch.Verbraucher_1"/*PV_Eigenverbrauch.Verbraucher_1*/, ('e-Bike Ladestation ist ' + String(Verbraucher_1 == true ? 'AN' : 'AUS')), true); setState("sonoff.0.DEKO_3.POWER1"/*DEKO_3 POWER1*/, Verbraucher_1); } // Beschreibe diese Funktion … async function Verbraucher_2_F() { setState("javascript.0.PV_Eigenverbrauch.Verbraucher_1"/*PV_Eigenverbrauch.Verbraucher_1*/, ('Raumentfeuchter ist ' + String(Verbraucher_2 == true ? 'AN' : 'AUS')), true); setState("sonoff.0.DEKO_4.POWER1"/*DEKO_4 POWER1*/, Verbraucher_2); } // Beschreibe diese Funktion … async function Verbraucher_3_F() { setState("javascript.0.PV_Eigenverbrauch.Verbraucher_1"/*PV_Eigenverbrauch.Verbraucher_1*/, ('Freigabe Poolpumpe' + String(Verbraucher_3 == true ? 'EIN' : 'AUS')), true); setState("sonoff.0.DEKO_5.POWER1"/*DEKO_5 POWER1*/, Verbraucher_3); } // Beschreibe diese Funktion … async function PV_Ueberschuss() { setState("javascript.0.PV_Eigenverbrauch.PV_Ueberschuss_Freigabe "/*PV_Eigenverbrauch.PV_Ueberschuss_Freigabe */, ('PV Überschuss Freigabe ' + String(Speicher == true ? 'OK' : 'Gesperrt')), true); } Speicher = false; // Freigabe über Speicher SoC on({id: 'fronius.0.powerflow.inverter1.SOC', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "") >= 99.2) { Speicher = true; } if ((obj.state ? obj.state.val : "") <= 97) { Speicher = false; } await PV_Ueberschuss(); }); Verbraucher_1 = false; Verbraucher_2 = false; Verbraucher_3 = false; Verbraucher_1 = 300; Verbraucher_2 = 200; Verbraucher_3 = 100; // Verbraucher priorisiert nach Netzeinspeisung starten on({id: 'discovergy.0.60868258.Power_Delivery', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("discovergy.0.60868258.Power_Delivery").val >= 0) { if (Verbraucher_1 == false && getState("discovergy.0.60868258.Power_Delivery").val > Verbraucher_1 && Speicher == true) { Verbraucher_1 = true; await Verbraucher_1_F(); } if (Verbraucher_1 == true && Verbraucher_2 == false && getState("discovergy.0.60868258.Power_Delivery").val > Verbraucher_1 + Verbraucher_2 && Speicher == true) { Verbraucher_2 = true; await Verbraucher_2_F(); } if (Verbraucher_1 == true && Verbraucher_3 == false && getState("discovergy.0.60868258.Power_Delivery").val > Verbraucher_1 + Verbraucher_2 + Verbraucher_3 && Speicher == true) { Verbraucher_3 = true; await Verbraucher_3_F(); } } }); // Verbraucher priorisiert nach Netzeinspeisung stoppen on({id: 'discovergy.0.60868258.Power_Consumption', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("discovergy.0.60868258.Power_Consumption").val > 0) { if (Verbraucher_1 == true && getState("discovergy.0.60868258.Power_Consumption").val < Verbraucher_1) { Verbraucher_1 = false; await Verbraucher_1_F(); } else if (Verbraucher_1 == true && Verbraucher_2 == true && getState("discovergy.0.60868258.Power_Consumption").val < Verbraucher_1 + Verbraucher_2) { Verbraucher_2 = false; await Verbraucher_2_F(); } else if (Verbraucher_1 == true && Verbraucher_2 == true && Verbraucher_3 == true && getState("discovergy.0.60868258.Power_Consumption").val < Verbraucher_1 + Verbraucher_2 + Verbraucher_3) { Verbraucher_3 = false; await Verbraucher_3_F(); } } });
-
@jb_sullivan
Du verwendest die Variablen Verbraucher_1, Verbraucher_2, Verbraucher_3 mal als Boolean und mal als Zahl. Das kann nicht funktionieren.EDIT: Was für einen Wert enthält der Datenpunkt "Power_Delivery"?
-
@paul53 einen positiven Zahlenwert (Einspeisung) genau wie Power_Consumption (Netzbezug)
Das blöde ist, das der Wechselrichter immer versucht auf Einspeisung 0 zu regeln. Das ergiebt einen wilden Wechsel zwischen Bezug und Einspeisung, wenn nicht mit "tausenden" von Watt eingespeist wird. Das muss man irgendwie entprellen
-
sieht das jetzt besser aus mit den Variablen bzgl. Unterscheidung Zahl / Boolean?
-
@jb_sullivan sagte: sieht das jetzt besser aus mit den Variablen bzgl. Unterscheidung Zahl / Boolean?
Nicht wirklich. Vorschlag:
-
Sieht soweit ganz gut aus. Wann geschaltet wird, bestimmt im Moment im Grunde die Instanz von discovergy, da die Werte nur alle 180 Sekunden abgeholt werden.
D.h. wenn zu dem Zeitpunkt der Datenpunkt Aktualisierung der "falsche" Wert im DP drin steht, kommt es zu einer Verzögerung für die Zu- bzw. Abschaltung. Oder ist das über die Discovergy Adapter Einstellung vielleicht sogar besser um ein permanentes EIN/AUS schalten zu unterbinden?
-
@jb_sullivan
Beispiel Verbraucher schalten für verbraucher1: -
-
@jb_sullivan sagte: Das hatte ich ja schon so ähnlich
Du rufts die Funktion aber nur zum Einschalten auf. So wird der Verbraucher nie wieder ausgeschaltet.
@jb_sullivan sagte in Brauche Hilfe bei PV Laden Skript:
Was bdeutet "ungleich" eigentlich?
Wenn der Sollzustand (Variable) und der Istzustand (Datenpunkt-Wert) unterschiedlich sind.
-
@paul53 "Wert von objekt ID" wäre in deinem Beispiel was (Power_Delivery oder Leistung_1)?
-
@jb_sullivan sagte: "Wert von objekt ID" wäre in deinem Beispiel was?
DEKO_3_POWER1
-
-
@jb_sullivan sagte: sicher? steuer wäre DEKO, aber Wert ist auch DEKO?
Ja. Es soll ja nur gefunkt werden, wenn der Aktor nicht den Sollzustand hat (Störpegelverringerung).
-
@paul53 Wir haben gerade einen coolen Sonnen/ Wolken Mix und ich habe den Aktualisierungsintervall vom Discovergy Adapter auf 30 Sekunden runter genommen und die Schaltschwellen entsprechend niedrig eingestellt.
Ist ein lustiges geklackere der Sonoff Steckdosen - also mit anderen Worten. Scheint prächtig zu funktionieren
Viele Dank für deine Unterstützung !!!
-
@paul53
Morgen. Ich hätte mal eine Frage zu meinem letzten Post wo du mir sehr geholfen hast. Habe gestern gemerkt das wenn der 1 timeout getriggert wird ist alles gut. Sobald der netz Bezug kommt, und die timeout 2 abläuft wechselt er den state ständig von wahr auf falsch. Das ganze macht er solange bis die Verzögerung abgelaufen ist. Wie könnte ich so etwas umgehen? Ich hoffe könnte es verständlich erkläre. Danke schonmal -
@malu sagte: Sobald der netz Bezug kommt, und die timeout 2 abläuft wechselt er den state ständig von wahr auf falsch.
Skript?
-
@paul53 hallo. Das skribt hast du mir gezeigt. Sie ist vom 24.03.21. Ich kann es auch gerne noch mal einsenden
-
@malu sagte: wechselt er den state ständig von wahr auf falsch. Das ganze macht er solange bis die Verzögerung abgelaufen ist.
Das kann bei diesem Skript nicht passieren. Poste bitte den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
-
@paul53 ok danke mal für die info. Sobald ich wieder zuhause bin werde ich das mal machen. Danke schonmal
-
@homoran Ich habe seit letzter Woche auch eine PV-Anlage am laufen und versuche gerade dein Skript zu verstehen.
Ich habe ein paar Fragen
die Objekt-ID 1-0:16_7_0__255.value ist dein Überschuss in Watt?
woher kommt Objekt-ID Ladestrom_Auto:2.Power?
woher kommt Objekt-ID manual_override
was berechnest du mit Überschuss_avg / 215
was berechnest du mit Mindesteinspeisung x 0,8
warum vergleichst du deinen Überschuss bei Not-Aus >10000
FlashCounter ist für deine Visu?
bei Auto_Akku_voll hast du die Werte 4 und 2, was bedeuten diese? Ist das Zoe-spezifisch?Ich glaube das wars. Sorry für die Menge und danke schon mal!