Enphase Firmware ≥ 7.0 (war Aktueller Guide zu Erstellung/Anpassung von Modulen)

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
LutzB
Beiträge: 3513
Registriert: Di Feb 25, 2020 9:23 am

Re: Enphase Firmware ≥ 7.0 (war Aktueller Guide zu Erstellung/Anpassung von Modulen)

Beitrag von LutzB »

stefan_o hat geschrieben: Mi Mär 13, 2024 4:11 pm
LutzB hat geschrieben: Mi Mär 13, 2024 6:21 am Was muss denn Deiner Ansicht nach noch bei der Batterie eingestellt werden?
Zumindest ob eine vorhanden ist und dann gibt es verschiedene Typen, die an unterschiedlichen Stellen ausgelesen werden (wobei die Batterie 1. Generation in Deutschland vermutlich extrem selten ist und die 3. Generation noch nicht auf dem Markt in D). Im Moment wird bei V2 ja auch immer probiert /ivp/livedata/status zu lesen, auch ohne Speicher, bei mir gibt es die gar nicht, weiß nicht ob es an der alten Firmware liegt oder daran, das kein Speicher vorhanden ist.
Ob eine Batterie vorhanden ist, wird dem System ja mitgeteilt, indem eine entsprechende Komponente angelegt wird.
Die Abfrage von "livedata" kann dann wirklich in die Komponente wandern bzw. nur ausgeführt werden, wenn ein Speicher konfiguriert wurde, da hast Du Recht.
stefan_o hat geschrieben: Mi Mär 13, 2024 4:11 pm
LutzB hat geschrieben: Mi Mär 13, 2024 6:21 am Wenn das eindeutig zugeordnet werden kann, ok.
Das kann man in der /ivp/meters auslesen. Die Frage ist, ob das Webinterface das über xmlhttprequest macht oder das Web-Interface das backend irgendwie abfragt und das in Python gemacht wird. Meine Idee wäre da einen Button zu haben "automatische Erkennung" oder so, der das ausführt.
Das Webinterface kann das nicht machen, da es dann einen CORS Fehler gibt und der Browser die Anfrage blockiert. Es ist in Planung, dass solche Aktionen an das Backend durchgereicht werden können. Dafür müssen aber erst noch ein paar Voraussetzungen geschaffen werden. Daher würde ich diesen Punkt vorerst noch nicht umsetzen.
stefan_o hat geschrieben: Mi Mär 13, 2024 4:11 pm
LutzB hat geschrieben: Mi Mär 13, 2024 6:21 am Das wäre gut. Wenn der Abruf eines Tokens mit Benutzer/Kennwort funktioniert, ist die Aktualisierung ebenfalls schon fertig. Im Gegensatz zu anderen OAuth Implementierungen gibt es hier kein "Refresh Token", mit dem ein neues abgerufen werden kann. Es wird immer zwingend Benutzer/Kennwort benötigt. Du kannst also entweder den Zeitstempel des Abrufen mit dem Token speichern oder das JWT decodieren und die Gültigkeit auslesen.
Jein, die Aktualisierung kommt ja nur wenn kein Token vorhanden ist so wie ich den Code lese, wenn der Token ungültig ist, passiert erstmal nichts. Es wäre wohl auch sinnvoll den Token rechtzeitig zu aktualisieren (also z.B. 24 Stunden vor Ablauf) und nicht darauf zu warten bis er nicht mehr funktioniert. Und einen counter zu haben, das falls die Zugangsdaten zu Enphase nicht mehr passen, das er nicht alle 10 Sekunden wieder probiert ein Token zu erstellen, sondern irgendwann aufgibt.
Ok, da der Teil noch nicht umgesetzt ist, hatte ich da nur als Platzhalter etwas "Dummy-Code" reingeschrieben. Natürlich muss der Token noch auf Gültigkeit geprüft werden.
stefan_o hat geschrieben: Mi Mär 13, 2024 4:11 pm Ich würde mich sonst mit den Tokens beschäftigen, da ich mit dem Interface-System nicht wirklich vertraut bin
Darfst Du gerne mit anfangen.
stefan_o
Beiträge: 50
Registriert: Di Okt 12, 2021 5:18 pm

Re: Enphase Firmware ≥ 7.0 (war Aktueller Guide zu Erstellung/Anpassung von Modulen)

Beitrag von stefan_o »

LutzB hat geschrieben: Do Mär 14, 2024 10:07 am Ob eine Batterie vorhanden ist, wird dem System ja mitgeteilt, indem eine entsprechende Komponente angelegt wird.
Die Abfrage von "livedata" kann dann wirklich in die Komponente wandern bzw. nur ausgeführt werden, wenn ein Speicher konfiguriert wurde, da hast Du Recht.
Ok, ob man für die neue Batterie dann was anders machen muss (oder falls sich jemand mit einer alten meldet) kann man die Einstellungen ja dann hinzufügen.
LutzB hat geschrieben: Do Mär 14, 2024 10:07 am Darfst Du gerne mit anfangen.
Alles klar, werde ich mit anfangen und sobald ich was habe einen Pull request auf die branch erstellen
stefan_o
Beiträge: 50
Registriert: Di Okt 12, 2021 5:18 pm

Re: Enphase Firmware ≥ 7.0 (war Aktueller Guide zu Erstellung/Anpassung von Modulen)

Beitrag von stefan_o »

Pull requests sind raus, das Interface war tatsächlich auch recht einfach (man muss nur verstehen, dass es zwei Repos sind)

Automatische token generation funktioniert problemlos, es wird sowohl geprüft wie lange das Token gültig ist (und 24h vorher aktualisiert), als auch ob der Envoy ein HTTP Fehler zurückgibt. Falls die Tokenerstellung nicht klappt (Zugangsdaten falsch) oder die Tokens nichts funktionieren (Seriennummer falsch?) wird nach 5 Versuchen abgebrochen.

Todos sind noch:
  • Ein Fehler werfen wenn die Tokenerstellung nicht klappt oder keine Zugangsdaten (stand als todo irgendwo, im Moment gibt es nur ein Eintrag im Log)?
  • Prüfen, ob ich das Speichern des Tokens korrekt gelöst habe (ich habe kein anderes device gefunden, dass einen Token speichert, nur Autos)
Da ich keinen Zugang zu einem System mit Batteriespeicher habe, kann ich die Batterie-Funktionalität aktuell nicht testen.

Ich habe zusätzlich auch schon Funktionen eingebaut um:
  • ohne Token die Firmware-Version herausfinden
  • Seriennummer ohne Token herausfinden
  • EIDs der Zähler herausfinden
Habe ich getestet, werden aber im Moment von nichts verwendet, wäre sicher hilfreich wenn in Zukunft im Frontend neben dem Feld z.B. ein Button ist "Automatisch erkennen", dann geht ein Dialog auf: "Es konnte X ermittelt werden, diesen Wert übernehmen? Ja/Nein"
Für die Ermittlung der EIDs sollten die Unter-Geräte irgendwie die Funktion des Hauptgerätes aufrufen (mit dem entsprechenden Parameter), weiß nicht ob das irgendwie vorgesehen ist. Laut der Enphase-Dokumentation kann es auch Stromwandler an einer Batterie geben, die über /ivp/meters/readings ausgelesen werden kann.

Lutz, vielleicht kannst du das Problem mit dem SoC ja mal hier posten: https://support.enphase.com/s/question/ ... on-and-soc
Da hat vor einigen Stunden jemand von Enphase geantwortet und genau die API vorgeschlagen, die bei deiner Schwester nicht zuverlässig geht.
Antworten