NEWS
E3DC Hauskraftwerk steuern
-
@stevie77 meine Anlage habe ich am 18.07.2020 in Betrieb genommen...Ist also neu...
-
@smartboart Dann hoffe ich mal für dich, dass deine Werte so bleiben und nicht in eineinhalb Jahren so aussehen wie bei mir. Oder noch besser, dass es irgendwie doch ein Parametrierungsfehler seitens E3/DC ist...
-
@stevie77 ja, deshalb bin ja so gespannt was bei deinem Ticket raus kommt.
Ich denke der eine oder andere wird sich das windows tool RSCP Tool auch noch mal anschauen...Mal sehen was die so für Werte haben...
Ich hatte auf die Infinity Variante gesetzt, weil hier biz zu 5 Jahre Batterie nachgerüstet werden kann...Da sollte das eigentlich nicht passieren...
Vorgänger können glaube ich nur 1 Jahr nachrüsten...keine Ahnung was da anders ist an den Anlagen..Ab Juli war die Infinity verfügbar weshalb ich gewartet habe... -
@smartboart Ja, das Tool kam gerade zur richtigen Zeit. In der Facebook-Gruppe gab's ziemlich viele Benutzer, die berichteten ebenfalls in den letzten tagen mehrere kWh verloren zu haben. Für die wäre das sicher interessant...hab' ich da auch gepostet.
Gibt nur noch ein Problem, dass der 2. Batteriekreis des PRO nicht unterstützt wird, da der Autor zum Testen nur einen normalen S10 E mit einem Batteriekreis hat. Meinte aber, er will dem nachgehen... -
@ArnoD Hi Arno, habe das Script Autonomiezeit weiter gepflegt und um aktivierbaren und deaktivierbaren Lastabwurf erweitert ..Falls interesse besteht.....
/* E3DC dynamische Autonomiezeitberechnung inkl. Lastabwurf vor Erreichen der Notstrom Reserve von Smartboard 28.09.2020 V0.0.1 -Dynamische Berechnung der Batterie Autonomiezeit bei Entladung anhand der Modbusinformationen BatSoc und Batterie_Leistung unter Berücksichtigung der Notstromreserve. Für anzeige in Vis.. Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit Diese nur bei Entnahme angezeigt wird. BatSoc in kwh 29.09.2020 V0.0.2 -Berechnung auf Durchschnittswert der Autonomiezeit erweitert, dadurch wird die Zeitanzeige ruhiger und gibt einen gemittelten Wert wieder, welcher auch aussagekräftiger ist. - Notstromreserve wird nun aus Sript E3DC Control von ArnoD eingelesen. Sowie unterscheidung zur manuellen Eingabe falls in E3DC eine Notstromreserve hinterlegt wurde. Somit bleibt die Autonomie Berechnung automatisch aktuell sollte in E3DC Control etwas angepasst werden. 30.09.2020 V0.0.3- Autonomiezeit Anzeige in Minuten wenn < 1 Stunde . State Autonomiezeit geändert von type numnber zu string. 03.10.2020 V0.0.4- Logging überarbeitet für Anzeige im Log Adapter 04.10.2020 V0.0.5 - Lastabwurf von Verbrauchern integriert 07.10.2020 V0.0.6 - Berechnungsfehler, welche -Werte erzeugten wurden behoben. Ausgabe der 1. Autonomiezeitberechnung sofort anzeigen dann wird auf Durchschnittswert umgeschalte 20.10.2020 V0.0.7 - Hinweis stevie77 Wirkungsgrad in Berechnung einbeziehen. laut Datenblatt: max. Systemwirkungsgrad inkl. Batterie (%) > 88 Bei 13 KW 13 / 100 * 88 = 11.44 Bemerkung .Vermutlich kann hier 1 eingetragen werden, da im Verbrauchswert Watt schon die die Verluste inkludiert sind. 21.10.2020 V0.0.7 - Hinweis stevie77 Tiefenentladeschutz bei 10 % mit in Berechnung einbeziehen. V0.0.8 - Berücksichtung Notstrombetrieb Im Normalbetrieb erfolgt die Autonomierzeitberechnung bis zur Notstromreserve . Im Notstrombetrieb wird die Autonomiezeit nun weiter berechnet und die Berechnung erfolgt dann bis zur Nettokapazitätsgrenze (Entladeschutz). */ //Konfiguration var logging = true; var debug = false; var Speicherbrutto = 13; // kw/h hier die Speichergröße in kwh var Wirkungsgrad = 0.88; // Faktor Systemwirkungsgrad > 88% beiS10 E Pro Beispiel: 13 KW 13 / 100 * 88 = 11.44 var Entladetiefe = 0.9; // Faktor Tiefenentladeschutz 90% Nutzbar weil Tiefenentladungsschutz von E3DC 11.44 / 100 * 90 = 10,296 var E3DCReserve = 0; // % eingestellte Notstromreserve in Prozent bei E3dC. Wenn diese nicht verwendet wird dan 0 eintragen. var cron1 = 10; // hier die Schedulezeit - Triggerhäufigkeit alle x Sekunden für Zeitberechnung eintragen var counter = 24; // Hier die Anzahl der Zeitberechnungen eintragen um einen Durchschnitswert zu ermitteln var Rest = 5; // Wert in % gibt die Rest Batterieladung an. Dieser Wert wird der Notstromreserve hinzuadiert, und ist der Wert bei welcher die Last abgeworfen werden soll var AbwurfReset = 15; // Wert in % gibt die Batterieladung an bei welcher wieder die abgeworfene Last wieder zugeschaltet wird. Dieser Wert wird der Notstromreserve hinzuadiert. //Aktoren für den Lastabwurf const idWaschmaschine = 'sonoff.0.Steckdose_Waschmaschine.POWER'/*Waschmaschine*/; const idSpuelmaschine = 'sonoff.0.Steckdose_Spuelmaschine.POWER'/*Steckdose Spuelmaschine*/; const idTrockner = 'sonoff.0.Steckdose_Trockner.POWER'/*Trockner*/; const fC = false; const Statepfad = 'javascript.' + instance + '.PVAnlage.Autonomie.'; //Berechnungsgrundlage const idBatEntnahme = 'modbus.1.holdingRegisters.40070_Batterie_Leistung'/*Batterie-Leistung in Watt*/; const idBatSoc = 'modbus.1.holdingRegisters.40083_Batterie_SOC'/*Batterie-SOC in Prozent*/; const idHTSockel = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HTsockel'; const idHTon = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HTon'; const idHToff = 'javascript.1.PVAnlage.E3DC-Control.Parameter.HToff'; const idNotstrombetrieb = 'modbus.1.holdingRegisters.40084_Emergency_Power_Status'/*Emergency-Power Status*/; //hier muss nichts geändert werden //Variable für Cronjob start stop var Timer = null; //Variable Hilfsmerker var Merker = true; //Variable zur Berechnung der Zeit var Autonomiezeit = 0; //Variable für Berechnung var Reserve = 0; // Variablen für Durchschnittsberechnung var count = 0; var Summe = 0; // Wert gleich anzeigen var Anzeige = false; // Variable für Bat Soc in kwh abzüglich Notstromreserve var BatSockWh = null; var Entnahme = null; var BatSoc = null; //states to create Ergebnisse const idAutonomiezeit = Statepfad + 'Autonomiezeit'; const idBatSockWh = Statepfad + 'Batteriekapazitaet'; const idAbwurfAutomatik = Statepfad + 'Lastabwurfatuomatik'; const idLastabwurf = Statepfad + 'Lastabwurf'; //states create // Autonomiezeit in Vis auf Sichtbarkeit bei != 0 einstellen damit nur Sichtbar bei Entnahme createState(idAutonomiezeit, 0, fC, { type: 'string', name: 'Autonomiezeit',role:'text'}); createState(idBatSockWh, 0, fC, { type: 'number', name: 'Batteriekapazität',role:'value', unit: ' kWh'}); createState(idAbwurfAutomatik, true, fC, {type: 'boolean', name: 'Abwurfautomatik',role:'switch'}); createState(idLastabwurf,false,fC , {type : 'boolean', name: 'Lastabwurf', role:'state'}); if(fC && logging)log('force Creation Aktiv States angelegt oder überschrieben'); //Scriptstart var Batterie = Speicherbrutto*Wirkungsgrad; var Speicher = Speicherbrutto*Wirkungsgrad*Entladetiefe; setState(idAutonomiezeit, '0' ,true); if (logging)log('Batterie E3DC: Die Speichergröße ist ' + Speicherbrutto + ' kWh. abzüglich Wirkungsgrad ' + Batterie + ' kWh und abzüglich des Tiefenentladeschutz bleiben Netto '+ Speicher+ ' kWh.') setTimeout( function(){ Berechnung(); },500); //Bei Abwahl Lastabwurfautomatik Verbraucher wieder zuschalten on(idAbwurfAutomatik,function(dp){ if(dp.state.val){ if(logging)log('Batterie E3DC: Lastabwurf Automatik wurde aktiviert.'); }else{ setState (idTrockner,true); setState (idWaschmaschine,true); setState (idSpuelmaschine,true); setState (idLastabwurf,false,true); if(logging)log('Batterie E3DC: Lastabwurf Automatik wurde deaktiviert. Aktoren werden wieder eingeschaltet.'); } }); // Trigger Berechnung Aktueller Bat Soc in kwh und Reset Lastabwurf on(idBatSoc, function(dp) { var Abwurf = getState(idLastabwurf).val; BatSoc = dp.state.val; var EinBedingung = Reserve + AbwurfReset; if(debug)log('Batterie E3DC: Trigger BatSoc aktiv. BatSoc beträgt: '+ BatSoc +' %. Einbedingung nach Abwurf ist ' + EinBedingung + ' %'); Berechnung(); if(BatSoc > EinBedingung && Abwurf){ if(logging)log('Batterie E3DC: Lastabwurf zurück gesetzt, Aktoren wieder eingeschaltet. BatSoc beträgt: '+BatSoc+ ' %'); setState (idTrockner,true); setState (idWaschmaschine,true); setState (idSpuelmaschine,true); setState (idLastabwurf,false,true); } }); //Berechnung Aktueller Bat Soc in kwh und Wert in State schreiben function Berechnung(){ BatSoc = getState(idBatSoc).val; setState(idBatSockWh,Math.round(((Speicher/100) * BatSoc)*100)/100,true); if(debug)log('Batterie E3DC: Die Aktuell verfügbare Netto Speicherkapazität ist: '+ getState(idBatSockWh).val+' kWh'); } // Schedule Berechnung Autonomiezeit starten bei Entnahme on(idBatEntnahme, function(dp) { if(dp.state.val < 0 ){ if(Merker)schedulestart(); Merker = false; if(debug)log('Batterie E3DC: Aktuelle Entnahmeleistung: ' + dp.state.val +' Watt'); } }); //Berechnung Autonomiezeit function schedulestart(){ if(debug)log('Batterie E3DC: Funktion Schedulestart aktiv'); var cronjob = "*/"+cron1+" * * * * *"; Timer = schedule(cronjob, function(){ if(debug)log('Batterie E3DC: Schedule cronjob aktiv'); Entnahme = getState (idBatEntnahme).val; BatSockWh = getState (idBatSockWh).val; var Sockel = parseFloat(getState (idHTSockel).val); var HToff = getState (idHToff).val; var HTon = getState (idHTon).val; var Notstrombetrieb = getState(idNotstrombetrieb).val; if (HTon === HToff && E3DCReserve === 0 && Notstrombetrieb === 2){ Reserve = Sockel; if(debug)log('Batterie E3DC: Die Notstrom Reserve entsprichte der Einstellung in E3DC Control und beträgt: ' + Reserve +' %'); } if (E3DCReserve >0 && Notstrombetrieb === 2){ Reserve = E3DCReserve; if(debug)log('Batterie E3DC: Die Notstrom Reserve entspricht der User Konfig Einstellun und beträgt'+ Reserve + ' %'); } if ((HTon != HToff && E3DCReserve === 0) || Notstrombetrieb !=2){ Reserve=0; if(debug)log('Batterie E3DC: Es wird keine Notstrom Reserve bei der Berechnung berücksichtigt. Wert auf ' + Reserve +' % gesetzt.'); } setTimeout(function(){ if(Entnahme<0){ BatSockWh = Math.round(BatSockWh - (Speicher/100*Reserve*100)/100); if(debug)log('Batterie E3DC: aktuelle Netto Gesamtkapazität abzüglich der Notstromreserve ist: '+ BatSockWh + ' kWh.'); setTimeout(function(){ var Abwurf = getState(idLastabwurf).val; Autonomiezeit = Math.round(BatSockWh*1000/Entnahme*-1*100)/100; Durchschnitt(); if (Abwurf === false){ Lastabwurf(); if(debug)log('Batterie E3DC: Lastabwurfprüfung aktiv'); } // gleich Anzeigen if(Anzeige === false && Autonomiezeit >0){ setState(idAutonomiezeit, Autonomiezeit +' h',true); Anzeige = true; } if(debug)log('Batterie E3DC: Autonomiezeit neu berechnet auf: '+ Autonomiezeit + ' h.'); },100); }else{ //Berechnung stoppen bei Entnahme 0 und Autonomiezeit auf 0 setzen if(Entnahme >=0){ clearSchedule(Timer); Merker = true; if(debug)log('Batterie E3DC: Schedule cronjob gestoppt weil keine Entnahme'); setState(idAutonomiezeit,'0',true); Anzeige = false; } } },100); }); } // Zaehlem für Durchschnittsberechnung function Durchschnitt(){ count ++ Summe = Summe + Autonomiezeit; if(debug)log ('Summe: ' + Summe + ' Zaehler: '+count+ ' Addition: + ' + Autonomiezeit); if(count===counter){ var Zeit= Summe/count; setTimeout(function(){ if(logging)log('Batterie E3DC: Aktuelle Netto Speicherkapazität beträgt: '+ getState(idBatSockWh).val+' kWh, abzüglich der Notstromreserve '+BatSockWh+ ' kWh' ); if(Zeit>=1){ setState(idAutonomiezeit,+ Math.round(Zeit*100)/100 +' h',true); if(logging)log('Batterie E3DC: Autonomiezeit beträgt: '+ Math.round(Zeit*10)/10 + ' h'); } if(Zeit<1 && Zeit >0){ setState(idAutonomiezeit, + Math.round((Zeit*60)*100/100)+' min',true); if(logging)log('Batterie E3DC: Autonomiezeit bis Notstromreserve beträgt: '+Math.round((Zeit*60)*100/100) +' min.'); } if(Zeit < 0){ setState(idAutonomiezeit, '0' ,true); if(logging)log('Batterie E3DC: Autonomiezeit beträgt: 0 min.'); } count=0; Summe=0; if(debug)log('Batterie E3DC: Reset: Count = '+ count+ ' Summe = ' + Summe); },100); } } function Lastabwurf(){ var Automatik = getState(idAbwurfAutomatik).val; var Bedingung = Reserve + Rest; if(debug)log('Batterie E3DC: Trigger Lastabwurf aktiv. BatSoc beträgt: '+ BatSoc +' %. Abwurfbedingung ist ' + Bedingung + ' %'); if(BatSoc <= Bedingung && Automatik){ if(logging)log('Batterie E3DC: Lastabwurf. BatSoc beträgt: '+ BatSoc +' % und ist <= Abwurfbedingung mit ' + Bedingung + ' %'); setState (idTrockner,false); setState (idWaschmaschine,false); setState (idSpuelmaschine,false); setState (idLastabwurf,true,true); } }
-
Es gab jetzt noch ein Tool-Update, wo die Werte besser angezeigt werden. Bei 100 % Ladeanzeige am Gerät sind die Werte bei mir echt übel.
-
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Das wird normalerweise von E3DC-Control dynamisch eingestellt, vermute das die letzte Einstellung 3000 war.
Was aber auch komisch ist da eigentlich immer der max. Wert eingestellt ist, wenn E3DC-Control nicht gerade regelt.Also du hast natürlich recht...Hab mich mal ne Weile vor die Anlage gsetzt und unten erscheint der gelbe Balken garnicht mehr im Display...
Auf dem Raspi schein aber alles zu laufen..Hab auch das Update nochmal drüber gebügelt und alles neu eingerichtet..
E3DC Anlage selbst auch neu gestartet...verstehe ich nicht warum die Info in gelb nicht mehr kommt, das geregelt wird.. jemand ne idee?
E3DC.sh ausgeführt und Werte werden auch abgerufen... -
@smartboart sagte in E3DC Hauskraftwerk steuern:
...verstehe ich nicht warum die Info in gelb nicht mehr kommt, das geregelt wird.. jemand ne idee?
E3DC.sh ausgeführt und Werte werden auch abgerufen...Dumme Zwischenfrage: Aber geregelt wird schon noch, nach den Uhrzeiten in der ioBroker-Ansicht? Ich habe das gelbe Band letztens noch gesehen an meiner Anlage...
-
@stevie77 das hat nix mit Arnos script zu tun...
ich habe aktuell ein Problem, dass nicht geregelt wird und das ich das Gelbe Info Band nicht mehr sehe.
Allerdings taucht unter htop auch E3DC nicht mehr auf, was auf ein Thema von Eba.M E3DC Control auf meinem System deutet.... -
@smartboart Als Gegentest könnte ich dir meinen E3DC-Control-Docker-Container ans Herz legen. Vielleicht läuft es damit, wenn deine eigene Installation irgendwie kaputt ist?!
-
@stevie77 was muss ich da machen? Bräuchte nen schnellen Test wo ich sehe, das die analge reagiert..
-
@stevie77 sagte in E3DC Hauskraftwerk steuern:
Es gab jetzt noch ein Tool-Update, wo die Werte besser angezeigt werden. Bei 100 % Ladeanzeige am Gerät sind die Werte bei mir echt übel.
so sieht es bei mir aus...
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
@stevie77 was muss ich da machen? Bräuchte nen schnellen Test wo ich sehe, das die analge reagiert..
https://hub.docker.com/repository/docker/stehada/e3dc-control
Zuvor Docker installieren, was je nach Umgebung unterschiedlich ist (Raspi, Windows, Synology). Bei meinem Raspi so:
Docker-Installation: https://www.dahlen.org/2019/06/docker-und-raspbian-auf-einem-raspberry-pi/
sudo apt update sudo apt full-upgrade sudo rpi-update echo -n "$(head -n1 /boot/cmdline.txt) cgroup_enable=cpuset cgroup_enable=memory" | sudo tee /boot/cmdline.txt sudo apt remove docker docker-engine docker.io containerd runc curl -fsSL https://get.docker.com -o - | sudo sh sudo usermod -aG docker $(id -un) docker run --rm hello-world
-
@smartboart sagte in E3DC Hauskraftwerk steuern:
@stevie77 sagte in E3DC Hauskraftwerk steuern:
Es gab jetzt noch ein Tool-Update, wo die Werte besser angezeigt werden. Bei 100 % Ladeanzeige am Gerät sind die Werte bei mir echt übel.
so sieht es bei mir aus...
Was zeigt mir eigentlich der SOH Wert bei der Batterie ? ist bei mir je nach Modul zwischen 96.8% und 99.5%. Wobei die neusten Module 99.5% haben ca. 6 Monate alt und die älteren 96.8% ca. 11 Monate alt.
-
@stevie77 Danke für die Infos...Bei mir laüft es direkt unter debian Buster..
ich denke ich habs aber hinbekommen. muss morgen mal auf dem display schauen.
Zumindest läuft jetzt unter htop wieder .erdc-control..
ich hatte 2 instanzen attached unter screen -ls mit mit screen -r xxxnummer habe ich die instanzen mit ctrl a und k gekillt ...innerhalbs screen konnte ich sehen das er probleme mit der E3DC.sh hatte....Beim Update wohl zerschossen..
Datei angepasst und mit
screen -dmS E3DC /home/pi/E3DC-Control/E3DC.sh gestartet und gegen gecheckt...lief wieder...nach neustart immer noch gut...mal sehen was morgen passiert. -
@ArnoD sagte in E3DC Hauskraftwerk steuern:
Was zeigt mir eigentlich der SOH Wert bei der Batterie ? ist bei mir je nach Modul zwischen 96.8% und 99.5%. Wobei die neusten Module 99.5% haben ca. 6 Monate alt und die älteren 96.8% ca. 11 Monate alt.
Also ich vermute, dass von möglichen 100 % Kapazität bei einer neuen Batterie du nur noch bei der einen 96,8% und den anderen 99,5 % Kapazität hast.
In den einem Fall wäre das eine Degeneration ( Alterung ) von 3,2% in 11 Monaten.
SOH state of health... -
@smartboart
Ok, danke -
@smartboart sagte in E3DC Hauskraftwerk steuern:
Also ich vermute, dass von möglichen 100 % Kapazität bei einer neuen Batterie du nur noch bei der einen 96,8% und den anderen 99,5 % Kapazität hast.
In den einem Fall wäre das eine Degeneration ( Alterung ) von 3,2% in 11 Monaten.
SOH state of health...Ja, so sehe ich das auch. Und dann wundert mich nix mehr, dass mein PRO 3-4 kWh verloren hat und nicht mehr als 8 kWh reinlädt. Weil die Batterien bei mir mit SoH 88 % nach 1,5 Jahren schon bedeutend schlechter aussieht.
Die Frage ist nun auch, ob der bei mir maximal erreichbare SoC von real nur noch 75 % zwangsläufig aus dem schlechten SoH resultiert... -
@stevie77 ja, vlt...hast du ne schlechte charge erwischt..Interessant waere ob beide batterien so schlecht sind oder nur die eine...vlt. ist es ja auch ein FW Thema...Auf die antwort bin ich gespannt...
-
Neue Version 0.2.17 hochgeladen.
Änderungen:
Version: 0.2.17 Neue E3DC-Control Version von Eberhard, die Parameter "wbminlade" und "wbmode" integriert. Es sind auch Änderungen in VIS erforderlich, um diese in Vis zu ändern.
Version: 0.2.16 Problem dass bei Prognoseanwahl Änderung Proplanta Forcast oder beide die json nicht gleich aktualisiert wird behoben.Danke an smartboart.Neue View E3DC-Control Stand 04.10.2020 habe ich auch hochgeladen.