Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dynamicCircuitCurrentP1,2,3 bitte writeable #23

Closed
TheSpirit opened this issue Aug 20, 2021 · 34 comments
Closed

dynamicCircuitCurrentP1,2,3 bitte writeable #23

TheSpirit opened this issue Aug 20, 2021 · 34 comments

Comments

@TheSpirit
Copy link

Hi,
ich habe gerade noch das hier gefunden
nordicopen/pyeasee#35 (comment)
von daher wäre es schon gut, wenn man auch die circuit dynamic currents schreiben könnte.
für mich ist dies relevant, da ich pv Überschuss laden will. so kann ich am Anfang nur mit einer Phase laden und dann einfach auf drei umschalten wenn genügend ström da ist ohne den Phasenmodus "echt" wechseln zu müssen (der Phasenmodus soll ja auch nicht zu oft umgeschalten werden, da dieser auch in den Flash geschrieben wird).
Danke für deine Tolle Arbeit

@kbb444
Copy link

kbb444 commented Aug 20, 2021

Hallo,
ich würde mich dem voll und ganz anschließen:
Ein fetter Dank @newman, super Sache! Tolle Arbeit!
Und auch bzgl. des requests zu dynamicCircuitCurrentPx.
Dies ist wohl auch der Weg, den die Kollegen um "evcc" gehen.
Wäre super, wenn Du den Adapter dahingehend ertüchtigend würdest.
Viele Grüße

@Newan
Copy link
Owner

Newan commented Aug 20, 2021

/api/sites/{siteId}/circuits/{circuitId}/settings
https://api.easee.cloud/index.html
Steht ne 0 drin, frage ist was steht drin wenn die Phase umgeschaltet wird?
Ich checke das mal

@Newan
Copy link
Owner

Newan commented Aug 20, 2021

Testet mal 1.0.4 ;-)

Newan added a commit that referenced this issue Aug 20, 2021
@TheSpirit
Copy link
Author

nachdem ich den adapter aus git installiert habe, wird mir als aktuell installierte version immer noch die 1.0.2 angezeigt.
was mache ich da falsch?

@TheSpirit
Copy link
Author

leider klappt es noch nicht. das problem ist wohl, das du ja die werte für dynamicCircuitCurrentP1,2,3 immer einzeln schreibst. das geht so nicht.

wenn ich das bei evcc richtig vestehe, müssen die drei werte auf einmal übergeben werden.
sieher hier:
https://github.com/andig/evcc/blob/master/charger/easee.go#L298

und wenn ich das in der api von easee richtig sehe, ist das auch so.
siehe hier:
https://api.easee.cloud/index.html

@kbb444
Copy link

kbb444 commented Aug 21, 2021 via email

@TheSpirit
Copy link
Author

Ich finde das mit schreiben P1 oder P3 nicht so gut.
Aber hab grad noch keine bessere Idee.
Kann in iobroker ein Objekt ein Tripel sein, oder geht das in iobroker nicht (jedes Objekt hat nur einen value)?

@kbb444
Copy link

kbb444 commented Aug 21, 2021 via email

@TheSpirit
Copy link
Author

Das wäre doch mal eine test wert

@Newan
Copy link
Owner

Newan commented Aug 21, 2021

leider klappt es noch nicht. das problem ist wohl, das du ja die werte für dynamicCircuitCurrentP1,2,3 immer einzeln schreibst. das geht so nicht.

wenn ich das bei evcc richtig vestehe, müssen die drei werte auf einmal übergeben werden.
sieher hier:
https://github.com/andig/evcc/blob/master/charger/easee.go#L298

und wenn ich das in der api von easee richtig sehe, ist das auch so.
siehe hier:
https://api.easee.cloud/index.html

POST
​/api​/sites​/{siteId}​/circuits​/{circuitId}​/settings
Set Circuit Settings

Set circuit settings of a site. Rate limited at max 20 request per minute.
Please only specify keys you want to change. Endpoint handles partial JSON objects and will give a 400 response if it does not understand the request.
Will only forward values for dynamicCircuitCurrentP1, P2, P3 to device if new value != old value

