NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@waly_de der Wert hat sich wohl nach dem Update gestern verändert aber wenn ich in der App von 800 W runter gehe passiert da nichts.
erdata.0.ecoflow.app_device_property_XXXXXXXX.data.InverterHeartbeat.ratedPower
-
@ponti92
Danke für die Aufklärung wie es derzeitig läuft.
Es ist klar, daß ein ein Shelly3EM nicht direkt wie ein Stecker behandelt werden kann. Mindestens muß die derzeitig abgegebene Leistung mit berücksichtigt werden.
Hätte halt gedacht, daß dies schon so passiert. Aber woher soll es auch kommen.
Wenn man den shelly als mqtt über EF abboniert scheint ja der originale output übermittelt zu werden. Also braucht es einen Umsetzer, der aber zeitgleich noch die aktuelle Leistung braucht.
Wäre interessant ob es nunmehr ein ganz unbekanntes Gerät zu abbonieren gibt. Genaugenommen müsste das dann auch nicht JSON sein, sondern protobuf, da ja der powerstream nichts anderes kennt.PS.
danke für die logs.
Hab mal ein paar angeschaut und dort stehen noch mehr Daten drin als die heutige protobuf Definition kennt.
Die Definition geht bisher bis Feld 61 und da gibt es nun Daten mit höheren Feldnummern!
Da braucht es noch ein paar unknownXX.Edit.
In dem einen sind die Energiedaten drin und siehe da, nicht nur die bekannten watth1..7, sondern auch "watth16":729,"watth17":866,"watth18":866
Da muß man noch rausfinden, was die bedeuten könnten. -
@mikerow ich habe hinter meiner Delta Pro mit ZA einen Shelly 1 PM plus sitzen. Diesen habe ich dem Skript bekannt gemacht in der Sektion Überschussladung. Wenn überschussladung auf TRUE ist, dann schaltet das Skript den Shelly automatisch an und aus und reguliert die AC Ladeleistung in Abhängigkeit vom Hausstrom verbrauch.
Du müsstest jetzt eigentlich nur noch irgendwie einen Datenpunkt haben, der deinen PV Batteriespeicher misst. Und kannst ja dann eine Bedingung basteln. WENN PV Speciher voll DANN schalte Überschussladung auf TRUE.
Weiter oben hier im Thread gibs ein Codeschnipsel wie man den Überschussladeparameter umsetzt.
-
@accu OK, Danke, da setze ich mal an. Vielen Dank
-
@Waly_de ich hatte jetzt paar mal den Fall dass abends meine PS nicht eingespeist hat. Hatte dann festgestellt dass auf "Stromspeicher Priorisieren" gestellt war. Ich hatte dann per Hand auf "Stromversorgung priorisieren" umgestellt und sofort ging's wieder.
Das Problem scheint aber sporadisch aufzutreten. Bzw. konnte ich noch kein Muster dafür erkennen. Hast Du einen Rat? -
Ich versuche gerade das Skript mal wieder zum Laufen zu bringen:
Wie bekomme ich diesen Fehler weg?
javascript.0 11:31:21.934 info script.js.Ecoflow.DL: Fehler beim Abrufen des niedrigsten Werts: timeout
javascript.0 11:31:36.912 info script.js.Ecoflow.DL: getLowestValue-error: timeoutZur Info vielleicht: Ich habe eine PS und nur einen Zusatzakku Delta
-
@accu Hey kannst du das Verhalten näher beschreiben? Ich habe auch etwas das Gefühl das abends nicht mehr alles so funktioniert wie es soll. Durch meinen Aufbau sollte eigentlich auch bis Mitternacht odr länger quasi über Solar eingespeißt werden. Aber hin und wieder "steht" zwar eine Solarspannung an aber es kommt kein Strom. Dann nach Veränderungen, Warten plötzlich funktionert es dann wieder.
-
@aherby da gibt es eigentlich nicht viel zu beschreiben. Ich hatte ca. 3mal bisher das Problem dass der PS nach Sonnenuntergang nicht eingespeist hat. Hatte erst ewig gesucht und Geräte abgestöpselt aber dann festgestellt, dass der PS in der Setting Batterie bevorzugen stand. Habs dann manuell umgestellt und alles lief wieder. Keine Ahnung ob das im Skript irgendwo getriggert wurde und der Befehl es dann wieder zurück zu setzen nicht funktioniert hat. Wie gesagt kommt äußerst selten vor. Bei mir bisher 3x seitdem ich das Skript nutze.
-
@maik-becker Ich kann das bei meiner Delta Pro auch feststellen. Konntest du das Problem lösen?
-
ich meine hier mal was gelesen zu haben, dass jmd die EF outdoor Batterie mit dem PS betreibt. Kann hier jemand mal paar Erfarhungsberichte posten zum Gerät und vorallem in Verbindung mit dem Skript. Erkennt das Skript die neue EF 2KWH Outdoorbatterie? wie läuft das dann wenn man schon eine delta mit PS im einsatz hat. Kann das skript beide PS steuern vorallem dann auch beim Einspeisen?
-
Wenn ich im einspeise Script den wer von 1 auf 0.5 stelle wäre das dann alle 30 Sekunden
MinValueMin 0.5 -
@accu Ich habe die Outdoor Batterie (2 Kwh). Das Skript funktioniert damit. Allerdings werden die Ganzen Werte (Akkustand etc.) direkt vom PowerStream geliefert. Zu deiner anderen Frage mit der Delta kann ich dir keine Auskunft geben.
-
@MikeRow ja ich habe die werte noch einmal wo anderes her geholt.
-
Hallo,
ich habe jetzt eine Delta Pro und eine Delta Max mit je einem Powerstream und einer Sellysteckdose zum einschalten der AC Ladung, wie kann ich die Überschussladung für beide Geräte einstellen?
-
@mario1995 scheint leider ausverkauft zu sein
-
Hallo, irgendwie bekomme ich das Script nicht zum laufen. Die an AC angeschlossene Fritz Dect wird nicht geschaltet!
Ich habe eine existierende PV Anlage und habe den WR unter Additional Power angelegt. Als Smartmeter ist der Tibber Pulse angegeben. Am AC Eingang der Delta Pro ist eine Fritz Dect angeschlossen. Ich habe das Script nun schon mehrfach geprüft und die Videos kann ich fast auswendig. Egal was ich einstelle, die Fritz Dect wird nicht geschaltet. Hat jemand eine Idee für mich? @Waly_de kannst du dir mal vielleicht die angehängte Config ansehen. Ich bin sonst mit meinem Latein am Ende
Screenshot 2024-06-18 130625.png
-
@dersmily schau mal ob der History Adapter läuft
-
@Waly_de kann man das Skript prüfen lassen ob der Powerstream Strom einspeist.
Ich habe zur Zeit eine Delta Pro und Max mit je einem Powerstream, aber zur Zeit ist es wieder mal ab und zu, dass er die Batterie ladet und aber auch über den Powerstream 300 Watt einspeist
-
@mikerow
Hallo, so wie du es beschreibst, willst du die Delta Pro zeitgesteuert über einem FritzDect-Schalter laden. Damit ist die Steuerung der FritzDect zunächst unabhängig vom Leistungsanpassungsscript, sie kann maximal von dort aufgerufen werden.
Ich habe daher zunächst iobroker alle meine FritzDect-Schalter ermitteln lassen, dann den entsprechenden Schalter ausgewählt und schreibe dann in "fritzdect.0.DECT_123456789012.state" (bitte an deine Steckdose anpassen) den Wert "0" für aus bzw. "1" für an. -
@Waly_de das Skript ist einfach toll!! Heute habe ich für einen Anwendungsfall bei zwei Powerstream mit Batterien zusätzlich zum Füllstand noch die Batteriekapazität bei der Watt-Verteilung mit einbezogen, damit wenn ein PS ne 4 kWh Batterie dran hat und der andere eine 2kWh tatsächlich beide gleich schnell entladen werden. Sowas macht einfach Spaß
Falls jemand Interesse hat oder Du @Waly_de die Option einbauen willst (schöner wäre natürlich die Kapazität auszulesen, aber das geht leider nicht so einfach soweit ich das Beurteilen kann):
Bei der Konfiguration pro PS einfügen
battCapacity: 4.096, // Kapazität der angeschlossenen Batterie
Bei der Berechnung von psBatSumme:
let psCounter = 0, psBatSumme = 0 let psBatSummekWh = 0 // new for (var i = 0; i < ConfigData.seriennummern.length; i++) { const asn = ConfigData.seriennummern[i].seriennummer if (ConfigData.seriennummern[i].typ == "PS" && ConfigData.seriennummern[i].seriennummer != "XXXXXXXXXXXXX" && GlobalObj[asn].regulieren) { psCounter = psCounter + 1 psBatSumme = psBatSumme + GlobalObj[asn].batstate psBatSummekWh = psBatSummekWh + GlobalObj[asn].batstate / 100 * ConfigData.seriennummern[i].battCapacity // new //gapSumme = gapSumme + GlobalObj[asn].GAPdurchschnitt } }
Bei der Berechnung von Batfaktor:
let Batfaktor = 1 let BatfaktorkWh = 1 // new if (psBatSumme != 0) { Batfaktor = (BatBedarf / psBatSumme) BatfaktorkWh = (BatBedarf / psBatSummekWh) // new }
Und abschließend die Verwendung im Balance Mode:
// Setpower = Setpower + (GlobalObj[asn].batstate * Batfaktor) // mlog("PS:" + GlobalObj[asn].PsName + " Setpower = " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " Batfaktor = " + Batfaktor ) Setpower = Setpower + (GlobalObj[asn].batstate/100 * ConfigData.seriennummern[i].battCapacity * BatfaktorkWh) // new mlog("PS:" + GlobalObj[asn].PsName + " Setpower = " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " BatfaktorkWH = " + BatfaktorkWh ) // new