Closed Mathias2803 closed 1 year ago
Here is some additional information that might help:
I will be also really interested!!
Ich wäre auch interessiert, die Zappi-Community dürfte inzwischen auch recht groß sein.
Auch ich wäre sehr interessiert.
Dann solltet Uhr alle oben im ersten Post auf Thumbs up drücken ... Posts sind unsichtbar
This would be a lifesaver. It would let me control the charge limit on my Renault Zoe using Tronity. A few EV's dont allow you to control the charge limit.
ich wäre auch arg interessiert. Wäre das hier ein Anfang bzw. Teil der Lösung? https://github.com/bisand/myenergi-api
@MPTrixi @JamesDemaine-wit did you click the "Thumbs Up" button in the first post?
@Apollon77 https://github.com/bisand/myenergi-api ist eine NodeJS Implementierung der MyEnergi API. Ich denke die könnte wirklich als Basis für einen Adapter dienen, oder?
@dj-mib yep - mein Daumen ist dabei
Habe mal als Beispiel in den Powerfox Adapter geschaut, was ja ähnlich sein sollte - nicht dass ich das ganze verstehen würde (meine Programmierkenntnisse sind recht angestaubt). Wenn ich es richtig verstanden habe braucht die myenergi API eine digest Authentifizierung, was wohl in axios nicht so (ohne weiteres oder überhaupt?) geht (hab zumindest nur die Aussage gefunden) und man müsste es mit fetch machen? Wie gesagt: Ahnung davon habe ich wirklich nicht. Zumindest bekomme ich die Daten im Browser mit URL (es gibt verschiedene). Ruft man die auf kommt ein Popup mit Abfrage des Users und eines Passworts. Der User ist die SN des eigenen Hubs. Als Passwort kann man mit seinem myenergi Online Konto einen API Key erzeugen. Für Tests stehe ich gerne zur Verfügung (hab aber nur gefährliches Halbwissen ;)). Aber ich dachte die NodeJS Implementierung müsste sich doch auch direkt "anzapfen" lassen.
For testing purposes I am also available.
Moin zusammen, ich hab ein wenig gebastelt und versucht in einem Script meinen Zappi auszulesen und es klappt!
Voraussetzungen:
Hier das Script: myenergi.txt
Ergebnis jeweils ein JSON Objekt mit dem man etwas anfangen kann: ZAPPI ALL [{'sno':222333444,'dat':'27-05-2022','tim':'07:37:26','ectt1':'Internal Load','ectt2':'Internal Load','ectt3':'Internal Load','bsm':0,'bst':0,'cmt':254,'dst':1,'div':0,'frq':50.01,'fwv':'3560S3.171','grd':-5573,'pha':1,'pri':1,'sta':1,'tz':2,'vol':2382,'che':1.27,'bss':0,'lck':23,'pst':'A','tbk':99,'zmo':3,'pwm':5300,'zs':258,'rac':8,'rrac':-4,'zsh':1,'zsl':2,'ectp4':-1966,'ectp5':-1928,'ectp6':-1839,'ectt4':'Grid','ectt5':'Grid','ectt6':'Grid','mgl':100,'sbh':14,'sbk':5,'sbm':30}]
MEIN ZAPPI
{'sno':222333444,'dat':'27-05-2022','tim':'07:37:27','ectt1':'Internal Load','ectt2':'Internal Load','ectt3':'Internal Load','bsm':0,'bst':0,'cmt':254,'dst':1,'div':0,'frq':50.01,'fwv':'3560S3.171','grd':-5118,'pha':1,'pri':1,'sta':1,'tz':2,'vol':2382,'che':1.27,'bss':0,'lck':23,'pst':'A','tbk':99,'zmo':3,'pwm':5300,'zs':258,'rac':8,'rrac':-4,'zsh':1,'zsl':2,'ectp4':-1966,'ectp5':-1928,'ectp6':-1839,'ectt4':'Grid','ectt5':'Grid','ectt6':'Grid','mgl':100,'sbh':14,'sbk':5,'sbm':30}
Für ein paar andere Anwendungsfälle habe ich mir aber schonmal Scripte gebaut, die mir z.B, Werte meiner Heizung auslesen und in Objekten speichern... Ich habe allerdings noch nie einen Adapter für den IO-Broker gebaut. Mit etwas Unterstützung und einem Adapter für Dummies Guide könnte das aber der erste werden.
@dj-mib top - läuft bei mir auch und ist doch schon mal ein Durchbruch. Im Prinzip würde das ja erstmal reichen, oder? Damit könnte man doch nun im ioBroker das als JS regelmäßig laufen lassen und die Werte die einem interessieren in vorher eigen erstellte Datenpunkte schreiben lassen. Wie wäre da das Vorgehen?
Zur Adaptererstellung gibt es diverse Anleitungen (inkl. Linksammlungen) und auch Videos. So richtig trivial ist es aber zumindest für mich als DAU in der Sache nicht. Z.B.: https://herwig.de/anleitungen/smarthome/iobroker/adapter-entwicklung.html#adapter-template https://github.com/Mic-M/iobroker-Adapter-Entwicklung-fuer-Anfaenger/wiki
Super!
Ich freue mich echt, dass sich jemand der Sache angenommen hat!
Ein Adapter würde das Ganze natürlich für die Mehrheit (und auch mich) sehr vereinfachen... :-)
@MPTrixi zu:
Ich hab tatsächlich erst tatsächlich erst auf der Konsole "npm install myernergi-api" ausgeführt. ich glaube aber es reicht das Modul in der Instanz des JS Adapters bekannt zu machen, der installiert das dann von selbst,
Kann man von Hand machen, oder ggfs auch generisch im Script
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse So macht man aus dem JSON String ein Objekt in Javascript und so setzt man einen Status : setState("DatenpunktName", result.wert, true);
@dj-mib ich bin da tatsächlich zu blöd dafür. Könntest Du mal Dein Script um einen geschriebenen Datenpunkt aus dem Ergebnis von "MEIN ZAPPI" ergänzen?
BTW: hier findet sich übrigens eine gute Übersicht der Bedeutung der einzelnen Ausgaben
@MPTrixi Wenn ich etwas halbwegs brauchbares zustandebekommen habe, werde ich das hier posten. Ich muss mich da auch erstmal noch ein wenig einlesen, hab auch noch nicht verstanden, welcher der Werte jetzt angibt wieviel kW in Summe geladen wird...
@dj-mib Danke, bin gespannt drauf. Hab grad meinen Post drüber mit einem Link ergänzt. Da sind Beschreibungen zu den einzelnen Werten aufgeführt. Weiter unten dann auch zur Zappi Steuerung.
Bei mir funktioniert es auch. Ich konnte problemlos einmal die Datei lesen. Jetzt wäre es nötig die Daten regelmäßig zu lesen (jede 10s?) und und in einem Datenpunkt schreiben (oder besser gesagt, dass der Skript automatisch Datenpunkte anlegt und aktualisiert)
Wenn ich helfen kann, einfach sagen wie. Zum testen gerne!
Ich wollte mir eigentlich eine Entwicklungsumgebung aufbauen und versuchen einen Adapter zu bauen - Da es mir erstmal nicht gelungen ist eine lauffähige IOBroker Instanz unter Windows zu bauen und ich mir den ganzen Rest erst auch noch beibringen müsste, mache ich es jetzt erstmal Quick and Dirty als Javascript mit nem Cron, der zyklisch die Daten abruft.
Ich habe jetzt ein Script entwickelt mit dem man erstmal "was machen" kann.
Mit dem Script werden in einem definierbaren Intervall die Daten aus der Box gelesen und in Datenpunkte geschrieben. Das Root der Datenpunkte kann als Konstante vorgegeben werden,
Dazu kann der ChargeMode über ein Command gesetzt werden. Ich denke die meisten wollen irgendwann stoppen, wenn das EV einen bestimmten SoC erreicht haben, das sollte damit gehen :)
Das Script ist experimentell, wer mag kann es nach Prüfung aber gerne testen. Vielleicht hab ich irgendwann mal Zeit mich an die Entwicklung eines Adapters zu setzten. Auf meinem produktiven Broker will ich das aber nicht machen und unter Windows hab ich's nicht hinbekommen :( Die Doku von @Apollon77 sieht aber auf den ersten Blick recht gut aus. Mir fehlt hat gerade nur die Zeit...
Feedback, Tipps und Verbesserungsvorschläge von Testopfern sind willkommen :)
Hi,
könntest du für einen Dummy eine kurze Anleitung schreiben wie man vorgehen muss um das zum laufen zu bekommen?
LG Holger
@dj-mib Das hört sich doch schon mal gut an. Ich hab zumindest mal nen iobroker auf nem alten Windows Notebook zum Laufen bekommen. Hab aber vom Rest keine Ahnung. Das ganze asynchrone Zeugs inkl. den "Versprechungen" kam lange nach meiner aktiven Programmierzeit :)
Ich hoffe ich kann morgen mal testen. Ich danke aber schon mal vorab.
@dj-mib ich konnte heute morgen kurz testen. Habe es auf meinem Windows Test ioBroker versucht. Beim ersten Lauf schmeisst die Console ein paar Warnings. Datenpunkte werden aber angelegt. Habe auch Daten drin die sich aktualisieren. Sieht also soweit gut aus. Super Arbeit. Was mir erstmal aufgefallen ist und was noch angepasst werden sollte: in Zeile 18 kann man ja einen eigenen Pfad für die Datenpunkte definieren. Das geht auch, allerdings wird beim Setzen des Chargemodes fest auf den ursprünglichen Wert referenziert (hier sollte auch die Variable gezogen werden (Zeile 444)). Ich schau mal noch die Tage tiefer rein ob die Werte etc. passen. Was ich schon versucht habe und 1a funktioniert, ist das Umschalten des Chargemodes (zumindest von ECO+ auf ECO und zurück).
@hobili ich versuche es mal, ist aber nicht schwer:
Wenn man nun in den Datenpunkten einen Datenpunkt unter ...Chargemode auf TRUE setzt (wird gleich wieder FALSE) wird der Lademodus auf den entsprechenden Wert umgestellt.
@MPTrixi
super! Vielen Dank für die Anleitung!
Funktioniert auf Anhieb - die Warnings kamen auch bei mir, Datenpunkte wurden angelegt und werden regelmäßig gefüllt.
sehr geil!
Danke für die Hinweise @MPTrixi
UPDATE: myenergi.txt
Hab ich eigentlich erwähnt, dass ich Javascript hasse? Ich mach eigentlich eher Java und brech mir hier ständig die Finger...
TOP! Super gemacht! bei mir klappt auch alles!
Habe eine weitere Erfahrung gemacht, die ich kurz teilen möchte: Nachdem es auf dem Windows-Testsystem gut läuft, wollte ich das Script auf meinem produktiven ioBroker (Raspberry Debian 11, ioBroker 4.0.23, npm 8.9.0, Admin 5.3.8, Skripte-Adapter 5.2.21) laufen lassen. Erstmal habe ich es ohne npm install myernergi-api versucht. Es kam dann ein Fehler. Also den Befehl auf der Konsole ausgeführt. Leider blieb der Fehler, dass myernergi-api nicht verfügbar sei. Ich musste myenergie-api in der Skripte-Instanz unter zusätzliche NPM-Module eintragen. Erst dann lief es im Produktivsystem (falls jemand auf ähnliche Probleme stößt).
Erstmal habe ich es ohne npm install myernergi-api versucht. Es kam dann ein Fehler. Also den Befehl auf der Konsole ausgeführt. Leider blieb der Fehler, dass myernergi-api nicht verfügbar sei. Ich musste myenergie-api in der Skripte-Instanz unter zusätzliche NPM-Module eintragen.
Eigentlich müsste man sich den Install auf der Konsole sparen können. Der Javascript Adapter macht es selbst, wenn man es unter zusätzliche Module einträgt.
Ich hatte es leider anders herum versucht. Also nach dem Fehler erst den npm install auf der Konsole. Danach erst in der Adapterinstanz eingetragen. Komisch finde ich das unterschiedliche Verhalten der Windows- und der Rasp-Installation. Auf der Windowsseite ging es gleich nach dem npm install ohne dass was in der Instanz eingetragen ist. Auf dem Rasp nicht, hier musste es in der Instanz rein... aber Hauptsache es läuft :)
Eine Frage zu dem Lock State:
ich habe da als Wert "16" stehen - egal ob Stecker entfernt oder im Auto oder Ladend ...
meine Zappi hat ein fest angeschlossenes Kabel, nur zur Info
In einem anderen Beitrag auf Github habe ich das gefunden:
Lock Status
'lck' - representation of current PIN lock settings and zappi lock status Bit 0: Locked Now Bit 1: Lock when plugged in Bit 2: Lock when unplugged. Bit 3: Charge when locked. Bit 4: Charge Session Allowed (Even if locked)
Damit kann ich aber leider nichts anfangen; hat da jemand eine Idee?
LG Holger
@hobili bei mir ist es auch 16 (Auto ist grad nicht da ;)). Denke aber das hat nichts mit dem Ladestatus oder angesteckt oder nicht angesteckt zu tun. Es geht wohl darum, ob eine PIN in der Zappi vergeben ist (damit nicht fremdgeladen werden kann) und wie damit umgegangen wird. Habe im Netz bei Beispielauszügen der Abfrage bisher auch nur die 16 gefunden. Aber Denken heißt nicht Wissen. An Doku sonst nicht. Wenn Du das brauchst müsstest mal mit den Zappi Einstellungen zur PIN rumspielen und schauen wie sich der Wert verändert.
@MPTrixi
ach ja, an diese Funktion hatte ich gar nicht gedacht - stimmt, dann wird es das wohl sein :-)
Brauchen tue ich die Funktion nicht, meine Zappi ist nicht per Code gesperrt. Danke für den Hinweis!
Was macht Ihr bisher mit den Infos und Werten die Ihr aus den Datenpunkten lesen könnt?
ich habe bisher "nur" eine Seite meiner Vis damit ausgestattet (auf dem Screenshot bin ich noch von der Funktion des verriegelten Steckers ausgegangen ;-) )
Noch eine Frage: Ich kann den Wert von z.B. "Minimum Green Level" in den Objekten verändern aber er ändert sich dann sofort wieder auf den in der Myenergie App eingestellten Wert. Wenn ich diesen in der App ändere wird mir die Änderung dann auch in den Objekten angezeigt... was mache ich da falsch?
Noch eine Frage: Ich kann den Wert von z.B. "Minimum Green Level" in den Objekten verändern aber er ändert sich dann sofort wieder auf den in der Myenergie App eingestellten Wert. Wenn ich diesen in der App ändere wird mir die Änderung dann auch in den Objekten angezeigt... was mache ich da falsch?
Hi @hobili , du machst da noch gar nix falsch. Das ist derzeit noch nicht implementiert. Hab da aber gerade mal 5 Minuten drüber nachgedacht, wie ich erkennen könnte, dass die Änderung über den Broker vorgenommen wurde und nicht über die App. Ich muss ja entscheiden können ob ich den Wert jetzt an die Box schicke oder nicht :D. Ich wollte es erst auch über ein command machen, aber der Plan ist jetzt das über das Setzen eines unbestätigten Werts mache. Die Werte aus der Box sind immer bestätigte Werte. Du setzt also z.B. 75 % als unbestätigten Wert. Ich erkenne die Änderung und sende einen Request an die API. und irgendwann kommt ein Wert von der API zurück, der hoffentlich dem entspricht, was du gesetzt hast.
Hab aber noch nicht geschaut, ob die bisand/myenergi-api das hergibt... (edit: geht... aber heute guck ich Stranger Things ;) ) Geduld, bitte...
@dj-mib
ups - da war ich wohl ein wenig zu voreilig ;-)
sorry - wollte dich nicht unter Stress setzen! So wie es bisher funktioniert ist schon super...
LG Holger
@dj-mib wollte grad mal Deine Version mit MGL versuchen. Scheint aber Du hast sie wieder rausgenommen. Hat sie nicht so funktioniert wie gewollt?
huch, sehe ich ja jetzt erst - hatte gestern die neue Version geholt und installiert, kam aber noch nicht zum testen...
Aber ja - wenn ich den Green Level setze ändert sich nix. Nur um sicher zu gehen: Die Buttons unter Commands funktionieren auch noch nicht, oder?!
Sorry für das Chaos, bei mir funktionierten die Commands nicht mit dem Script und ich habe gesehen, dass der Datenpunkt für den MGL noch hart verdrahtet war. Daher hab ich das kaputte Release schnell wieder entfernt - wohl nicht schnell genug ;) Leider musste ich auch bei mir das dataRoot anpassen, da müsst ihr also hingucken und ggfs anpassen. Bei mir wurden irgendwie Werte nicht aktualisiert und auch löschen und neuanleden brachte nichts.
REL-1_01 03.06.22
Unhabhängig von diesem Script habe ich noch folgendes für meinen Corsa gebaut:
Berechnen einer Energiemenge um einen definierten Soc zu erreichen Wenn lastCharge kleiner ist als vorher (beim Start eines Ladevorgangs nach dem Einstecken des Kabels) nehme ich den aktuellen SoC des Fahrzeugs (wird normalerweise nach dem Abstellen des Fahreugs halbwegs zuverlässig aktualisiert) Aus der Different errechne ich eine Lademenge. Leider übermittelt das Fahrzeug nicht regelmäßig genug um zuverlässig bei z.B. 80% zu stoppen.
Erreicht lastCharge die errechnete Lademenge stoppt die Ladung und schickt mir eine Nachricht aufs Handy (z.B Pushover, Telegram oder Whatsapp)
Wird zwischendurch das Ladeziel von zb. 80 auf 90% erhöht wird die Differenz errechnet und die Lademenge angepasst. (der aktuelle SoC ist in KOmbination mit lastCharge nicht wirklich brauchbar)
Und die Ladung der Zappi wird neben einigen anderen Verbrauchernnoch in meiner Verbrauchsübersicht angezeigt... Hier kann man auch gerade sehen, wie die Ladung dann bei 85% stoppen sollte.. Mit der Berechnung sind es dann heute 86% geworden (1. Versuch)
Was mir leider noch total fehlt ist eine brauchbare Visialisierung :(
Hallo Michael,
funktioniert wie von dir beschrieben - mit einer kleinen Verzögerung - aber einwandfrei.
kann es sein, dass im Script deine Serials und Api drin stehen? Nicht, dass da jemand was mit anfangen kann...
Vielen Dank für deine Arbeit!
LG Holger
P.S.:
ich hatte beim starten folgende Fehlermeldung:
script.js.common.Zappi: Zappi MGL: null konnte nicht gesetzt werden. {"status":"-14","statustext":""}
und folgende Warnung:
You are assigning a object to the state "0_userdata.0.zappi.minimumGreenLevel" which expects a number. Please fix your code to use a number or change the state type to object. This warning might become an error in future versions.
script.js.common.Zappi: Zappi MGL: null konnte nicht gesetzt werden. {"status":"-14","statustext":""}
@hobili Der Fehler sieht doof aus, aber ist nicht schlimm. Ist bei mir wohl nicht aufgetreten, da der Datenpunkt schon da war. Bin nicht davon ausgegangen, dass der Trigger da schon ausgelöst wird. Könnte da noch auf null prüfen, damit das nicht passiert.
Serials hab ich nochmal rausgenommen, der API Key ist eh schon ein neuer. Also alles gut. Trotzdem doof von mir. Passiert, wenn hier dauern Kinder dazwischen funken. Werde das mal ändern, so dass die Nummern in Datenpunkte eingetragen werden und nicht im Script stehen müssen.
Next Step wäre dann aber eigentlich ein Adapter, aber dafür muss ich die drei Kinder loswerden :)
nach Urlaub (ich Armer), etc. bin ich auch mal dazu gekommen das Skript für mich anzupassen und auszutauschen. Da gabs keine Probleme/Fehler @dj-mib ich danke mal wieder ;)
Hallo zusammen, ich habe das Script bei mir für meine beiden Zappi's eingerichtet. Aber die APP funktioniert nicht mehr. Wenn ich die öffne, bekomme ich den Hinweis das es einen Kommunikationsfehler gibt und ich das Passwort ändern kann.
Hat das Problem noch jemand?
Hi @SpitfireXP, habe da leider wenig hilfreiches parat. Werden Hub und Deine Zappis denn noch korrekt im Portal bei Myenergi angezeigt? https://myaccount.myenergi.com/location#products
Vielleicht mal aus der App abmelden und neu anmelden.
Das bei anmelden hat geklappt😀Danke für den TippAm 14.07.2022 11:26 schrieb Michael @.***>: Hi @SpitfireXP, habe da leider wenig hilfreiches parat. Werden Hub und Deine Zappis denn noch korrekt im Portal bei Myenergi angezeigt? https://myaccount.myenergi.com/location#products Vielleicht mal aus der App abmelden und neu anmelden.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>
Habe gerade das Script innerhalb von 15 Minuten installiert und funktioniert super !! Vielen Dank für die super Arbeit !!!
Ich habe für das Script mal ein Projekt in Github aufgemacht: https://github.com/dj-mib/iobrokerscript.zappi Wenn es Änderungen geben sollte dann dort. Damit sollte dieser Thread hier frei werden für nen richtigen Adapter.
@dj-mib Kannst bitte umbenennen und das iobroker. rausmachen, sonst verwechsekln es User mit nem Adapter und versuchen es zu installieren :-)
@dj-mib Kannst bitte umbenennen und das iobroker. rausmachen, sonst verwechsekln es User mit nem Adapter und versuchen es zu installieren :-) @Apollon77 ist erledigt. Habs nur nachgemacht :D https://github.com/volkerrichert/ioBroker.ecotouch Ist auch nur ein Script, dass sich nicht als Adapter installieren ließe.
danke auch von meiner Seite, hatte lange nach was brauchbaren für die Zappi gesucht. Funktioniert einwandfrei nach der Anleitung.
Hi Leute, genau das habe ich gesucht. Super Projekt. Vielen Dank für die Mühe!!! Allerding benutze ich einen Hari, CT1-CT3 sind deaktiviert. CT4-CT6 sind für den Harvi. Doch die werte schwanken im unteren 1-10watt Bereich. Grid wird ziemlich genau angezeigt die auch mit den CT4-6 klemmen gemessen werden. Den Havi habe ich nicht mit einer Seriennummer im Scrip hinzugefügt. Hat einer eine Idee?
Ich habe noch folgenden LOG gefunden: State value to set for "0_userdata.0.myenergi.zappi.powerCt1" has to be type "number" but received type "string"
Hallo @JMHTB, den Harvi unterstütze ich nicht wirklich. Es kann also sein, dass du mit den CT Werten dann nichts anfangen kannst. Kann auch sein, dass dann keine brauchbaren Werte von der API zurück kommen und die Warning im Log landet. Das kann ich leider nicht testen.
Den aktuellen Ladestrom solltest du aber in "diversion" sehen und die anderen Status und Commands sollten auch passen.
Ich habe leider nur ein Script gebaut, das für meinen Anwendungsfall passt. Eigentlich hätte man auf Hub Ebene schauen müssen was alles darunter hängt (Zappis, Eddis und Harvis) und danach die Struktur nach Seriennummer der gefundenen Geräte aufbauen müssen.
Oder funkioniert was anderes nicht?
What kind of device or service you would like to see an adapter for? Myenergi Zappi Wallbox
Is an official API including documentation is available? There is an API key within the application, but not offically released. https://myenergi.info/api-f54/
Are other libraries for an integration available? There is a web interface to controll / monitor your system: https://myaccount.myenergi.com/energy-usage
Is this device already integrated in other Smart Home systems? I don't think so.
Is this device already integrated in homebridge? Might the ham adapter together with the homebridge plugin be sufficient? I don't think so.
Additional context
After you created the issue vote for yourself in the first post of the issue using the "+1"/"Thumbs up" button