@gooflo hab es selbst gefunden, man muss sie als AdditionalPower anlegen
NEWS
Best posts made by gooflo
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de danke für das Video - wie das letzte sehr gelungen und gut verständlich. Habe (noch) keine Überschussladung, allerdings die Sache mit den zusätzlichen Modulen an der Delta 2 Max und das ist mit dem neuen Parameter (NoFeedIn) gut erklärt.
Temperaturparameter wird ab sofort nach influxdb geschrieben, mal sehen, was der so ausgibt.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de danke für den Tip. Falls jemand auch diesen Anwendungsfall hat, hier meine aktuelle Lösung mit einem zweiten Skript, wobei ich im Originalskript in der Konfiguration das hier setze:
SmartmeterID: "0_userdata.0.ecoflow.TotalActivePowerPlusPlugs", // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
und hier das neue Skript:
// globale Konfiguration var ConfigData = { statesPrefix: "0_userdata.0.ecoflow", // übernommen TotalActivePower : ".TotalActivePower", // Shelly total active power TotalActivePowerPlusPlugs : ".TotalActivePowerPlusPlugs", // Neuer State für Power mit Plugs in den Userdaten SmartmeterID: "shelly.0.shellypro3em#XXXXXXXXXXX.EM0.TotalActivePower", // übernommen State, der den aktuellen Gesamtverbrauch in Watt anzeigt } // state TotalActivePowerPlusPlugs anlegen if ( !existsState(ConfigData.statesPrefix + ConfigData.TotalActivePowerPlusPlugs)) { createState(ConfigData.statesPrefix + ConfigData.TotalActivePowerPlusPlugs,0,{name: "TotalActivePowerPlusPlugs", type: 'number', role: 'value'}, function () {}); } else { setState(ConfigData.statesPrefix + ConfigData.TotalActivePowerPlusPlugs,0); } // state TotalActivePower anlegen if ( !existsState(ConfigData.statesPrefix + ConfigData.TotalActivePower)) { createState(ConfigData.statesPrefix + ConfigData.TotalActivePower,0,{name: "TotalActivePower", type: 'number', role: 'value'}, function () {}); } else { setState(ConfigData.statesPrefix + ConfigData.TotalActivePower,0); } /** * @param {string} id */ function getPlugWatts(id) { let watts = 0 let age_min = (Date.now() - getState(id).ts) / (1000 * 60) let w = Number(getState(id).val)/10 // sanity check: nur wenn die Daten Daten jünger als 4 min sind oder nicht so hoch werden sie verwendet if (age_min < 4 || w < 50) { watts += w } // log(id + " " + watts + " W, age (min) = " + age_min) return watts } // wenn der Smartmeter gesetzt wird, die Plugs Watt ermitteln und die states setzen on({id: ConfigData.SmartmeterID}, function (obj) { let smartMeterTotal = Math.floor(Number(getState(ConfigData.SmartmeterID).val)) setState(ConfigData.statesPrefix + ConfigData.TotalActivePower, smartMeterTotal) // store initial TotalActivePower let plugsSum = 0 plugsSum += getPlugWatts("0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX_1.data.plug_heartbeat_pack.watts") plugsSum += getPlugWatts("0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX_2.data.plug_heartbeat_pack.watts") plugsSum += getPlugWatts("0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX_3data.plug_heartbeat_pack.watts") plugsSum += getPlugWatts("0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX_4.data.plug_heartbeat_pack.watts") // log("Plugs Watts = " + plugsSum) setState(ConfigData.statesPrefix + ConfigData.TotalActivePowerPlusPlugs, Math.floor(smartMeterTotal + plugsSum)) });
Natürlich müssen für Shelly und Plugs die entsprechenden IDs gesetzt werden.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@ralf77 genau, es geht um die Entladung, da hast Du dann noch einen Fehler im Changelog gefunden @Waly_de . Bitte beobachte mal, wie gut das funktioniert. Soweit ich mich erinnere bin ich im Laufe der Zeit auf Fälle gestoßen, bei denen es nicht so gut funktioniert hat. Deswegen und weil ich auch das Laden (abhängig von PV (inklusive PV an der D2M) und Ladestand) regeln wollte, habe ich es nochmal weiterentwickelt.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@mario1995 die Fehlermeldung heißt, dass die Variable "asn", die im Code benutzt wird, nicht definiert ist. Dann hast Du den zweiten Teil vermutlich an der falschen Stelle eingebaut. Suche am besten nochmal die Stelle im Originalskript ab Zeile 2673, dort muss es eingefügt werden und ab Zeile 2676 im Originalskript ist es wieder der alte Code (im Codeschnipsel ab Zeile 16). Hoffe das hilft. Ansonsten schick mir gerne mal Dein Skript zu (Chat hier im Forum), dann schaue ich es mir an. Evtl. hast Du gar nicht die Version 125 als Basis? Dann müsstest Du die Stelle in Deiner Version suchen ...
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@DJVanity kleines Update, die Verbindung mit dem lowBatLimit fand ich nicht so gut, sieht jetzt bei mir so aus, so kann man mit eigenen Parametern einstellen, wann das Verhalten greifen soll:
LimitIsPVInput: true, // gooflo: wenn Batterie < LimitIsPVInputThresholdCapa und PV Input > LimitIsPVInputThresholdPVIn verwenden wir den PV Input als Output (minimiert Batterienutzung in diesem Bereich, vor allem im Winter sinnvoll) LimitIsPVInputThresholdCapa: 20, // gooflo: Schwelle für Batteriekapazität in % LimitIsPVInputThresholdPVIn: 20, // gooflo: Schwelle für PV Input in Watt
und
// gooflo: limitiere auf PV Input falls Bedingungen erfüllt sind let currentPVinput = GlobalObj[asn].sumPV if (ConfigData.seriennummern[i].LimitIsPVInput && GlobalObj[asn].batstate < ConfigData.seriennummern[i].LimitIsPVInputThresholdCapa && currentPVinput > ConfigData.seriennummern[i].LimitIsPVInputThresholdPVIn && Setpower > currentPVinput) { mlog("PS " + index + ": Limit AC output to PV input = " + currentPVinput + " (Capa: " + GlobalObj[asn].batstate + " < " + ConfigData.seriennummern[i].LimitIsPVInputThresholdCapa + " PVIn: " + currentPVinput + " > " + ConfigData.seriennummern[i].LimitIsPVInputThresholdPVIn + ")") cutoff = Math.floor((Setpower - currentPVinput )) Setpower = currentPVinput myMaxPower = Setpower } else if (Setpower > myMaxPower) { // Original code cutoff = Math.floor((Setpower - myMaxPower)) Setpower = myMaxPower } else { Setpower = Setpower + cutoff cutoff = 0 ....
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@djvanity ggf. gerne PN, ansonsten hier mal (ungetestet, weil ich bei mir noch weitere Änderungen drin hab) die Modifikation, ausgehend von Version 125:
ab Zeile 275
lowBatLimitPozOn: 5, lowBatLimitPozOff: 15, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf lowBatLimit: 150, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist lowBatLimitIsPVInput: true, // gooflo: falls unter lowBatLimit und >= 20W Input, auf Output = PV Input setzen
die letzte Zeile mit dem Parameter "LowBatLimitIsPVInput" einfügen. Und dann ab Zeile 2674 folgende Änderung:
if (Setpower > myMaxPower) { // Original Code: // cutoff = Math.floor((Setpower - myMaxPower)) // Setpower = myMaxPower // gooflo: falls unter lowBatLimit und >= 20W Input, auf Output = PV Input setzen let currentPVinput = GlobalObj[asn].sumPV if (GlobalObj[asn].batstate < ConfigData.seriennummern[i].lowBatLimitPozOn && currentPVinput >= 20 && ConfigData.seriennummern[i].lowBatLimitIsPVInput && Setpower > currentPVinput) { mlog("Limit output to PV Input = " + currentPVinput) cutoff = Math.floor((Setpower - currentPVinput )) Setpower = currentPVinput myMaxPower = Setpower } else { cutoff = Math.floor((Setpower - myMaxPower)) Setpower = myMaxPower } } else { Setpower = Setpower + cutoff cutoff = 0 ...
Hier ggf. noch die Schwelle von 20W anpassen (dafür habe ich keinen Parameter spendiert, wäre natürlich auch möglich.
Viel Spaß damit!
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@mario1995 oh ja, sorry, da habe ich noch eine neue Variable "index" übersehen, die ich eingefügt habe und die es im Original nicht gibt. Tausche die Zeile
mlog("PS " + index + ": Limit AC output to PV input = " + currentPVinput + " (Capa: " + GlobalObj[asn].batstate + " < " + ConfigData.seriennummern[i].LimitIsPVInputThresholdCapa + " PVIn: " + currentPVinput + " > " + ConfigData.seriennummern[i].LimitIsPVInputThresholdPVIn + ")")
durch
mlog("PS " + GlobalObj[asn].PsName + ": Limit AC output to PV input = " + currentPVinput + " (Capa: " + GlobalObj[asn].batstate + " < " + ConfigData.seriennummern[i].LimitIsPVInputThresholdCapa + " PVIn: " + currentPVinput + " > " + ConfigData.seriennummern[i].LimitIsPVInputThresholdPVIn + ")")
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@mario1995 vermutlich hast Du die Entladegrenze der Batterie (war es eine D2M?) auf 15% eingestellt und die Batterie wurde über Nacht leer bis auf die 15%? Dann wird erst mal auf 20% geladen, bevor der Powerstream wieder regelt. Wenn dem so wäre könntest Du es testen, indem Du in so einem Fall kurzfristig die untere Grenze um mindestens 5 Prozentpunkt entfernt stellst, also z.B. mal auf 5%, dann sollte mit PV Input = Output geregelt werden.
Latest posts made by gooflo
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@sradi @foxthefox @Waly_de ich zähle mich leider nicht zu den Profis. Da bei mir noch alles funktioniert, würde ich erst aktiv werden, wenn dem nicht so ist (3xPS + D2M/ZA). Ich könnte für ein neues Skript meine Verbesserungen mit einbringen (gewichtetes Laden und Entladen).
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@foxthefox @sirdir ich habe offensichtlich bisher Glück, bei mir läuft nach wie vor alles mit dem 'alten' Skript.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@foxthefox und @MaxKann ich fände es auch toll, wenn das Skript umgestellt werden würde, nur wer hat dafür Zeit?
Bei mir läuft zum Glück noch alles normal auch ohne geöffnete App (D2M + PS und D2M Zusatzakku + PS), d.h. ich würde wohl erst aktiv werden, wenn ich dazu gezwungen werde (und Zeit habe).
Falls sich jemand findet (oder gar mehrere) unterstütze ich gerne.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@niklas-krol sieht so aus als würde die Batteriekapazität nicht korrekt ausgelesen, aber keine Ahnung warum. Wird es in der App richtig angezeigt?
InverterHeartbeat.batSoc
ist der Wert, der bei Dir 0 ist aber eigentlich 84 sein müsste.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@woogelstone ich glaube wir müssen zurück zum Anfang. Was willst Du mit Deinem Setup erreichen, welche Hardware hast Du außer Powerstream und D2M Zusatzakku? Erst dann kann ich Dir ggf. helfen. Für mich hört es sich so an als bräuchtest du das Skript gar nicht, nutzt es aber ohne passende Hardware. Andererseits sehe ich in der Config eine SmartmeterID konfiguriert, wenn dort der korrekte Verbrauch ermittelt wird, kannst Du das Skript nutzen, um am Einspeisepunkt einzuspeisen. Könnte sein, dass Du ein Verbindungsproblem hast, von dem auch manche Nutzern schon berichteten weil Ecoflow die API umstellt, umgestellt hat (siehe weiter unten ältere Beiträge). Um nur einen Kühlschrank zu betreiben und sonst nix würde ich einen Smartplug verwenden und nur die App.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@woogelstone was genau meinst Du? Der WR sollte das einspeisen, was benötigt wird, entweder über eine smarte Messung im Zähler- oder Sicherungskasten, oder über Smart Plugs oder/und über Grundlast.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@woogelstone tja, keine Ahnung. Hast Du mal probiert über das Logging noch mehr zu erfahren? Also hier:
onst logpath = '/opt/iobroker/log/'; const SERIAL_TO_LOG = "xxx" const LogAllOfSerial = false //false= nur Set-Anweisungen, true = alles von der Seriennummer
mal die Seriennummer und LogAllOfSerial auf true letzten und dann im Logfile schauen, was da so steht
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@djvanity das kann das Skript (ich habe z.B. 2 Stück), der Code ist so geschrieben, dass es beliebig viele sein können.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@woogelstone mir fällt leider nichts auf, sorry. Es scheint ja so als würde die MQTT Verbindung nicht klappen, was eigentlich nur daran liegen kann, dass email oder Passwort oder HW ID nicht stimmt. Wenn die drei stimmen weiß ich auch nicht weiter.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@woogelstone das hier hast Du gemacht?
Wichtig: Zur Installation müssen 2 Module installiert werden. Einfach in den Einstellungen der Javascriptinstanz unter Zusätzliche Module die beiden Namen eintragen und speichern ("mqtt" und "protobufjs")