NEWS
ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
@accu viel fällt mir da nicht mehr ein… stell mal bitte mlog auf true und stell noch mal sicher, das die id ExcessChargePowerID 100% existiert …
-
@accu wenn Du das Script ausschaltest/anhälst/ den ioBroker komplett aus machst und dann nur das "originale System" laufen lässt...
speist der PS dann ein?
Ich vermute langsam, dass das Problem am PS liegt.
Hast du im PS auch auf "Stromversorgung prio" gestellt? -
@accu Hmm ich hab nochmal über die Konfiguration nachgedacht....
Du hast die PV Module, die an der Delta hängen unter Additional Power angegeben, richtig?
Das könnte aber doch ein Problem sein. Die Leistungquellen, die unter Additional Power angegeben werden sind normalerweise Wechselrichter, die unabhängig ihre Leistung in das Hausnetz einspeisen. Darum addiere ich die Leistung von additionalpower zu dem, was das Smartmeter anzeigt, um zu ermitteln wie der aktuelle Verbrauch tatsächlich aussieht.
Die PV Module an der Delta jedoch speisen ja gar nicht in das Hausnetz ein. Vielmehr laden Sie lediglich den Akku der Delta auf.
Ich würde also vorschlagen, einmal zu versuchen, die Angabe der PV Leistung am Delta zu entfernen. Sprich, lösche die Einträge unter additional power. und schau mal was passiert.Wenn mlog auf "true" ist, siehst du im Protokoll, welche Werte das Skript berücksichtigt und welche Einstellungen an die Geräte gesendet werden werden. Du kannst ja vielleicht mal einen kurzen Auszug davon posten.
-
@waly_de Habe den IOB nun laufen und möchte als Smartmeter den Tibber Puls einsetzen. Hat das schon mal jemand gemacht? Habe den ioBroker.tibberlink Adapter in den IOB eingebunden und eine Instanz gebildet. Wie geht es weiter? Werde leider aus der Kurzbeschreibung auf GitHub nicht schlau. Gibt es da mehr Doku oder Erfahrung?
Vielen Dank im Voraus! -
@Waly_de
ich mache das auch mit mehreren PS und mehreren Delta. Nachteil es aus additional Power zu nehmen ist, dass du das ja auch in TotalPV einberechnest und nur so der gesamte Ertrag messbar ist. -
Du musst das richtige Objekt (aktueller Verbrauch) nur unter SmartmeterID angeben. Im ersten Post steht dazu noch ein wenig mehr.
-
Gibt es eigentlich eine Möglichkeit das Script so einzustellen, dass es am Tag die Batterie lädt und erst nachts einspeist?
Oder eine Möglichkeit, dass es nur bis zu einer bestimmten Watt Obergrenze eine Nulleinspeisung versucht?
Hintergrund: ich möchte vermeiden, dass die Batterien mit voller Leistung leer gesaugt werden, wenn das E-Auto lädt. Da fällt das sowieso nicht auf und ich finde es schöner den „Nutzen“ zu sehen -
@guhfy9966 Da ich ein absoluter Anfänger im IOB bin, ist meine Frage wie und wo kann ich denn die ioBroker.tibberlink-Instanz konfigurieren? Was ist dazu zu tun?
Nachtrag: So wie ich es jetzt sehe, scheint es kein Menü oder Einstellseite zu geben, sondern nur das Exportieren, Konfigurieren und wieder Laden einer JSON-Datei. Richtig?
-
@lui1307 super, das es schon mal läuft.
Ich empfehle dich erstmal mit den Basics von iobroker vertraut zu machen. Es gibt dazu jede Menge schöne Videos auf YouTube und hunderte Beiträge hier im Forum.
https://www.youtube.com/results?search_query=iobroker+einrichtenDie Ultra Kurzversion:
Sämtliche Daten mit den iobroker arbeitet, stehen in den Objekten, die du über den Link links in der Navigationsleiste erreichen kannst. Der Pfad zu diesen Objekten ist das, was du unter ID im Skript hinterlegen musst. Du kannst die entsprechenden Daten über die Oberfläche heraussuchen und auf das kopieren Symbol rechts neben dem Objektnamen klicken, um den Pfad in die Zwischenablage zu speichern.Die Konfiguration der Adapter erfolgt über Instanzen aus der Navigationsleiste links. Dort gibt es ein Schraubenschlüsselsymbol, hinter dem sich die Einstellung des jeweiligen Adapters verbergen.
Visualisierung und Bedienungen muss man sich in iobroker weitesgehend selbst bauen. Dazu gibt es wiederum den Adapter VIS und diverse anderer Visualisierungadapter. Aber das ist nicht nötig, um die Funktionalität des Skript es zu nutzen. in JSON-Daten muss man eigentlich nichts machen.
-
@guhfy9966 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
@Waly_de
ich mache das auch mit mehreren PS und mehreren Delta. Nachteil es aus additional Power zu nehmen ist, dass du das ja auch in TotalPV einberechnest und nur so der gesamte Ertrag messbar ist.Richtig. Das müsste ich auch konfigurierbar machen. Also so, dass der Ertrag zwar in totalPV angezeigt wird, aber nicht zur Berechnung von Real power verwendet wird. Mir geht es jetzt erst einmal darum, ob die Funktionalität gewährleistet ist, wenn man die Module nicht unter additional Power einträgt.
-
@guhfy9966 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Gibt es eigentlich eine Möglichkeit das Script so einzustellen, dass es am Tag die Batterie lädt und erst nachts einspeist?
nicht direkt, aber du hast über die Konfiguration ja eine Menge Möglichkeiten.
Mit der "externConfig" kannst du alles auch über eigene Scripte steuern.In deinem Beispiel würde ich halt abhängig von Lade Status deiner Wallbox "Regulation" ein oder ausschalten.
-
Ok, meine Wallbox ist leider nicht auslesbar, daher fällt das weg. Ich habe letztens versucht einzelne PS per Regulation ein und aus zu schalten. Hat das Script aber gar nicht interessiert. Da muss ich eh nochmal recherchieren. Aktuell ist ja endlich mal Sonne bei uns ️
-
Hallo zusammen,
ich habe das neuste Skript vom 5.01.24 installiert und es läuft sehr gut.
Die Werte beziehe ich über einen Powerfox, hier nehme ich den Wert currentPower (Ich hoffe, dass dies der richtige ist ;-))
Zusätzlich nutze ich die Delta Pro welche ich als DM im Skript eingesetzt habe. An der Delta Pro hängen 3 Ecoflow 400 Watt Solar Paneele und zwei hängen am Ecoflow Powerstream.Mein Problem ist, dass mein Netzbezug oftmals immer noch 50 - 60 Watt ist, obwohl die Leistung locker reichen würde.
Kann man das im Skript irgendwo anpassen ?
Zudem hatte ich beim Powerfox schon das ein oder andere mal einen Ausfall der Datenübergabe durch den Server von Powerfox. Hier würde ich gerne den Standartstrom dann auf 270 Watt setzen bis es wieder neue Daten gibt. Geht das ?Hier mein Skript, bis dahin hab ich Daten bisher mal geändert...
/***************************************
********** YOUR DATA HERE ************
/
var ConfigData = {
email: "xyz", // Die App-Zugangsdaten von ecoFlow
passwort: "xyz",
SmartmeterID: "powerfox2.0.devices.1097bd718xyz.currentPower", // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
seriennummern: [
//############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
{
seriennummer: "", // Die Seriennummer des Gerätes
name: "PowerStream", // beliebiger Name
MaxPower: 600, // Der höchstmögliche Wert in Watt für die Einspeiseleistung
subscribe: true, // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
typ: "PS", // Welches Gerät ist es: PowerStream:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "D2M"; SmartPlug: "SM"; Andere: "NA"
// Parameter an hier nur für PowerStream.
regulation: true, // "true": Dieser PowerStream soll vom Script reguliert werden
RegulationOffPower: -1, // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
hasBat: true, // "true": Eine Batterie ist angeschlossen. Nur für PowerStream relevant.
battPozOn: 99, battPozOff: 94, // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb
battOnSwitchPrio: true, // "true": Bei battPozOn wird in den Batterie-Prioritätsmodus gewechselt
prioOffOnDemand: 30, // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus geschaltet wird. 0 für kein Rückschalten.
lowBatLimitPozOn: 5, lowBatLimitPozOff: 10, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf
lowBatLimit: 150, // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
},
//#######################################################################
{
seriennummer: "",
name: "DELTA Pro",
typ: "DM",
subscribe: true, // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
},
//#######################################################################
{
seriennummer: "XXXXXXXXXXXXX",
name: "SmartPlug 1",
typ: "SM",
subscribe: false, // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
},
//#######################################################################
],
AdditionalPower: [ // Wenn es weitere Wechselrichter gibt, die in IOBroker erfasst werden, können diese hier Angelegt werden
//############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
{
name: "Hoymiles2000", // Beliebiger Name
id: "mqtt.0.solar.1234567890.0.power", // Der Objektpfad zu dem Leistungswert in Watt (W)
factor: 1, // Divisionsfaktor für den Leistungswert. (10 für die Delta)
},
//#######################################################################
],
//
// Erweiterte Einstellungen:
//****************************************
SmartmeterTimeoutMin: 4, // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
SmartmeterFallbackPower: 200, // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden.
Regulation: true, // 'false' stellt das Setzen der Einspeiseleistung ab
RegulationState: "Regulate", // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
RegulationMultiPsMode: 0, // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
BasePowerOffset: 30, // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen
Zusatzpower_Offset: 10, // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
MinValueMin: 0, // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
MinValueAg: 0, // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
ReconnectMin: 30, // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
statesPrefix: "0_userdata.0.ecoflow", // Hier werden die ecoFlow States angelegt
latitude: latitude, // Breitengrad des Standortes (wird automatisch eingesetzt)
longitude: longitude, // Längengrad des Standortes (wird automatisch eingesetzt)Herzlichen Dank für eure Zeit und mühen ! Ich hätte ja gern die bestehenden Posts hier durchsucht aber finde keine Suchfunktion hier...
-
@heikobaumgartner Danke erst mal für Deine Spende. Die Anerkennung freut mich sehr
Suchfunktion ist die Lupe ganz oben rechts... Aber Deine Wünsche sind schnell zu erfüllen:@heikobaumgartner sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
Hallo zusammen,
ich habe das neuste Skript vom 5.01.24 installiert und es läuft sehr gut.
Die Werte beziehe ich über einen Powerfox, hier nehme ich den Wert currentPower (Ich hoffe, dass dies der richtige ist ;-))
Zusätzlich nutze ich die Delta Pro welche ich als DM im Skript eingesetzt habe. An der Delta Pro hängen 3 Ecoflow 400 Watt Solar Paneele und zwei hängen am Ecoflow Powerstream.Mein Problem ist, dass mein Netzbezug oftmals immer noch 50 - 60 Watt ist, obwohl die Leistung locker reichen würde.
Kann man das im Skript irgendwo anpassen ?BasePowerOffset: 30,
Das bedeutet, dass das Skript versucht auf 30 W Netzbezug einzuregeln. Natürlich gibt es aber immer gewisse Schwankungen und auch Messabweichungen. Darum wirst du vermutlich 50-60 W sehen. Verringerst du den Wert kannst du dich an null herantasten. Ich empfehle aber wenigstens 30 W Grund Bezug stehen zu lassen, weil es sonst des Öfteren bei Lastschwankungen zu Netzeinspeisung kommt und das ist verschenkte Energie.Zudem hatte ich beim Powerfox schon das ein oder andere mal einen Ausfall der Datenübergabe durch den Server von Powerfox. Hier würde ich gerne den Standartstrom dann auf 270 Watt setzen bis es wieder neue Daten gibt. Geht das ?
SmartmeterTimeoutMin: 4, // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
SmartmeterFallbackPower: 200, // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden.Das sollte soweit selbsterklärend sein. Wenn du dort 270 W einsetzt, sollte das deinem Wunsch entsprechen.
-
@waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:
ExcessChargePowerID
wie stelle ich sicher dass die ID existiert?
Mit Mlog = True kommt das:
08:22:07.872 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2795:15) 08:22:07.872 warn javascript.0 (53248) at script.js.Test.EF_Test:2513:33 08:22:07.872 info javascript.0 (53248) script.js.Test.EF_Test: Alle Bedingungen erfüllt. sonoff.0.NOUS-DVES_F0A844.POWER wird auf false gesetzt 08:22:07.873 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2817:9) 08:22:07.873 warn javascript.0 (53248) at script.js.Test.EF_Test:2513:33 08:22:07.874 info javascript.0 (53248) script.js.Test.EF_Test: ExcessCharge: Überschuss kleiner ExcessChargeStopPower(0). ExcessChargePowerID auf 0 und ExcessChargeSwitchID aus, weil Schaltung alt genug ( mindestens 5 Minuten.) 08:22:07.874 info javascript.0 (53248) script.js.Test.EF_Test: ExcessCharge: ExcessChargeSwitchID ist jetzt aus
-
@ralf77 der PS speist ein. Wenn ich ihn über die EF App aktiviere. Aktuell nutze ich ihn zur Grundlasteinspeisung.
-
@waly_de ja genau. Die PV hängt direkt an meiner DP aber nicht am PS.
Habs mal rausgekommen. Schaut jetzt so aus:
22:24.190 info javascript.0 (53248) script.js.Test.EF_Test: Adresse: app_1556567362703892482_DCxxxxxx_thing_property_set 10:22:30.297 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:30.325 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:30.326 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:30.327 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:30.328 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:30.329 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:30.330 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:40.297 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:40.324 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.298 info javascript.0 (53248) script.js.Test.EF_Test: SetBasePower ! 10:22:50.332 info javascript.0 (53248) script.js.Test.EF_Test: Gap_Durchschnitt: PS:[PowerStream] : -81 10:22:50.332 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Lastcutoff: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: gapSumme: -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PStotalPV (+10 W/PS): 10 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Gobal totalPV: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PVBedarf : -82 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: BatBedarf: 0 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: PVfaktor:-8.2 10:22:50.333 info javascript.0 (53248) script.js.Test.EF_Test: Batfaktor:0 10:22:50.334 info javascript.0 (53248) script.js.Test.EF_Test: ueberschuss:82 10:22:50.334 info javascript.0 (53248) script.js.Test.EF_Test: ************************************* 10:22:50.338 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2795:15) 10:22:50.338 warn javascript.0 (53248) at script.js.Test.EF_Test:2502:37 10:22:50.338 info javascript.0 (53248) script.js.Test.EF_Test: Alle Bedingungen erfüllt. sonoff.0.NOUS-DVES_F0A844.POWER wird auf true gesetzt 10:22:50.339 warn javascript.0 (53248) at setStateCon (script.js.Test.EF_Test:2817:9) 10:22:50.339 warn javascript.0 (53248) at script.js.Test.EF_Test:2502:37 10:22:50.340 info javascript.0 (53248) script.js.Test.EF_Test: ExcessCharge: Überschussladung AN! Angefordert mit:82 Plus ExcessChargeOffsetPower: 0
der ExcessPower Datenpunkt ist jetzt aber da:
Eingespeist wird aber nicht. Mein Gesamt Hausverbrauch springt aber auch gerade zwischen -80W und +120W
-
@accu super Jetzt kannst du im Log schön verfolgen was passiert.
10:22:40.323 info javascript.0 (53248) script.js.Test.EF_Test: Bedarf : -82
Solange es keinen Bedarf gibt, wird natürlich auch nicht eingespeist.
Wenn der Gesamt Hausverbrauch für 3 Minuten immer über BasePowerOffset liegt, sollte der PS Einsspeisen. Entsprechende Meldung im Log sollte zu sehen sein. Etwa so:Änderung für Einspeisung gesendet PS:[PowerStream Dach] : 65 W
-
@waly_de jetzt scheint es tatsächlich zu funktionieren und der PS regelt die Einspeiseleistung ein. Ist zwar nicht ganz auf Null eingeregelt aber ok, da ich gerade nicht so viel Batterie habe.
Was bedeutet die Not Found Warnung? beim Sonoff?
-
Ich bekomme mit der neusten Version "mlog=true" nur noch folgendes zu sehen, finde jedoch keinen Fehler. Meine alte Version funktioniert mit logm=true einwandfrei. Geht das noch oder ist da bei euch auch etwas hinüber?
21:44:27.118 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: Verbunden mit dem Ecoflow MQTT-Broker 21:44:36.888 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:44:46.886 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:44:56.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:06.896 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:16.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower ! 21:45:26.895 info javascript.0 (1178) script.js.Meine_Scripte_(Produktiv).Solar_Ecoflow: SetBasePower !
EDIT:
@Waly_de
Bitte erkläre mit das nochmalbattPozOn: 99, battPozOff: 94, // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb battOnSwitchPrio: true, // "true": Bei battPozOn wird in den Batterie-Prioritätsmodus gewechselt
Für mich widerspricht sich das, denn ich will doch den Batterieprio Modus BIS 99% und dann Max Einspeisung.
Wenn ich battPozOn z.B. auf 30% setze soll er auf BatteriePrio Modus und ab battPozOff auf "volle Einspeisung".
Irgendwas interpretiere ich anscheinend falsch.