Konnte gestern auf der testbox p1=0, p2=10 p3=0 setzen. Was da net gehen soll k.a?
Pyeasee kannst auch jede Phase einzeln setzen. Ob das die Sinn macht dies zu tun muss ja jeder selbst wissen

@TheSpirit
Copy link
Author

Versuch mal p1=10, p2=10 p3=10
Das hat bei mir nicht geklappt.
konnte es zwar setzen, aber nachdem er es von der Box wieder gelesen hatte, war wieder nur einer der drei auf 10 und der Rest wieder auf 0

@kbb444
Copy link

kbb444 commented Aug 21, 2021

Ich kann mit der 1.0.4 jeden Kanal einzeln setzen.
Gleichzeitig werden aber die beiden anderen Px auf Null gesetzt.
Ein sequentielles Setzen ist also nicht möglich, weil immer 2 Kanäle Null sind.
Passt also zu den Versuchen von TheSpirit.
Und noch eines:
Teilweise musste ich den Wert 3x setzen bis er bestätigt wurde usw. s.o.
In den anderen bis zu 2 Fällen (vor der Bestätigung), wurde der vorherige Wert von der Cloud wieder auf das Objekt zurückgeschrieben.
Das Rücksetzen (3x40A) war bei mir über einen Neustart des Adapters mittels EASEE-App erfolgreich.

@Newan
Copy link
Owner

Newan commented Aug 22, 2021

Ok danke fürs Feedback, bau was ein das er alle 3 werte setzt

@TheSpirit
Copy link
Author

gibt es schon was neues?

@Newan
Copy link
Owner

Newan commented Aug 31, 2021

Werde es so realisieren, das wenn eine Phase geschrieben wird, der Adapter 200ms wartet und dann alle 3 Phasen sendet. Somit habt ihr die Möglichkeit über script immer alle Phasen auf einmal zu senden.

@TheSpirit
Copy link
Author

d.h. wenn ich nur einen wert ändere, werden die anderen beiden automatisch mit 0 gesendet (bzw. alle drei mit den jeweiligen werten; xx/0/0).
fasse ich aber alle drei Phasen an, werden alle werte auf einmal geschickt (xx/yy/zz).
hört sich gut an.
Danke

@Scotty-89
Copy link

Scotty-89 commented Sep 5, 2021

hey zusammen,

sorry ich konnte nicht ganz folgen aber der Plan ist jetzt, da ein Wechsel und somit schreiben von config.phaseMode immer in den Speicher geht uns somit diesen langfristig zerstören könnte, den phaseMode dauerhaft auf = 3 zu stellen ? oder 2 für Auto ?.
und dann auch wenn nur einphasig geladen werden soll das über die Parameter config.dynamicCircuitCurrentP1 ... zu "steuern" ?

also bswp für einphasiges Laden:
config.phaseMode = 3
config.dynamicCircuitCurrentP1 = 6 (6-16)
config.dynamicCircuitCurrentP2 = 0
config.dynamicCircuitCurrentP3 = 0

für dreiphasiges Laden:
config.phaseMode = 3
config.dynamicCircuitCurrentP1 = 16 (6-16)
config.dynamicCircuitCurrentP2 = 16 (6-16)
config.dynamicCircuitCurrentP3 = 16 (6-16)

verstehe ich das korrekt ?
was ist dann mit dem Parameter easee.0.EHTZSSUL.config.dynamicChargerCurrent ??
aktuell verwenden wir ja diesen beim einphasigen laden ...

Sorry für die Dummen nachfragen ;)

@kbb444
Copy link

kbb444 commented Sep 6, 2021

Deine Fragen sind m.E. mangels Testmöglichkeit jetzt noch nicht abschließend zu beantworten.
Für die Nutzer von "dynamicChargerCurrent" ändert sich natürlich nichts.
Ansonsten wird die Box nach meiner Einschätzung - also vorbehaltlich des Verhaltens der Box im Test - im Modus "2" gefahren.
Das Umschalten 1P/3P soll durch die Box erfolgen, setzt aber voraus, dass diese den Wunsch anhand der Bedatung von dynamicCircuitCurrentPx erkennt. Das ist im Test zu klären. Falls nicht, wird die Box wohl in Modus "3" gestellt, auch für 1P-Laden. EVCC zeigt, dass einer von beiden Wegen zum gewünschten Ergebnis führen wird.
Bis auf die phaseMode sind Deine beiden Listen also "der Plan".
Ich gehe weiter davon aus, dass "dynamicChargerCurrent" auf den gleichen Wert wie dynamicCircuitCurrentP1 gestellt werden muss, da ansonsten vermutlich kein Ladevorgang stattfindet. Aber auch das muss im Test geklärt werden.

