test: modul zu integration von mercedes benz byocar daten

Begonnen von justme1968, 13 August 2020, 12:48:49

Vorheriges Thema - Nächstes Thema

justme1968

in diesem thread soll es um den test einen neuen fhem moduls für die mercedes benz byocar (https://developer.mercedes-benz.com/news/byocar) daten.

voraussetzung:
- unterstütztes fahrzeug muss vorhanden sein
- mercedes me account muss vorhanden sein
- das fahrzeug muss im mercedes me account angelegt sein
- wichtig: einen browser auf dem fhem system laufen lassen können so das fhem unter localhost erreichbar ist

vorbereitung:
- anmelden unter https://developer.mercedes-benz.com/
- anlegen einer neuen app unter https://developer.mercedes-benz.com/console
- anmelden für die gewünschten apis
  - aktuell sind das für byocar: vehicle status, vehicle lock status, fuel status, electric vehicle status und pay as you drive insurance
  - nicht alles ist mit allen fahrzeugen möglich
  - nach dem aktivieren eines api dauert es scheinbar bis zu mehreren stunden bis
    man das erste mal daten dafür bekommt.
- unter https://developer.mercedes-benz.com/console sollten dann für die erstellte app
  eine client id und ein client secret sichtbar und die aktivierten apis aufgelistet sein.

danach:
- das angehängte modul in fhem installieren
- mit define <name> MB_BYOCAR <vin/fin> ein fhem device für das fahrzeug anlegen
- die ClientID und ClientSecret attribute setzen
- die redirect url aus der device detail ansicht (links oben) in der mb developer console
   zusätzlich eintragen
- in der device detail ansicht links oben auf login klicken und so die verknüpfung zu mb herstellen
  - dabei mit den mercedes me account anmelden
  - und die nachgefragten apis bestätigen
- der browser sollte wieder auf der device detail seite landen

- jetzt sollten sich mit den jeweiligen set <name> statusRequest <api> daten holen lassen


todo:
- es werden noch keine daten automatisch aktualisiert -> kommt noch
- das ganze geht aktuell nur wenn fhem vom browser aus unter localhost erreichbar ist
  -> mb lässt aktuell keine ip als redirect url zu, habe ich gemeldet, mal sehen ob und wann
       das behoben wird.


edit 2020-08-14: automatischer token refresh, doorstatusrearright fix

edit 2020-08-14: fixes and cleanups

edit 2020-08-16: meldung wenn ein api zu oft abgefragt wird

edit 2020-08-16: neues attribut polls zum regelmäßigen und aktualisieren der werte. das rate limit pro api wird berücksichtig. fehlgeschlagene abfragen werden noch nicht automatisch sofort wiederholt.

edit 2020-08-18: perl meldung beim start behoben, mehr und bessere log meldungen, readings bekommen jetzt den timestamp vom api als datum -> achtung: eventuell filellog probleme

edit 2020-08-21: neues ignoreTimestamp attribut, neues reddirectURL attribut

edit 2020-09-25: umstellung auf neue oauth api version. client id und ein client secret auf die neuen aus der mb developer console aktualisieren und neu über die detail absicht einloggen.

edit 2020-11-19: mb scheint jetzt ip adressen in der redirect url zu erlauben. d.h. der umweg über das redirect attribut sollte nicht mehr nötig sein.

edit 2021-03-10: verwendet jetzt http 1.1 statt 1.0 damit der loadbalancer glücklich ist.

edit 2023-01-06: update auf neues api
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

kalunde78

bin mit den vorbereitungen soweit durch - wenn auch sehr mühsam, da die website von MB ständig fehler ausspuckt. geht dir das auch so?

die FHEM integration teste ich am abend oder spätestens morgen.

danke schon mal!

justme1968

#2
seit eben habe ich auch fehler. gestern lief alles völlig problemlos. schaut wie ein server problem aus.

edit: laut mb und einem test eben geht wieder alles.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

kalunde78

kann ich bestätigen. die website läuft ohne fehlermeldungen. der dev-support von MB hat mich auch informiert ... top!

Chris8888

Hi,

gerne kann ich mit testen. Nur mein Fhem läuft auf einem Pi...da läuft kein Browser drauf, oder?
Kann ich das anders angehen?

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

Heuberg

Hallo justme1968,
das ist ja super, ich bin dabei mit dem Testen, jedoch erst ab 24.08.
melde mich wieder
Viele Grüße
Rainer
HM, MAX, MySensors, Fronius, Conbee II, ZigBee, VCONTROL, Modbus, RPi, AVM

kalunde78

Ich bin relativ weit gekommen. Nach Eingabe von ClientID und ClientSecret sowie Bestätigung bei MB bekomme ich bei "Login" folgende Fehlermeldung:
https://api.secure.mercedes-benz.com:443: Can't load 'C:/fhem/perl/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll' for module Net::SSLeay: load_file:The specified module could not be found at C:/fhem/perl/perl/lib/DynaLoader.pm line 193.
at C:/fhem/perl/perl/vendor/lib/IO/Socket/SSL.pm line 19.
Compilation failed in require at C:/fhem/perl/perl/vendor/lib/IO/Socket/SSL.pm line 19.
BEGIN failed--compilation aborted at C:/fhem/perl/perl/vendor/lib/IO/Socket/SSL.pm line 19.
Compilation failed in require at (eval 42) line 1.
BEGIN failed--compilation aborted at (eval 42) line 1.

Liegt das an meiner Config?

justme1968

da stimmt mit dem perl IO::Socket::SSL etwas nicht. such mal ob du dazu etwas findest.eventuell mit sudo apt-get install libio-socket-ssl-perl oder sudo cpan install IO::Socket::SSL (neu) installieren.

ich sehe gerade das sind windows pfade... keine ahnung wie du da an das perl modul kommst. cpan sollte gehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Chris8888

Hallo,
ich habe jetzt auf meinem Laptop "localhost" einfach per hosts auf die IP von FHEM umgebogen.
Läuft wunderbar. :-)

