SMA EV-Charger

Begonnen von Kamik, 07 Dezember 2020, 22:05:02

Vorheriges Thema - Nächstes Thema

Dracolein

Ich freue mich auf ein Update von Dir demnächst.

@ SMA: Leider konnte ich nichts zu den Release Notes der neuen Version finden.
Ich warte immer noch auf das "Zum Ende des Jahres" zugesagte Update, womit man (z.B.) die Wallbox per App gegen Fremdzugriff sperren kann.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

fhemsmaevcharger

Hallo Leute,

ich bin ein schlechter Hobbyprogrammierer und habe mir gerade Node-RED "draufgeschafft" und kann nun mit meinem RaspberryPi 2 die Daten meines SMA Wechselrichters über eine Dashboard anzeigen. Das ganze habe ich aber nur angefangen weil ich eigentlich den Ladevorgang über den EV-Charger "genauer" beobachten wollte. Die SMA Energy App ist ja etwas träge und kann mich auch nicht benachrichtigen wenn der Ladevorgang mal abgebrochen wurde. Für den EV-Charger gibt es aber (nach meinem Kenntnisstand) keine "einfache" Lösung das mit Node-RED umzusetzen.

Jetzt lese ich gerade diesen Beitrag und habe wieder Hoffnung!!!

Kann ich das was hier in diesem Beitrag beschrieben steht auch irgendwie mit meinem RaspberryPi und Node-RED nutzen?
Oder habe ich auf's falsche Pferd gesetzt und muss auf FHEM umsteigen?


Danke euch schon mal für eure hilfreichen Antworten!
Schöne Weihnachten!

jual

Zitat von: fhemsmaevcharger am 23 Dezember 2021, 22:01:50

Kann ich das was hier in diesem Beitrag beschrieben steht auch irgendwie mit meinem RaspberryPi und Node-RED nutzen?
Oder habe ich auf's falsche Pferd gesetzt und muss auf FHEM umsteigen?

Mit Node-RED kenne ich mich leider nicht so aus. Im Prinzip müssen aber für den Zugriff auf die Wallbox nur entsprechende URL's aufgerufen werden, die dann die notwendigen Ergebnisse liefern. In meinem Modul habe ich aktuell Curl-Aufrufe dafür verwendet. Dort müsstest du eventuell fündig werden. Ansonsten habe ich nochmal meine ersten Versuche als Python-Script angehangen.

fhemsmaevcharger

Hallo J.

danke dir!

Ich befürchte, ich bin damit aber immer noch überfordert...

Was ich in dem Python-Script erkennen kann ist folgendes:
Man ruft eine url auf und bekommt json-Daten als Antwort (oder wie das heisst...).
Das ist wie bei OpenWeatherMap (https://api.openweathermap.org/data/2.5/onecall?lat=33.441792&lon=-94.037689&exclude=hourly,daily&appid=14c19a733df61779fcbc09847dcee710).
Oder?

Und wenn man drin ist, kann man über http://192.xxx.xx.xx/api/v1/measurements/live/ die Livedaten lesen.

Aber das mit dem Login und Token ist mir zu hoch!
Könntest du hier im Forum die URL's für die Anmeldung und für das Lesen der Livedaten im Klartext mal schrieben (natürlich mit Platzhalter für die IP-Adresse und Login-Daten)?
Ich würde gerne mal sehen was ich aus der Wallbox herausholen kann?

Außerdem interessiert mich noch folgendes:
- Wie kommt man auf so etwas?
- Woher weiß man, dass die Wallbox über baseurl + '/api/v1/token/' einen Token ausspuckt?
- Und woher weiß man was man damit machen kann?
- Ist das schon hacken?
;-)

Die Curl-Aufrufe schau ich mir später noch an, sofern ich sie überhaupt finden kann...


Übrigens: FHEM läuft nun auf meinem Raspi2. Aber ich habe noch keine Ahnung wie ich damit nun irgendetwas zum Laufen bringe.
Werde mich wohl oder übel einlesen müssen...

Grüße
Thomas


fhemsmaevcharger

Hallo Zusammen,