@Heini1985
Copy link

Hallo zusammen,
ich würde gerne meine easse mit dynamicCircuitCurrentP1,P2,P3 steuern und Phasenumschaltung dauerhaft auf Automatischen Modus lassen. So macht es EV Autocharge auch.
Wie stelle ich es an der Box dynamicCircuitCurrentP1,P2,P3 zu übergeben damit diese nicht überschrieben werden.
ich habe noch nie eigen Objekte im iObroker angelegt.

Kann einer von euch mir helfen?

  • Wie erstelle ich ein Objekt in der easse config.
  • Welchen Quellcode muss ich dort hinterlegen um die dynamicCircuitCurrentP1,P2,P3 zu übergeben.
  • wie muss die Übergabe aussehen damit easse das versteht.
    Wenn eine ein funktionierendes Beispiel posten könnte wäre mir geholfen.

Oder wird es einen Update vom Easse Adapter geben damit man die variablen im Blockly setzen kann und diese übergeben werden.

installierter Adapter 1.0.3 (1.0.4 habe ich noch nicht gefunden)

Ich habe eine Easse Home ein PV mit 8,34kWp, einen Powerfox Poweropti und eine Zor R135 (Zoe 2)

@Heini1985
Copy link

Hallo zusammen zur Zeit verwende ich die Phasen Umschaltung. Aber das sollte man ja nicht zu oft mache da diese in flash geschrieben wird.
Wo finde ich den Adapter 1.0.4
Und kann ich dann die dynamicCirtuitCurrent Pxmit blockly setzen?

Danke

@kbb444
Copy link

kbb444 commented Oct 4, 2021

Die 1.0.4 erhälst Du, wenn Du den aktuellen Master über Github installierst.
1.0.4 schreibt aber nur die Phase, deren Topic Du gewählt hast. Die restlichen Phasen werden seitens der Cloud dann implizit mit "0" geschrieben (...P1-> Phase1, 0, 0). Das Thema ist also noch nicht fertig (s.o.).
Ich habe bei mir als Zwischenlösung die /opt/iobroker/node_modules/iobroker.easee/main.js so geändert, dass ...P1 Phase1/0/0, ...P2 Phase1/2/0 und ...P3 Phase1/2/3 schreibt.
Die Zielkonfiguration von newman sieht aber anders aus und macht so auch mehr Sinn. Ist eben nur ein workarround.
main.js.gz

@Heini1985
Copy link

Danke für die Antwort
Ich habe jetzt den 1.0.4 drauf und werde mit denen Main Mal rumprobieren.

Falls es etwas neues gibt bitte Posten.

Ich lade aktuell wieder über EV Autocharge aber das ist nicht so flexibel.

Gruß

Heini1985

@Heini1985
Copy link

Danke kbb444
jetzt funktionier mein Überschussladen so wie ich es wollte.

wenn kein PV Überschuss: dynamicChargerCurrent = 0A
dynamicCircuitCurrentP3 = 0A

Wallboxmodus =2
Laden 1P: dynamicChargerCurrent = StromX
dynamicCircuitCurrentP1 = StromX

Laden 3P: dynamicChargerCurrent = StromX
dynamicCircuitCurrentP3 = StromX

Funktioniert Super

Danke

@kbb444
Copy link

kbb444 commented Oct 5, 2021

Eine Frage: Wechselst Du direkt zwischen 1P und 3P oder pausierst du den Ladevorgang vor der Änderung des Phasenmodua?
Auf jedem Fall schon mal danke für's Testen...

@Heini1985
Copy link

Hallo kbb444

ich habe beides ausprobiert ohne Pause und mit Pause.
Ohne Pause funktioniert es auch aber das Auto verschluckt sich und bricht den Ladevorgang ab.