Anmeldung etc hat alles fehlerfrei funktioniert.

Ich bekomme nur auf allen 5 Modulen ein "4: bad scope" und somit keinerlei Daten.

Im Log steht:

2020.08.14 13:26:31 3: e300de: unknown HttpAnswer:
2020.08.14 13:27:16 2: e300de: error: {"exveErrorId": "103", "exveErrorMsg": "Forbidden", "exveErrorRef": "fb735d37-0b37-4021-8ba8-9c79615c0097"}
2020.08.14 13:27:34 3: e300de: unknown HttpAnswer:
2020.08.14 13:30:51 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"4d832678-0b13-463d-9afb-c1c88e71a3e8"}
2020.08.14 13:31:07 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"7ef43ed3-84b9-4243-9fd7-db99569e8174"}
2020.08.14 13:32:25 3: e300de: unknown HttpAnswer:
2020.08.14 13:33:57 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"8c5b4115-3a5f-48fa-b774-2c3fb19227d1"}
2020.08.14 13:34:02 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"d95ba128-616e-440e-9f8d-11f285eaf38f"}
2020.08.14 13:34:07 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"d6c497b5-7305-496b-9068-9da140c3a29c"}
2020.08.14 13:34:13 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"91c95179-c22a-432a-b219-4b3ea40ee45c"}
2020.08.14 13:36:37 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"77bce7c6-5eb0-42df-88a0-3120759ba7f7"}
2020.08.14 13:36:41 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"8f266ffc-e18c-4e0a-90c6-bd6758246d8c"}
2020.08.14 13:36:44 2: e300de: error: {"exVeErrorId":"4","exVeErrorMsg":"Bad Scope","exVeErrorRef":"c2acdafd-2a8d-40ef-94d5-e1c0b598762d"}


Ideen?

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

justme1968

schau mal mit list <name> .OAuthToken nach ob du ein token bekommen hast.

ansonsten am besten mal verbose 4 im device schalten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Chris8888

#10
Hi,

einen Token habe ich bekommen.

Ich habe das Device nochmal komplett gelöscht und neu angelegt (inkl. Verbose 4).
Nach dem erfolgreichen Login und der Abfrage der einzelnen Modulinformationen steht folgendes im Log:

2020.08.14 15:39:08 4: e300de: requesting vehiclelockstatus container
2020.08.14 15:39:09 3: e300de: unknown HttpAnswer:
2020.08.14 15:39:18 4: e300de: requesting fuelstatus container
2020.08.14 15:39:19 3: e300de: unknown HttpAnswer:
2020.08.14 15:39:23 4: e300de: requesting vehiclestatus container
2020.08.14 15:39:25 3: e300de: unknown HttpAnswer:
2020.08.14 15:39:28 4: e300de: requesting electricvehicle container
2020.08.14 15:39:29 3: e300de: unknown HttpAnswer:


Unter Verbose 5:
020.08.14 15:43:01 4: e300de: requesting vehiclestatus container
2020.08.14 15:43:03 5: e300de: HttpAnswer: HTTP/1.1 204
Date: Fri, 14 Aug 2020 13:43:03 GMT
Connection: close
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload;
2020.08.14 15:43:03 5: e300de: HttpAnswer:
2020.08.14 15:43:03 3: e300de: unknown HttpAnswer:

Viele Grüße
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

kalunde78

Hab es jetzt auch geschafft, die Verbindung herzustellen. Bekomme aber ähnliche Meldungen wie mein Vorredner:

2020.08.14 15:44:00 2: GLC: error: {"exveErrorId": "104", "exveErrorMsg": "Not Found", "exveErrorRef": "d1a98ce8-c15b-47f8-be63-d3fccdf92dbe"}
2020.08.14 15:44:54 2: GLC: error: {"exveErrorId": "104", "exveErrorMsg": "Not Found", "exveErrorRef": "3448547c-3c61-465c-866a-c531c23f470c"}
2020.08.14 15:45:04 2: GLC: error: {"exveErrorId": "104", "exveErrorMsg": "Not Found", "exveErrorRef": "e5f6f17b-2332-4b94-8151-6d5da1f27fd4"}
2020.08.14 15:45:13 2: GLC: error: {"exveErrorId": "104", "exveErrorMsg": "Not Found", "exveErrorRef": "65a9873c-3a4e-40d0-822e-e95b3289f3fa"}

Idee?

justme1968

wenn es exveErrorId meldungen gibt stimmt mit dem token etwas nicht.
also: schauen ob es mit list <name> .OAuthToken etwas gibt. falls ja: mit deletereading <name> .OAuthToken löschen. detail seite neu laden und noch mal einloggen. oder fhem device löschen und neu anlegen.

es kann auch sein das ich den token refresh noch nicht überall automatisch drin habe. dann müsste ein set <name> refreshToken helfen. das passiert wenn zwischen anlegen/einloggen und abfrage mehr als eine stunde vergangen ist.

bei Chris8888 sind diese meldungen aber inzwischen ja weg. d.h. da ist der login jetzt ok.


wenn es nur die unknown HttpAnswer: meldung bzw. mit verbose 5 sichtbar die HttpAnswer: HTTP/1.1 204 gibt: dann werden keine daten geliefert.

das passiert wenn der wagen das nicht unterstützt oder:

nach dem freischalten eines api auf der developer seite dauert es eine wenig bis man tatsächlich daten abfragen kann. das hat bei mir z.t. mehr als eine stunde gedauert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

es gibt ihn ersten beitrag eine neue version. damit sollte der automatische token refresh jede stunde gehen. und es ist ein fehler für das doorstatusrearright reading behoben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Chris8888

Hallo zusammen,

tatschlich kommen nun in allen Modulen Daten an. Das hat jetzt mehrere Stunden gedauert, aber egal.

Ich habe noch eine weitere API gefunden, sie wird zwr nicht offiziell unter BYOCAR genannt, mak kann sie aber hinzufügen: Connected Vehicle
Findet man unter APIs und dann "Experimental".

Die Verbindung hält mit der neuen Version nun auch über die 1 Stunde an. Klasse!

Ist in den Modulen eigentlich auch das Schreiben geplant oder nur Lesen? Mich würde zB sehr das Starten der Standheizung reizen.

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.