habe nun mal das neueste Modul 76_SMAEVCharger.pm ( 0.91 ) eingebunden und meine SMA-Wallbox (SMA EV CHARGER 22  / SW 1.1.35.R) als device angelegt.
Es passiert folgendes:

2021.12.27 23:51:00 3: Wallbox - ##########  SMAEVCharger get all data  ##########
2021.12.27 23:51:00 3: telnetForBlockingFn_1640645460: port 41099 opened
2021.12.27 23:51:01 3: Wallbox - Curl Response Error Code:400:
2021.12.27 23:51:01 3: Wallbox - Login failed
2021.12.27 23:51:01 3: Wallbox - Error retrieving data

2021.12.27 23:52:01 3: Wallbox - ##########  SMAEVCharger get all data  ##########
2021.12.27 23:52:02 3: Wallbox - Curl Response Error Code:400:
2021.12.27 23:52:02 3: Wallbox - Login failed
2021.12.27 23:52:02 3: Wallbox - Error retrieving data
und das noch 6 mal.

Was mache ich falsch?

Danke und Gruß
Thomas

jual

Zitat von: fhemsmaevcharger am 28 Dezember 2021, 00:04:14
Hallo Zusammen,

habe nun mal das neueste Modul 76_SMAEVCharger.pm ( 0.91 ) eingebunden und meine SMA-Wallbox (SMA EV CHARGER 22  / SW 1.1.35.R) als device angelegt.
Es passiert folgendes:

2021.12.27 23:51:00 3: Wallbox - ##########  SMAEVCharger get all data  ##########
2021.12.27 23:51:00 3: telnetForBlockingFn_1640645460: port 41099 opened
2021.12.27 23:51:01 3: Wallbox - Curl Response Error Code:400:
2021.12.27 23:51:01 3: Wallbox - Login failed
2021.12.27 23:51:01 3: Wallbox - Error retrieving data

2021.12.27 23:52:01 3: Wallbox - ##########  SMAEVCharger get all data  ##########
2021.12.27 23:52:02 3: Wallbox - Curl Response Error Code:400:
2021.12.27 23:52:02 3: Wallbox - Login failed
2021.12.27 23:52:02 3: Wallbox - Error retrieving data
und das noch 6 mal.

Was mache ich falsch?

Danke und Gruß
Thomas

Da scheint etwas mit der URL nicht zu stimmen, mit der du auf die Wallbox zugreifst. Ist die IP-Adresse tatsächllich die Adresse, mit der du auch über den Browser auf die Wallbox zugreifen kannst? Im Prinzip solltest du die URL sowie User und Passwort nutzen, mit der du auch über den Browser auf die Wallbox kommst.

Ansonsten müsstest du mal das Attribut Verbose auf 5 setzen. Dann wird im Log jede Menge protokolliert.

fhemsmaevcharger

Hallo J,

vielen Dank für deine Rückmeldung!

Die IP-Adresse war/ist korrekt.

Ich habe das Passwort geändert und es nochmal probiert.
Im DeviceOverview sieht es nun so aus:

DeviceOverview
WallboxProcess died prematurely
Internals
CFGFN

DEF 192.168.178.87 <user> <password>
FUUID 61cad6a1-f33f-95fa-30aa-0dfa43b00cb57a32
HOST 192.168.178.87
INTERVAL 60
LASTUPDATE 0
NAME Wallbox
NR 20
PASS <password>
STATE Process died prematurely
TYPE SMAEVCharger
USER ***
Readings
state Process died prematurely 2021-12-28 10:42:34


Der Zugriff auf die Wallbox scheint also nun prinzipiell zu funktionieren?
Oder deutet die Meldung "Process died prematurely" noch auf ein Problem hin?
Wenn nein: Wie kann ich nun z.B. die aktuelle Ladeleistung mit FHEM irgendwie sichtbar machen / im Browser anzeigen?

Hier noch der der Link zum logfile:
https://drive.google.com/file/d/1jttHHM6LJ5BVmfFzSy5qFQHTxg4_fAG6/view?usp=sharing

Danke und Gruß
Thomas

jual

Zitat von: fhemsmaevcharger am 28 Dezember 2021, 10:55:30
Ich habe das Passwort geändert und es nochmal probiert.
Im DeviceOverview sieht es nun so aus:

DeviceOverview
WallboxProcess died prematurely
Internals
CFGFN

DEF 192.168.178.87 <user> <password>
FUUID 61cad6a1-f33f-95fa-30aa-0dfa43b00cb57a32
HOST 192.168.178.87
INTERVAL 60
LASTUPDATE 0
NAME Wallbox
NR 20
PASS <password>
STATE Process died prematurely
TYPE SMAEVCharger
USER ***
Readings
state Process died prematurely 2021-12-28 10:42:34


Der Zugriff auf die Wallbox scheint also nun prinzipiell zu funktionieren?
Oder deutet die Meldung "Process died prematurely" noch auf ein Problem hin?
Wenn nein: Wie kann ich nun z.B. die aktuelle Ladeleistung mit FHEM irgendwie sichtbar machen / im Browser anzeigen?


Mir scheint, dass es bei dir leider noch ein paar Baustellen gibt. Zunächst bin ich verwundert, dass im Logfile bei den Blocking-Aufrufen immer das telnet-Modul erscheint. Das kann ich im Moment gar nicht deuten, was das bedeutet.

Hast du bei der Definition des Moduls tatsächlich deinen Usernamen und das Passwort eingetragen? In deinem Device steht ja als user "<user>" und als passwort "<password>". So kann das nicht funktionieren. Wundert mich nur, dass im Log keine entsprechende Fehlermeldung zu erkennen ist (Todo für mich).

Dann scheint es so, dass nicht alle Perl-Module auf dem raspi installiert sind. So fehlt beispielsweise die Funktion decode_json(). Also mal die Perl-Module nachinstallieren.

sudo apt-get install libjson-perl libjson-xs-perl

Wenn das alles erledigt ist, dann können wir mal weiterschauen, welche Probleme noch vorhanden sind.


fhemsmaevcharger

Zitat von: jual am 28 Dezember 2021, 11:35:35
Mir scheint, dass es bei dir leider noch ein paar Baustellen gibt. Zunächst bin ich verwundert, dass im Logfile bei den Blocking-Aufrufen immer das telnet-Modul erscheint. Das kann ich im Moment gar nicht deuten, was das bedeutet.
Ich leider auch nicht...

Zitat
Hast du bei der Definition des Moduls tatsächlich deinen Usernamen und das Passwort eingetragen? In deinem Device steht ja als user "<user>" und als passwort "<password>". So kann das nicht funktionieren. Wundert mich nur, dass im Log keine entsprechende Fehlermeldung zu erkennen ist (Todo für mich).

Ich glaube nicht dass es da ein ToDo für dich gibt. Ich habe im logfile den Username und das Passwort über suche>ersetzen einfach geändert. Ich bin sicher, dass ich die korrekten Daten verwende (mehrfach gecheckt)!
Sorry, wegen der Verwirrung!

ZitatDann scheint es so, dass nicht alle Perl-Module auf dem raspi installiert sind. So fehlt beispielsweise die Funktion decode_json(). Also mal die Perl-Module nachinstallieren.
sudo apt-get install libjson-perl libjson-xs-perl

Ich hab das (nochmal) installiert. Es sah für mich aber so aus, als ob das schon vorhanden war...

ZitatWenn das alles erledigt ist, dann können wir mal weiterschauen, welche Probleme noch vorhanden sind.

Das würde mich freuen!!!

Außerdem:
Ich habe mittlerweile meinen SMA HomeManager in FHEM eingebunden.
Das hat zuerst nicht geklappt; vermutlich weil mein RasPi über einen WiFi-Dongle mit dem Netz verbunden war und dadurch die Multicast-Nachrichten vermutlich nicht sehen konnte.
=> Die Hardware/Vernetzung usw. müsste also grundsätzlich in Ordnung sein!

Hier noch ein Link zu einem neueren Logfile (inkl. "define SMAHM20 SMAEM" und "define Wallbox SMAEVCharger").
Bezüglich Wallbox ist der Status immer noch "died prematurely".