Ich pausiere und dann setze ich die Strome. Danach mit Resume starte ich die Ladung wieder.

@Heini1985
Copy link

Hallo Zusammen ein kleines Update zum Test.

Ich habe festgestellt das man den Strom nicht über dynamicCircuitCurrentPX einstellen muss sondern nur mit .dynamicChargerCurrent.

  1. Ich mache es so das ich meinen PV Überschuss nehme und damit den Strom berechne (I1P=P/U)
  2. Abhängig von dem PV Überschuss und draus resultierendem Strom (I1P> 16A) teile ich den Strom durch 3( I3P= I1P/3) für 3 Phasen Ladung
  3. Wenn der Strom I1P zwischen >6 und <16A ist. setze ich dynamicCircuitCurrentP1 =16A und den .dynamicChargerCurrent= I1P
  4. Strate ich die Ladung durch Strart (mit Resume überschreibt er den dynamicChargerCurrent mit 32A und lädt mit 16A)
  5. Wird der Strom I1P > 16A und der I3P >6A dann pausiere ich die Ladung. setze ich dynamicCircuitCurrentP3 =16A und den .dynamicChargerCurrent= I3P
  6. Strate ich die Ladung durch Strart
  7. wenn kein PV Überschuss vorhanden dann pausiere ich die Ladung bis wider die Sonne scheint.

ich hoffe ich konnte etwas helfen.
ich werde meinen Blockly Skript benutzen und noch dran Pfeilen.

Viele Grüße Heini1985

Newan added a commit that referenced this issue Oct 11, 2021
@Newan
Copy link
Owner

Newan commented Oct 11, 2021

Habe 1.0.4 neu erstellt. Bitte neu installieren und testen!

@Heini1985
Copy link

Ich habe die neue ver. 1.0.4 installiert.

Ich habe festgestellt das man alle 3 PX setzen muss um ein 100% Ergebnis zu bekommen.

Setzt man nur P3 (händisch) werden die anderen mit 0 überschreiben genau so bei P2 und P1.
Setzt man aber alle drei PX variablen innerhalb 500ms (im Skript) z.B P1=16; P2 =16; P3 =16 oder P1=16; P2 =16; P3 =0 funktioniert es

Das heißt für mich das ich in meinem Skript immer alle drei PX setzten muss.

Danke fürs Update Newman

Viele Grüße Heini1985

@Newan
Copy link
Owner

Newan commented Oct 12, 2021

Ich habe die neue ver. 1.0.4 installiert.

Ich habe festgestellt das man alle 3 PX setzen muss um ein 100% Ergebnis zu bekommen.

Setzt man nur P3 (händisch) werden die anderen mit 0 überschreiben genau so bei P2 und P1. Setzt man aber alle drei PX variablen innerhalb 500ms (im Skript) z.B P1=16; P2 =16; P3 =16 oder P1=16; P2 =16; P3 =0 funktioniert es

Das heißt für mich das ich in meinem Skript immer alle drei PX setzten muss.

Danke fürs Update Newman

Viele Grüße Heini1985

Genauso habe ich die Anforderung verstanden und umgesetzt

Newan, ohne m :-)

@Heini1985
Copy link

Hallo jetzt wollte ich meinen Skript ausprobieren aber eassee adapter war zwar grün hat aber keine daten übergeben dann habe ich den Adapter neu installiert jetzt habe ich Kar keine Objekte mehr im iobriker (siehe Bild)

image

ist es bei mir nur oder hat ein anderer das Problem

Heini1985

@Heini1985
Copy link

ich habe bei Easee auf der seit geschaut und etwas gefunden.

zurzeit wird etwas an der API gemacht von 9:00- 21:00

Heini1985

@Newan
Copy link
Owner

Newan commented Oct 13, 2021

Kann das hier geschlossen werden?

@kbb444
Copy link

kbb444 commented Oct 17, 2021

Funktioniert wie gewünscht. Vielen Dank!
Kann aus meiner Sicht also geschlossen werden.

@Heini1985
Copy link

Von meiner sicht kann es auch geschlossen werden
Danke für deine Mühe.
Super gemacht.

Danke für den Adapter

Heini1985

@Newan Newan closed this as completed Oct 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants