NEWS
Adapter: bmw zum Auslesen von BMW's ConnectedDrive Daten
-
Hi fsjoke,
hier nun die debug auswertung. Allerdings steht da nur, dass der Request versendet wurde.
Der fehler ist dann, dass dell.includes keine Funktion ist.
!
! bmw.0 2017-09-13 11:50:41.814 info BMW car WBAxxxxxxxxxxxxxx with 0 data points received bmw.0 2017-09-13 11:50:41.814 warn Error in covert car data: TypeError: dell.includes is not a function bmw.0 2017-09-13 11:50:40.946 info debug: Request specs for WBAxxxxxxxxxxxxxx on /api/vehicle/specs/v1/WBAxxxxxxxxxxxxxx bmw.0 2017-09-13 11:50:40.945 info debug: Request service for WBAxxxxxxxxxxxxxx on /api/vehicle/service/v1/WBAxxxxxxxxxxxxxx bmw.0 2017-09-13 11:50:40.943 info debug: Request servicepartner for WBAxxxxxxxxxxxxxx on /api/vehicle/servicepartner/v1/WBAxxxxxxxxxxxxxx bmw.0 2017-09-13 11:50:40.942 info debug: Request remote_history for WBAxxxxxxxxxxxxxx on /api/vehicle/remoteservices/v1/WBAxxxxxxxxxxxxxx/history bmw.0 2017-09-13 11:50:40.939 info debug: Request remote_execution for WBAxxxxxxxxxxxxxx on /api/vehicle/remoteservices/v1/WBAxxxxxxxxxxxxxx/state/execution bmw.0 2017-09-13 11:50:40.938 info debug: Request navigation for WBAxxxxxxxxxxxxxx on /api/vehicle/navigation/v1/WBAxxxxxxxxxxxxxx bmw.0 2017-09-13 11:50:40.937 info debug: Request dynamic for WBAxxxxxxxxxxxxxx on /api/vehicle/dynamic/v1/WBAxxxxxxxxxxxxxx?offset=-120 bmw.0 2017-09-13 11:50:40.936 info debug: Request efficiency for WBAxxxxxxxxxxxxxx on /api/vehicle/efficiency/v1/WBAxxxxxxxxxxxxxx bmw.0 2017-09-13 11:50:40.688 info debug: Command to refresh data received from system.adapter.admin.0 bmw.0 2017-09-13 11:50:40.686 info debug: stateChange called forbmw.0._RefreshData = { val: true, ack: false, ts: 15xxxxxxxxxxx, q: 0, from: 'system.adapter.admin.0', lc: 15xxxxxxxxxxx } bmw.0 2017-09-13 11:50:25.273 info BMW Adapter initialization finished, will scan ConnectedDrive every 60 minutes. bmw.0 2017-09-13 11:50:25.262 info BMW car WBAxxxxxxxxxxxxxx with 0 data points received bmw.0 2017-09-13 11:50:25.261 warn Error in covert car data: TypeError: dell.includes is not a functi !
-
Der fehler ist dann, dass dell.includes keine Funktion ist. `
dell sollte aus deiner lösch-Liste im adapter.config generiert werden. Hast du da nichts drinnen (weil du ALLES? anzeigen willst)?
Egal, check mal und gib mal mindestens einen Leerschritt ein oder dazu damit es neu abgespeichert und der Adapter neu geladen wird.
Welche node-Version verwendest du? Der Fehler würde bedeuten dass deine Eingabe im Config kein String ist!
p.s.: Habe den spelling-error in der Fehlermeldung korrigiert!
-
@fsjoke:Welche node-Version verwendest du? Der Fehler würde bedeuten dass deine Eingabe im Config kein String ist! `
Node Version ist 4.8.1dell sollte aus deiner lösch-Liste im adapter.config generiert werden. Hast du da nichts drinnen (weil du ALLES? anzeigen willst)? `
aaah ok. dann steht dell für delete ? mmh
hier ist meine komplette config:
Services die ConnectedDrive abfragen soll:
debug! efficiency, dynamic, navigation, remote_execution, remote_history, servicepartner, service, specs
Objekte/namen die nicht übertragen werden sollen
modelType, series, basicType, brand, licensePlate, hasNavi, bodyType, dcOnly, hasSunRoof, hasRex, steering, driveTrain, doorCount, vehicleTracking, isoCountryCode, auxPowerRegular, auxPowerEcoPro, auxPowerEcoProPlus, ccmMessages
Objekte/namen die in übergeordnete Hirarchie wandern sollen:
attributesMap, vehicleMessages, cbsMessages, twoTimeTimer, characteristicList, lifeTimeList, lastTripList, remoteServiceEvent
Arrays die in Objekte konvertiert werden müssen (object|name|wert|unit durch ',' getrennt):
lastTripList|name|lastTrip|unit, specs|key|value, service|name|services, cdpFeatures|name|status, cbsMessages|text|date, lifeTimeList|name|value, characteristicList|characteristic|quantity, remote_history|eventId
-
Übrigens, habe ein Vis-Widget generiert welches einen button erzeugt mit dem man in Google-Map die Position des Autos sehen kann:
[{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false, "g_gestures":false,"g_signals":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==", "signals-val-0":"_","signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0, "signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png", "signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==", "signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0, "signals-vert-2":0,"signals-hide-edit-2":false,"html":" \n \n", "signals-oid-0":"bmw.0.-vin-.dynamic.google_maps_link"},"style":{"left":"820px","top":"990px","width":"200px","height":"35px"},"widgetSet":"basic"}]
Ersetzt -vin- durch euren vin.
Wenn ihr auf den Button klickt sollte Google-Maps angezeigt werden und versuchen die route zu der Auto-Position zu berechnen!
-
Hi fsjoke,
vielen Dank für die neue Version.
Den Fehler habe ich nicht mehr, bin aber nicht sicher, ob das daran liegt, dass tatsächlich der BMW service nicht zur Verfügung steht ?
Die Meldung ist: Error in GetCars, most probably the server is down! No data is changed: RequestVehicles Error, could niot get data for Vehicles!
vG Looxer
-
Die Meldung ist: Error in GetCars, most probably the server is down! No data is changed: RequestVehicles Error, could niot get data for Vehicles!
vG Looxer `
Genau diese Meldung hab ich auch.
-
Genau diese Meldung hab ich auch. `
allerdings ist über das Internet alles funktional ok. Fernsteuern geht von da aus.
Kann ja trotzdem was mit einem BMW Server was kaputt sein. (API bezogen)
oder es ist ein Problem mit dem Adapter. Zurück auf die frühere Version ist noch nicht implementiert.
-
Hallo allesamt!
Habe 1.2.3 auf Git (und npm).
Danke für euer Feedback!
Habe den Code für die Fernsteuerung verbessert und auch die Fehlerbehandlung wenn Services nicht vorhanden sind.
Es sollte auch ein Problem das erst nach ~2h auftritt (wenn BMW die Erlaubnis für die Abfrage beendet) behoben sein.
Danke im Voraus für weiteren Feedback!
p.s.: Dr Adapter ist jezt auch in ioBroker-Liste. Das bedeutet ihr könnt im Admin ohne Git den Adapter installieren!
p.p.s: Leider ist der BMW-server (wie so oft) nicht verfügbar und ich kann nicht weiter testen!
-
Hi fsjoke,
ich habe es jetzt mit version 1.2.3 probiert.
Das Log ist immer noch identisch, die Fehlermeldung ist etwas anders:
warn Error in GetCars, most probably the server is down! No data is changed: RequestVehicles Error to get data for Vehicles : [TypeError: dell.includes is not a function]!
Also ist das "dell"-Problem noch da.
Kann ich noch irgendwas tun, um zur Aufklärung beizutragen ?
vG Looxer
-
Hi fsjoke,
warn Error in GetCars, most probably the server is down! No data is changed: RequestVehicles Error to get data for Vehicles : [TypeError: dell.includes is not a function]!
Also ist das "dell"-Problem noch da.
Kann ich noch irgendwas tun, um zur Aufklärung beizutragen ?
vG Looxer `
Hallo Looxer!
Ich habe V 1.2.4 auf Git (adapter ist schon in ioBroker gelistet, du kannst in jetzt dort auch im Git-menü finden) um noch mehr debug einzubauen.
Habe leider auch jeden Tag einige Minuten wo die Server nicht verfügbar sind aber permanent sollte es nicht sein.
Versiche mal den Server auf http://www.bmw-connecteddrive.de zu stellen.
und wenn du noch immer die Probleme hast schalte auf debug wie oben beschrieben und kopiere mir die erhaltenen _originalData-Werte in eine PM damit ich mir das anschauen kann was BMW bei dir so liefert!
-
Guten Morgen,
kurze Rückinfo von mir:
Habe jetzt die 1.2.4 drauf und Klima, Hupe, auf/zu funktioniert. -> Super und danke schön!
Naviangaben/dynamic-angaben sind weiterhin nicht die richtigen. Werden offensichtlich nicht (so oft) übertragen.
Wenn ich bei objekte den Taster "Starte Lichthupe" drücke kommt im log:
Wenn ich ein widget in vis nehmen (hqwidget on/off und bei Wert taster) dann kommt im log:
Das ganze funktioniert mit dem vis taster auch; aber es kommt ne Fehlermeldung.Hat jemand eine Idee welchen Taster man nehmen soll ?
mfg
Dieter
Nachtrag:
Der Unterschied ist wohl der, dass das widget auch false sendet; was das Object wohl nicht tut.
Also, gibt es einen Taster der bei false nichts sendet; sondern eben nur true übermittelt.
-
ich bekomme leider den gleichen Fehler mit dem dell:
hier die komplette Zeile:
debug: http:// www. bmw-connecteddrive .com/api/vehicle/remoteservices/chargingprofile/v1/WBxxxxxx resulted status code: 404: { server: 'Apache', 'access-control-allow-methods': 'POST, GET, OPTIONS, PUT, DELETE, HEAD', 'access-control-allow-credentials': 'true', 'access-control-allow-headers': 'Authorization, Origin, X-c2b-Authorization, X-c2b-mTAN, X-Requested-With, Content-Type, Accept, Cache-Control', 'max-forwards': '20', 'x-correlationid': 'Id-2461be59cc137f000000000024e75f13 0', 'x-nodeid': '01', 'x-powered-by': 'JOY', expires: 'Sun, 17 Sep 2017 11:48:53 GMT', 'cache-control': 'max-age=0, no-cache, no-store', pragma: 'no-cache', date: 'Sun, 17 Sep 2017 11:48:53 GMT', 'content-length': '0', connection: 'close', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload' }
ist ein 328i
3562_bmw.png
3562_bmw2.png -
Hi,
habe das gleiche Problem wie NetFelix.
bmw.0 2017-09-18 10:55:00.385 info BMW Adapter initialization finished, will scan ConnectedDrive every 60 minutes. bmw.0 2017-09-18 10:55:00.378 warn Error in GetCars, most probably the server is down! No data is changed: RequestVehicles Error to get data for Vehicles : [TypeError: dell.includes is not a function]! bmw.0 2017-09-18 10:55:00.378 info debug: Added car location Maps-Link for Waalderstraat 84, 1791 EC Den Burg, Netherlands with latitude/longitude bmw.0 2017-09-18 10:55:00.193 info debug: Added car location Maps-Link for Waalderstraat 84, 1791 EC Den Burg, Netherlands with gps_lat/gps_lng bmw.0 2017-09-18 10:54:58.046 info debug: www.bmw-connecteddrive.com/api/vehicle/remoteservices/chargingprofile/v1/WBA8H123456789123 resulted status code: 404: { server: 'Apache', 'access-control-allow-m bmw.0 2017-09-18 10:54:57.894 info debug: www.bmw-connecteddrive.com/api/vehicle/servicepartner/v1/WBA8H123456789123 resulted status code: 404: { server: 'Apache', 'access-control-allow-methods': 'POST, bmw.0 2017-09-18 10:54:57.131 info debug: Request map_download for WBA8H123456789123 on /api/me/service/mapupdate/download/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request store for WBA8H123456789123 on /api/store/v2/WBA8H123456789123/offersAndPortfolios bmw.0 2017-09-18 10:54:57.131 info debug: Request specs for WBA8H123456789123 on /api/vehicle/specs/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request service for WBA8H123456789123 on /api/vehicle/service/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request servicepartner for WBA8H123456789123 on /api/vehicle/servicepartner/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request remote_history for WBA8H123456789123 on /api/vehicle/remoteservices/v1/WBA8H123456789123/history bmw.0 2017-09-18 10:54:57.131 info debug: Request remote_chargingprofile for WBA8H123456789123 on /api/vehicle/remoteservices/chargingprofile/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request remote_execution for WBA8H123456789123 on /api/vehicle/remoteservices/v1/WBA8H123456789123/state/execution bmw.0 2017-09-18 10:54:57.131 info debug: Request navigation for WBA8H123456789123 on /api/vehicle/navigation/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:57.131 info debug: Request dynamic for WBA8H123456789123 on /api/vehicle/dynamic/v1/WBA8H123456789123?offset=-120 bmw.0 2017-09-18 10:54:57.131 info debug: Request efficiency for WBA8H123456789123 on /api/vehicle/efficiency/v1/WBA8H123456789123 bmw.0 2017-09-18 10:54:56.778 info debug: Initialized, client_id= 'aJ3qsnVkdcsVlEby4Y0RRoY5hNDNTg9i' bmw.0 2017-09-18 10:54:56.519 info debug: Initialize for server www.bmw-connecteddrive.com bmw.0 2017-09-18 10:54:56.410 info BMW will scan the following services: efficiency, dynamic, navigation, remote_execution, remote_chargingprofile, remote_history, servicepartner, service, specs, store, map_download. bmw.0 2017-09-18 10:54:56.409 info debug: Adapter will run in debug mode because 'debug!' flag as first letters in services! bmw.0 2017-09-18 10:54:55.981 info starting. Version 1.2.4 in /opt/iobroker/node_modules/iobroker.bmw, node: v4.8.3 host.openmediavault 2017-09-18 10:54:55.731 info instance system.adapter.bmw.0 started with pid 20437
Das manuelle Einloggen über die Webseite funktioniert Problemlos.
Gruß
Mirko
-
Neue Version 1.3.0 auf Git!
Es kann Wertenamen umbenennen (damit kann man seine Fahrzeugnummer z.B. auf 'Auto_Frau' ändern).
Der Adapter versteht jetzt auch 'sendTo' Kommandos.
sendTo('bmw.0','send','Auto_Frau.Versperren')
würde den Wagen den sie auf 'Auto_Frau' umbenannt haben versperren,sendTo('bmw.0','send','_DatenNeuLaden')
würde einen Refresh ausführen undsendTo('bmw.0','debug','on')
(es geht auch 0,1,on,off,ein,aus,true,false) würde debug ein- oder ausschalten.@wendy2702 und @NetFelix: Ich habe auch dem 'TypeError: dell.includes' versucht beizukommen da ich deine node-Version mit 4.x erkannt habe und das beherrscht anscheinend Array.prototype.includes nicht ohne Hilfe. Habe eine eigene Funktion geschrieben um es zu umgehen. Hoffe es funktioniert jetzt!
Wenn euer Feedback gut ist wird es auch auf npm veröffentlicht!
p.s.: Ich selbst habe node v6.11.3 laufen. v6.x ist die letzte LTE supported version, im Oktober kommt dann v8 als LTE denke ich. Ich habe keinen V4-Installation mehr daher konnte ich da nicht testen!
-
@fsjoke:Ich habe auch dem 'TypeError: dell.includes' auf versucht beizukommen da ich deine node-Version mit 4.x erkannt habe und das beherrscht anscheinend Array.prototype.includes nicht ohne Hilfe. Habe eine eigene Funktion geschrieben um es zu umgehen. Hoffe es funktioniert jetzt! `
habs gerade probiert. States werden angelegt und es gibt keine Fehler im Log.
Ich teste weiter.
Vielen Dank für die neue Version.
vG Looxer
-
Guten Morgen,
auch gerade installiert und es werden States angelegt.
Im Log das gesehen:
2017-09-19 07:08:50.921 - [32minfo[39m: bmw.0 debug: www.bmw-connecteddrive.com/api/vehicle/remoteservices/chargingprofile/v1/WBA8H91050K746296 resulted status code: 404: { server: 'Apache', 'access-control-allow-methods': 'POST, GET, OPTIONS, PUT, DELETE, HEAD', 'access-control-allow-credentials': 'true', 'access-control-allow-headers': 'Authorization, Origin, X-c2b-Authorization, X-c2b-mTAN, X-Requested-With, Content-Type, Accept, Cache-Control', 'max-forwards': '20', 'x-correlationid': 'Id-62a6c0591744d900000000005970b0de 0', 'x-nodeid': '02', 'x-powered-by': 'JOY', expires: 'Tue, 19 Sep 2017 05:08:50 GMT', 'cache-control': 'max-age=0, no-cache, no-store', pragma: 'no-cache', date: 'Tue, 19 Sep 2017 05:08:50 GMT', 'content-length': '0', connection: 'close', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload' }
Denke das liegt daran das ich kein "E" bzw. Hybrid habe, oder?
Dann noch das:
2017-09-19 07:08:50.974 - [32minfo[39m: bmw.0 debug: Request remote_history for WBA8H123456789123 on /api/vehicle/remoteservices/v1/WBA8H123456789123/history 2017-09-19 07:08:59.671 - [32minfo[39m: bmw.0 debug: Service unavailable. Please try later from www.bmw-connecteddrive.com 2017-09-19 07:08:59.674 - [32minfo[39m: bmw.0 debug: request for /api/vehicle/remoteservices/v1/WBA8H123456789123/history made error 'Service unavailable. Please try later from www.bmw-connecteddrive.com' 2017-09-19 07:08:59.725 - [32minfo[39m: bmw.0 debug: Request servicepartner for WBA8H123456789123 on /api/vehicle/servicepartner/v1/WBA8H123456789123
Ist das "normal"!?
Mein Standort war auch falsch. Laut IOS App gestern Abend zum letzten mal aktualisiert, ausgelesen wurde aber immer noch ein Standort von vor zwei Wochen. Nachdem ich über die App "Mein Fahrzeug Orten" gemacht habe wurde beim erneuten start des Adapters die richtigen werte angezeigt.
Gruß
Mirko
-
@fsjoke: Super, Funkioniert jetzt
Vielen Dank
-
Hallo wendy2702!
Leider: das ist normal! die BMW-server sind leider öfter nicht erreichbar, wenn dann ein solcher Fehler passiert werden die Daten nicht ausgelesen!
Die Meldung:
Service unavailable. Please try later …
kommt vom BMW-Server als Antwort.Da hilft nur noch einen Reload zu machen (Adapter braucht normal nicht restarted zu werden wenn keine config geändert wird)!
-
Wenn du ein remoteservice startest wird zwar ein Wert zurückgegeben aber der Adapter muss selbst alle 5s nachfragen ob das service ausgeführt wurde, bei jeder Nachfrage speichert er das Ergebnis (übersetzt auf deutch) im wert des services.
Solange BMW das service nicht als ausgeführt zurückmeldet oder eine bestimmte Mindestzeit (ich hab sie verdoppelt auf 20s, BMW will mindestens 10s aber ist nie in 10s fertig) verstrichen ist kann kein neues service ausgeführt werden. Nach 20 Abfragen (x 5 Sekunden) hör ich auf auf BMW zu warten und erlaube neues senden, dann schreib ich was von abgebrochen in die value.
Also solange der timer nicht abgelaufen ist oder BMW nict error oder executed meldet kann man kain anderes service starten und bekommt diese Meldung…
-
@fsjoke:Wenn du ein remoteservice startest wird zwar ein Wert zurückgegeben aber der Adapter muss selbst alle 5s nachfragen ob das service ausgeführt wurde, bei jeder Nachfrage speichert er das Ergebnis (übersetzt auf deutch) im wert des services.
Solange BMW das service nicht als ausgeführt zurückmeldet oder eine bestimmte Mindestzeit (ich hab sie verdoppelt auf 20s, BMW will mindestens 10s aber ist nie in 10s fertig) verstrichen ist kann kein neues service ausgeführt werden. Nach 20 Abfragen (x 5 Sekunden) hör ich auf auf BMW zu warten und erlaube neues senden, dann schreib ich was von abgebrochen in die value.
Also solange der timer nicht abgelaufen ist oder BMW nict error oder executed meldet kann man kain anderes service starten und bekommt diese Meldung… `
Ich glaub ich hab mich nicht deutlich ausgedrückt.
Die Meldung rührt doch da her, dass das widget als taster fungiert.
d.h. es wird true gesendet und dein adapter sendet den befehl.
aber dann kommt vom widget gleich danach ein false (weil ja taster); und dieses false lehnt dein adapter ab (ist ja auch gut so; er soll ja auch nur auf true reagieren).
Die Frage war:
Gibt es widget was eben nur true sendet.
Deine taster bei den objekten senden ja auch nur true.
Und wenn ich ein manuelles script schreibe (ist schon erledigt); wird ja auch nur true gesendet.
mfg