https://drive.google.com/file/d/1Uirn_lmDVCtqwBnmD0NvwxA3VaJTM4EH/view?usp=sharing

Nochmals vielen Dank und Grüße
Thomas

jual

Zitat von: fhemsmaevcharger am 30 Dezember 2021, 00:12:57
Hier noch ein Link zu einem neueren Logfile (inkl. "define SMAHM20 SMAEM" und "define Wallbox SMAEVCharger").
Bezüglich Wallbox ist der Status immer noch "died prematurely".

So, das mit dem User/Passwort hatte ich gehofft aber man weiuß ja nie ;-).

Eigentlich sieht das mit der Anmeldung zur Wallbox gar nicht so schlecht aus. Der Login scheint grundsätzlich zu funktionieren. Nur das Lesen der Daten gelingt tatsächlich noch nicht. Hier kommt immer noch die Fehlermeldung, dass "decode_json" nicht definiert ist.

Versuch mal folgendes in die Kommandozeile von fhem einzugeben. Dann müsste eigentlich ein Hashwert angezeigt werden:

{json_decode({})}

Ansonsten habe ich nochmal eine andere Beschreibung gefunden, was auf dem raspi installiert sein müsste:

sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl

fhemsmaevcharger

Guten Morgen jual!

Hier die Ergebnisse:

Vor dem Update:

>{json_decode({})}
=>Undefined subroutine &main::json_decode called at (eval 592) line 1.



Das Update selbst:

pi@raspberrypi:~ $ sudo apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Statusinformationen werden eingelesen... Fertig
libjson-perl ist schon die neueste Version (4.03000-1).
libjson-xs-perl ist schon die neueste Version (4.030-1+b1).
libwww-perl ist schon die neueste Version (6.52-1).
libwww-perl wurde als manuell installiert festgelegt.
Die folgenden zusätzlichen Pakete werden installiert:
  libconvert-binhex-perl libio-sessiondata-perl libio-stringy-perl libmime-tools-perl libossp-uuid-perl libtask-weaken-perl
  libxml-parser-perl libxmlrpc-lite-perl
Vorgeschlagene Pakete:
  libapache2-mod-perl2 libmime-lite-perl libnet-jabber-perl
Die folgenden NEUEN Pakete werden installiert:
libconvert-binhex-perl libio-sessiondata-perl libio-stringy-perl libmime-tools-perl libossp-uuid-perl libsoap-lite-perl
libtask-weaken-perl libxml-parser-perl libxmlrpc-lite-perl
0 aktualisiert, 9 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
...



Nach dem Update:

>{json_decode({})}
Undefined subroutine &main::json_decode called at (eval 251) line 1.



Dann, den EVCharger neu eingebunden, liefert LEIDER wieder folgendes:

Internals:
   CFGFN     
   DEF        192.168.178.87 <user> <password>
   FUUID      61cd7f09-f33f-95fa-a9a9-a3032af9c91fd210
   HOST       192.168.178.87
   INTERVAL   60
   LASTUPDATE 0
   NAME       mySMAEVCharger
   NR         22
   PASS       <password>
   STATE      Process died prematurely
   TYPE       SMAEVCharger
   USER       <user>
   HELPER:
     ACCESS_TOKEN
     BASEURL    https://192.168.178.87
     EXPIRE_TOKEN 0
     INTERVAL   60
     REFRESH_TOKEN
     SESSIONID 
     RUNNING_PID:
       abortFn    SMAEVCharger_Aborted
       arg        mySMAEVCharger
       bc_pid     4
       finishFn   SMAEVCharger_Done
       fn         SMAEVCharger_Run
       loglevel   4
       pid        8638
       telnet     telnetForBlockingFn_1640857340_127.0.0.1_42698
       timeout    60
       abortArg:
   READINGS:
     2021-12-30 10:43:20   state           Process died prematurely
Attributes:
   room       all
   verbose    5


Schade...
:'(

jual

#86
Vielleicht liegt das daran, dass du quasi eine sehr einfache FHEM-Umgebung nutzt und dass das die Bibliothek evetuell noch nicht eingebunden ist.

Habe gerade nochmal in meinen Code geschaut und festgestellt, dass vielleicht ein "use json" fehlt. Seltsam, dass es bei allen anderen läuft.

Bitte füge doch mal ganz oben in der Datei 76_SMAEVCharger.pm nachfolgende Zeile ein. Dort, wo auch die anderen "use-Befehle" sind:

use json;

Danach dann in FHEM ein reload 76_SMAEVCharger.pm ausführen. Besser wäre wahrscheinlich ein Neustart, sollte aber auch ohne eigentlich funktionieren.

Wenn das funktioniert, dann bau ich es bei mir in den Code und beim nächsten Update ist es dann mit drin.

Für alle zur Info. Habe mich jetzt für das SVN berechtigen lassen und werde hoffentlich am Wochenende dazu kommen, das Modul einzubinden, so dass ein Update zukünftig einfacher wird.

rudolfkoenig

ZitatHabe gerade nochmal in meinen Code geschaut und festgestellt, dass vielleicht ein "use json" fehlt. Seltsam, dass es bei allen anderen läuft.
Solche Probleme kann man Nachstellen, indem man FHEM mit einer "nackten" fhem.cfg (d.h. nur mit "define xx SMAEVCharger") startet.

fhemsmaevcharger

#88
Hallo J,

nach dem ich "use json;" hinzugefügt habe passiert folgendes:

Can't locate json.pm in @INC (you may need to install the json module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl ./FHEM/lib) at ./FHEM/76_SMAEVCharger.pm line 57.
BEGIN failed--compilation aborted at ./FHEM/76_SMAEVCharger.pm line 57.



Hilft die folgende Info noch?


pi@raspberrypi:~ $ find /usr/lib/arm-linux-gnueabihf/perl5 -iname '*json*'
/usr/lib/arm-linux-gnueabihf/perl5/5.32/JSON
/usr/lib/arm-linux-gnueabihf/perl5/5.32/auto/JSON

pi@raspberrypi:~ $ find /usr/share/perl5 -iname '*json*'
/usr/share/perl5/JSON
/usr/share/perl5/JSON.pm
pi@raspberrypi:~ $


Hier hat's scheinbar geholfen:
https://forum.fhem.de/index.php/topic,114260.msg1085389.html#msg1085389


Danke und Gruß
Thomas

jual

Zitat von: fhemsmaevcharger am 30 Dezember 2021, 15:16:46
Hallo J,

nach dem ich "use json;" hinzugefügt habe passiert folgendes:

Can't locate json.pm in @INC (you may need to install the json module) (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl ./FHEM/lib) at ./FHEM/76_SMAEVCharger.pm line 57.
BEGIN failed--compilation aborted at ./FHEM/76_SMAEVCharger.pm line 57.


Auf die Schnelle bin ich jetzt auch erst einmal überfragt und müsste erst einmal in die Tiefen einer Linux-Installation abtauchen. So, wie es aussieht sind die Perl-Module wohl nicht an der richtigen Stelle installiert oder werden nicht gefunden. Scheint also grundsätzlich erst einmal nichts mit dem Modul zu tun zu haben, sondern mit deiner Installation. Ich schau mal, ob ich einen Ansatz für eine Lösung finde, bin da aber auch nicht wirklich der Profi.

Gruß
Jürgen

Hilft die folgende Info noch?


pi@raspberrypi:~ $ find /usr/lib/arm-linux-gnueabihf/perl5 -iname '*json*'
/usr/lib/arm-linux-gnueabihf/perl5/5.32/JSON
/usr/lib/arm-linux-gnueabihf/perl5/5.32/auto/JSON

pi@raspberrypi:~ $ find /usr/share/perl5 -iname '*json*'
/usr/share/perl5/JSON
/usr/share/perl5/JSON.pm
pi@raspberrypi:~ $


Hier hat's scheinbar geholfen:
https://forum.fhem.de/index.php/topic,114260.msg1085389.html#msg1085389


Danke und Gruß
Thomas