Da es jetzt zu funktionieren scheint, will ich doch mal mein Script mit euch teilen. Es ist für Leute wie mich, die keinen Sensor an den Stromzähler hängen können. Stattdessen nehm ich Verbräuche aus unterschiedlichen Quellen. Nebenbei kann man noch ein Gerät ein/ausschalten lassen je nach externem Solarertrag
sensorsim.js. Das Objekt, das mein Script erzeugt kann man dann beim Script um den es in dem Thread geht als Zählerobjekt einfügen.
NEWS
Best posts made by sirdir
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
Es ist schon seltsam. Die 1.1.6.1 funktioniert jeden Tag bis 1 Uhr wo ich die Batterie wieder auflade und nix einspeise, aber morgens um 7 wo wieder eingespeist werden sollte tut das script einfach nix mehr. Ein Neustart hilft nix, aber wenn ch das alte Script starte funktioniert’s und wenn ich dann zum 1.1.6.1 zurück gehe geht das auch wieder… Hab jetzt endlich gesehen was die mlog funktion tut und kann das vielleicht morgen anschauen… wobei ich keine Lust habe da wieder um 7 rumzudebuggen, vielleicht lass ich das alte Script laufen…
Aber um noch etwas sinnvolles beizutragen, da noch niemand davon geschrieben hat und Waly das Update ja vielleicht nicht bekommen hat, wer weiss. Es gibt die neue Funktion ‘Feed-in control’, die festlegt, ob bei vollem Akku die ganze Solarleistung eingespeist werden soll (control off) oder nur was eingestellt ist (control on):Feed-in control off:
- warn: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: Nicht definierter cmd_func-Wert. [PowerStream] cmdId:143 cmdFunc:20 2023-11-04 11:48:31.052 - info: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: hexString: 0a36102018352001280138034014488f01580170daaecbcf01800113880101ba0103696f73ca0110xx 2023-11-04 11:48:31.053 - info: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: Nachricht: {"header":[{"src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":20,"cmdId":143,"needAck":1,"seq":435345242,"version":19,"payloadVer":1,"from":"ios","deviceSn":"x"}]}
Feed in control ein:
2023-11-04 11:48:33.140 - warn: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: Nicht definierter cmd_func-Wert. [PowerStream] cmdId:143 cmdFunc:20 2023-11-04 11:48:33.141 - info: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: hexString: 0a3c0a020801102018352001280138034014488f015002580170afbfcbcf01800113880101ba0103696f73ca0110xx 2023-11-04 11:48:33.142 - info: javascript.0 (457337) script.js.Powerstream_v1_1_6_1: Nachricht: {"header":[{"pdata":"0801","src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":20,"cmdId":143,"dataLen":2,"needAck":1,"seq":435347375,"version":19,"payloadVer":1,"from":"ios","deviceSn":"x"}]
-
'Stromzähler-Emulator' für dyn. Leistungsanpassung
Hallo Leute
Jetzt mach ich hier doch auch mal nen Thread auf. Ich kann keinen Sensor an meinen Stromzähler hängen (zu weit weg), darum hab ich mir diverse Shellies gekauft und schon vorhandene eingebunden zu einem 'virtuellen' Stromzähler, den man @Waly_de 's Script als Stromzähler unterjubeln kann. Es macht noch ein paar Sachen mehr wie auf Wunsch ein Gerät schalten etc.
Das script findet ihr hier:
https://github.com/sirdir1972/sumpower
Latest posts made by sirdir
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@dadue-max Meine Powerstream hat auch Schrott WIFI. Manchmal denk ich, wenn viel Strom fliesst (oder hohe Temperatur? Hängt ja auch zusammen) bricht WIFI weg. Merk es aber auch nicht immer, da es, wenn viel Strom rein fliesst meist nichts zu kontrollieren gibt (Einspeisung ist dann 0 weil andere Solaranlagen genug liefern).
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de Ich glaube man muss auch bei der Ladeleistung noch nen Offset vorsehen. gerade der inv.inputWatts zeigt vielleicht die DC Leistung an. Der Wert ist tiefer als was man als SlowChgWatts setzt, laut meinem Shelly ist die bezogene Leistung aber höher. (in meinem Fall ca. 20W differenz)
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de der falsche Wert steht aber IMHO im Heartbeat. Aber irgendwie auch nur gestern, am Tag davor schien es zu klappen. Hab jetzt vorerst alles wieder auf shelly an/aus gestellt, da funktioniert alles soweit. Wenn ich die Grenzen vernünftig setze geht es auch nicht andauernd an und aus. Es ist wirklich schade, dass man die Geräte nicht lokal steuern kann. Manchmal hab ich das Gefühl die Server tun ihr übriges… Dass bei 0 überschuss aus geht (hab die Stelle im Script übrigens schon gefunden) ist ja soweit OK. Was ich eher möchte ist, dass etwas 'Luft' bleibt beim Leistung setzen. (resp. eben dass das Script nicht versucht unrealistisch tiefe Leistungen zu setzen). Ich schau da auch nochmal rein... Hab mir eigentlich mal gesagt ich fummle an deinem script nicht mehr rum, aber…
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de Hm, also ich hab das jetzt gerade nochmal genauer angeschaut - das Problem tritt anscheinend auf, wenn ich die D2M subscribe - dann springen pauseChgFlag und slowChgWatts zufällig auf 255 (als ich gerade getestet habe und jeweils wieder den richtigen Wert setzen lies, war's immer in einem durchgang deines Scripts der richtige Wert, danach wieder 255. . In den writables bleibt’s korrekt, aber an die Station geschickt wird anscheinend der falsche Wert.
Edit: Hat's evtl. was damit zu tun? Mir ist nicht ganz klar was das bedeutet:
{ id: 0, name: 'slowChgWatts', ValueName: 'slowChgWatts', Typ: 'D2M', MT: 3, OT: 'acChgCfg', AddParam: '{"fastChgWatts":255, "slowChgWatts":0,"chgPauseFlag":255}' }, // Objekt angelegt, schreibbar { id: 0, name: 'chgPauseFlag', ValueName: 'chgPauseFlag', Typ: 'D2M', MT: 3, OT: 'acChgCfg', AddParam: '{"fastChgWatts":255, "slowChgWatts":255,"chgPauseFlag":0}' }, // TODO: chgPauseFlag testen, ob dann die Ladung pausiert
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de hm, weiteres Problem mit der Lösung. Gerade steht *writeables.chgPauseFlag auf 1. Auf dem Gerät scheint das aber nicht anzukommen. WIFI ist OK. params.inv.inputWatts meldet manchmal 0, manchmal 60W, laut shelly wird konstant mit um die 90W geladen. Das script hat die Ladegeschwindigkeit auf 0 gesetzt. Sehe grad, das data.params.chgPauseFlag gibt 255 zurück. Da klappt wohl irgendwo noch was nicht ganz mit der übertragung manchmal?
Hab jetzt gerade chgPauseFlag kurz auf 0 gesetzt, dann hat er noch schneller geladen?! (über 255W wahrscheinlich?) Dann nochmal auf 1 gesetzt und jetzt ist Ruhe, wie es sein sollte. Irgendwo rutschen da in der Kommunikation wohl immer noch 255 rein manchmal?
PS: Ja ich seh's gerade, *.params.slowChgWatts steht auf 255 *.writeables.slowChgWatts auf 0 steht. -
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de Also ich hab’s mal so probiert. Hab den Offset auf -70 um nicht dauernd an der Grenze zu sein. Das Problem ist halt einfach, dass das Script versucht bis auf 0 Watt runter zu regeln bei der Ladeleistung was einfach nicht geht. Ich persönlich würde das wohl so lösen, dass man nen Mindestwert setzen kann (also so die 88W bei meiner Ecoflow) und sobald der Wert tiefer gesetzt werden müsste um die Bedinungen einzuhalten wird stattdessen die Ladung pausiert.
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de Ich hab die duration schon auf 0. Aber das Problem ist ja, dass er meint, er könne mit 10 W laden, lädt aber in wirklichkeit mit 80 Watt. Dann wird nicht abgeschaltet… oder vielleicht… sorry das ganze Setup ist einfach schon etwas komplex, je nach Mondphase verliert auch mal das Shelly die Verbindung ne Weile, vielleicht war am Ende das das Problem, muss ich mal prüfen bevor ich die weiter nerve. Aber heut hab ich auch zu wenig Sonne.
Edit: Wobei, glaub doch nicht, dass das Shelly da das Problem war. Die Leistung wurde ja auch geupdated, also war das Gerät wohl nicht offline. Naja ich beobachte es weiter. -
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de das ist das was ich meinte: Erstens scheint das Script erst mal etwas, was 'null' ist als Ladeleistung zu setzen, bevor es die Ladung einschaltet (nicht so schlimm, aber vielleicht interessant). Dann wenn es mit dem Überschuss knapp wird, versucht er die Ladeleistung runter zu regeln, was aber ja nicht geht, da die Ecoflow immer mit ˜88W oder so lädt, auch wenn du 19 schickst (wobei ich schon ExcessChargeOffsetPower auf -100 habe, sonst würde dauernd mehr geladen als überschuss da ist). Dann wird effektiv Netzstrom verbraucht, die Ladung wird aber nicht abgebrochen, es wird aber auch nicht eingespeist. Ist das das gewünschte Verhalten?!
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de danke ich schau mir das mal an. Das mit dem überschuss, ja eben das lief dann auseinander… hatte das Gefühl es wird einfach manchmal geladen wenn schon nicht mehr geladen werden sollte. Aber ist halt auch alles etwas komplex. Kommt noch genug überschuss von den PS Solarpanels? Aber auch dann, der Ueberschuss sollte ja dann besser direkt in die Batterie als eingespeist zu werden um die Batterie mit AC zu laden… aber wenn du Batterie schon voll war geht’s nicht anders bevor sie zu nem gewissen Punkt entladen wurde… Bin da jeweils nicht sicher ob das passiert, was gewollt war oder nicht
-
RE: ecoflow-connector-Script zur dynamischen Leistungsanpassung
@waly_de Das ist eben das, was ich nicht ganz verstehe. Klar rechne ich die Solaranlagen raus. Aber das macht ein Sensor am physikalischen Zähler ja genau so… ?! Das ist eben der Punkt, wo ich noch nen Knoten habe…
Was ich auch nicht ganz verstehe ist der ExcessChargeOffsetPower, was da wo in welche Richtung dazugerechnet wird. Die Ladeleistung wird einfach um den Wert erhöht, resp verkleinert?
Gestern - da hab ich aber auch viel gebastelt, kann sein dass da was durcheinander kam - hab ich mal festgestellt, dass dein script mit 20W zu laden versucht hat (vielleicht eben wegen dem Offset), was natürlich nicht geht.
Was die States angeht, ich hab gestern Stunden verbraten. Wenn man die States mit { type: 'boolean' } oder { type: 'number'} etc. anlegt, geht das. Was ich aber nicht hingekriegt habe, ist den Typ aus ner variable zu ziehen, also man kann das {} Konstrukt nicht als String übergeben.. Und ich bin wohl in JavaScript zu wenig bewandert… (hab da sonst nie was gemacht). Hab jetzt einfach 3 Funktionen gemacht, eine zum Anlegen eines strings, eine zum Anlegen einer number und eine zum Anlegen eines boolean… Das ginge sicher einfacher, aber eben, hab nicht rausgefunden wie.