NEWS
E3DC Hauskraftwerk steuern
-
@ArnoD
Hallo Arno, ich habe ein script geschrieben, welches dein Script ohne source Analytics auskommen lässt.
Bei Sekunden Pollzeit des Modbusadapter, sollte das Script so genau sein wie source analytics.Je kleiner die Pollzeit vom modbus adapter desto genauer wird das Ergebnis sein...
Ich hoffe ich habe keinen Denkfehler, heute Abend weiß ich ob es ordentlich gezählt hat.
Habe vernommen, dass du ja auch auf den adapter verzichten möchtest?
Da es für die Prognose wohl doch besser ist mit dem Ertrag zu rechnen und nicht mit dem was entnommen wird, da der Verbrauch im Haus und Ladung bzw Batterieentnahme doch eher schwankt, habe ich das nun so gelöst.
Wenn du Interesse hast es zu übernehmen, kannst du mit testen wie genau es ist.. hier das Script...
createState('javascript.1.PVAnlage.PVArbeitE3DC.heute', 0, {name: 'PV Leistung Heute laufender Tag', type: 'number', unit: 'kWh' }); const idLeistung = 'modbus.1.holdingRegisters.40068_PV_Leistung'; const idPVErtrag = 'javascript.1.PVAnlage.PVArbeitE3DC.heute' var debug = false; var logging = true; var count = 0; var Summe = 0; // Zaehlem on(idLeistung, function(dp) { var Leistung = getState(idLeistung).val; if(Leistung >= 1){ count ++ Summe = Summe + Leistung; if(debug)log(['Summe: ' + Summe, ' Zaehler: '+count, ' Addition: + ' +Leistung ].join('')); } }); // jede minute in W/h umrechen W = P*t schedule ("* * * * *", function () { if(debug)log('minütlicher Schedule aktiv'); if(count >0 && Summe >0){ var PVErtrag = getState (idPVErtrag).val var Pmin = Summe/count; setState(idPVErtrag, PVErtrag + Pmin/60/1000,true);//kWh if(debug)log(['Schedule Umrechnen W = P*t. Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Ertrag: ' +PVErtrag ].join('')); setTimeout(function(){ count=0; Summe=0; if(debug)log(['verzögerter Reset: Count = '+ count, ' Summe = ' + Summe ].join('')); },100); } }); // jeden Tag um 23:59 Tageswert nullen. schedule({hour: 0, minute: 1}, function () { setState(idPVErtrag,0,true); if (logging)log('Tagesertragswert auf 0 gesetzt'); });
EDIT: hatte noch nen Fehler bei 0 Leistungswerten...
ist oben korrgiert.
Arbeite noch daran den minütlichen schedule zu stoppen wenn nicht mehr benötigt... -
und hier nochmal mit Aktivierung und Deaktivierung des minütlichen Schedule.
Somit werden der minütliche Schedule auch nur ausgeführt wenn es was zum Rechnen gibt...Hab es noch nicht testen können, also hier weiß ich erst morgen ob es klappt oder noch ne Kleinigkeit geändert werden muss...
createState('javascript.1.Test.E3DC.Ertrag_Heute', 0, {name: 'Ertrag Heute laufender Tag', type: 'number', unit: 'kWh' }); const idLeistung = 'modbus.1.holdingRegisters.40068_PV_Leistung'; const idPVErtrag = 'javascript.1.Test.E3DC.Ertrag_Heute' var debug = true; var logging = true; var count = 0; var Summe = 0; var Timer = null; var merker = false; // Zaehlem on(idLeistung, function(dp) { var Leistung = getState(idLeistung).val; if(Leistung >= 1){ if(merker)schedulestart(); merker = false; count ++ Summe = Summe + Leistung; if(debug)log(['Summe: ' + Summe, ' Zaehler: '+count, ' Addition: + ' +Leistung ].join('')); } }); //Skriptstart schedulestart() // jede minute in W/h umrechen W = P*t function schedulestart(){ if(debug)log('Funktion Schedulestart aktiv'); var AufDieMinute = '* * * * *'; Timer = schedule(AufDieMinute, function(){ if(debug)log('minuten Schedule aktiv'); var PVErtrag = getState (idPVErtrag).val; var Pmin = Summe/count; if(count>0 && Summe >0){ setState(idPVErtrag, PVErtrag + Pmin/60/1000,true);//kWh if(debug)log(['Schedule Umrechnen W = P*t. Minutenwert Leistung: '+ Pmin, ' Minutenwert Arbeit: ' + (Pmin/60/1000), ' Tageswert Ertrag: ' +PVErtrag ].join('')); setTimeout(function(){ count=0; Summe=0; if(debug)log(['Reset: Count = '+ count, ' Summe = ' + Summe ].join('')); },100); }else{ if(count===0 && Summe ===0){ clearSchedule(Timer); merker = true; if(logging)log('minuten Schedule gestoppt'); } } }); } // jeden Tag um 23:59 Tageswert nullen. schedule({hour: 0, minute: 1}, function () { setState(idPVErtrag,0,true); if (logging)log('Tagesertragswert auf 0 gesetzt'); });
-
Auch von meiner Seite nochmal ein großes DANKE!! für deine Arbeit.
So macht der E3DC gleich noch mehr Spaß.kurzer Hinweis zu der neuen Version 0.2.07, evtl sollte hier noch ein Hinweis ins Changelog, dass ein zusätzliches Javascript Modul "is-it-bst" notwendig ist.
-
@smartboart Das ist ja super.
Werde es heute integrieren und testen. -
@Abyss
Ja richtig, sollte auf alle Fälle drin stehen.
Danke. -
@Abyss habe es bei der Anleitung im ersten Post hier ergänzt und werde es auch ins Changelog eintragen.
-
Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was. -
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Habe mir das Script jetzt mal angeschaut und verstehe nicht ganz wann dein merker auf true gesetzt wird.
Beim Start wird dieser auf false gesetzt und dürfte eigentlich nie true werden oder übersehe ich hier was.if(count===0 && Summe ===0){ clearSchedule(Timer); merker = true; if(logging)log('minütlicher Schedule gestoppt');
-
oh ja...habe den scriptstart vergessen zu kopieren...
//skriptstart schedulestart();
habs oben geändert..
-
Ok habe dein Script jetzt mal übernommen und lass beide Zähler Parallel laufen, mal schauen wie groß der Unterschied ist.
Ich habe im Modbus Adapter Pol delay auf 1 sek, eingestellt um die Abtastrate zu erhöhen.
Das scheint aber source Analytics nicht weiter zu beeinflussen, vermute das dort eine andere Pol Zeit verwendet wird.
Über dein Script wird auf alle Fälle eine höherer PV Ertrag berechnet. -
1 Sekunde ist gut... Je kleiner desto genauer...Evtl. kann man die Pollzeit später etwas erhöhen sollte die Genauigkeit kaum darunter leiden...
Ich habe gerade meine beiden Varianten laufen seid heute morgen. Will sehen ob der Schedulestart und Stop sich negativ auswirkt. Was es eigentlich nicht sollte. Es sollten dennoch alle Änderungen berücksichtigt werden....Vergleichen muss man das mit den Leistungswerten Solarproduktion aus dem E3DC Portal...
Denke wenn sich das script nicht verzählt, sollte es ziehmlich genau sein... -
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Das scheint aber source Analytics nicht weiter zu beeinflussen, vermute das dort eine andere Pol Zeit verwendet wird.
Über dein Script wird auf alle Fälle eine höherer PV Ertrag berechnet.Mein Zähler geht jetzt seit skriptstart vor 2 Stunden um 0,1 kw/h nach..
Will aber nicht noch kürzer pollen wie eine Sekunde...Das ist mir eigentlich schon zu kurz... Mal sehen wo die Uhr heute Abend steht... -
Habe es vor 20 min. gestartet und bereits bei deinem Script ein plus von 0,3 kWh zu SourceAnalytix.
Habe den Leistungsmesser 1 vergessen.
Den müsste ich jetzt auch noch integrieren dann könnte man auf das Modul SourceAnalytix verzichten. -
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Habe den Leistungsmesser 1 vergessen.
Den müsste ich jetzt auch noch integrierenJa bitte.
Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten. -
@stevie77 sagte in E3DC Hauskraftwerk steuern:
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Habe den Leistungsmesser 1 vergessen.
Den müsste ich jetzt auch noch integrierenJa bitte.
Ich lass' euch jetzt mal testen und ich 2-3 Wochen nach meinem Urlaub übernehme ich dann wohl auch den Stand. Dann sind auch hoffentlich alle Fehlerchen raus, die sich so im Betrieb evtl noch zeigen könnten.Wir machen keine Fehler...Wir testen nur ob es andere bemerken..
-
-
@ArnoD also meine Werte stimmen exact mit dem portal überein...Das script hat aufgeholt... Hatte wahrscheinlich beim letzten Ablesen die view nicht aktualisiert.
und der Unterschied in beiden Skripten zeigt sich um einen zähler in der 5 nachkomma stelle...
und vermutlich auch nur weil ich sie nicht zeitgleich gestartet habe..
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
Wir machen keine Fehler...Wir testen nur ob es andere bemerken..
-
@smartboart meinst du die Webseite von E3DC ?
-
@stevie77
Beim Leistungsmesser1 wird da die Leistung immer mit - angezeigt ? oder sind das auch positive Werte ?