Closed narkelo closed 2 years ago
Unfortunately I have the exact same problem.
Yesterday evening it still worked but now my BMW nodes return the same error as mentioned in the post above.
What could be the problem?
The Problem could be here:
Test new Connected Drive url https://github.com/bimmerconnected/bimmer_connected/issues/130
WIP: Use new Connected Drive url https://github.com/bimmerconnected/bimmer_connected/pull/140
BMW seems to have changed the base URLs of the service. I would think in preparation for the changes made with the new "My BMW" App launched in 07/2020.
The new App seems to have a modified API, since it can display a charging history for electric cars.
Update:
Found this Issue-Comment: https://github.com/bimmerconnected/bimmer_connected/issues/99#issuecomment-524200648
There are the following (new) ULRs:
myc-profile.bmwgroup.com/api/gateway/brs/webapi/v1/user/vehicles/WBAXXXXXXXXX/executeService
myc-profile.bmwgroup.com/api/gateway/brs/webapi/v1/user/vehicles/WBAXXXXXXXXX/remote360executionStatus?eventId=XXXXXXXXX%40bmw.de
myc-profile.bmwgroup.com/api/gateway/brs/webapi/v1/user/vehicles/WBAXXXXXXXXX/remote360downloadPackage?eventId=XXXXXXXXX%40bmw.de&dataPackageId=6443285
So the new base URL seems to be myc-profile.bmwgroup.com/api/gateway/brs/webapi/v1/user/vehicles/WBAXXXXXXXXX/
.
@masipulami are you located in rest_of_world
?
BMW did change the authorization flow here this week - see https://github.com/bimmerconnected/bimmer_connected/pull/210 for more detail.
Currently, it is not needed to use myc-profile.bmwgroup.com
as the b2vapi.bmwgroup.com
/b2vapi.bmwgroup.us
are continuing to work.
Hey everybody. Thanks for all the helpful hints. Just tried it recently for my BMW and everything still works as expected. So is this still an issue?
Thanks and regards, Sebastian
For me this Problem started on 01.01.2021, on 31.12.2020 it still worked.
Now I also get "Failed to parse data , error SyntaxError: Unexpected end of JSON input"
br christian
And right now after I wrote this message it startet working again :D
Sorry for the noise
br christian
@choenig no problem. Strange that this works not reliable. So thanks for any kind of (error) reports.
Hello, i've tried again just now but am getting:
Failed to read file: Error: ENOENT: no such file or directory, open 'currenttoken.json' [warn] [car-bmw-list:d6356d32.b0376] Failed to read token:Couldn't find token in response
@choenig no problem. Strange that this works not reliable. So thanks for any kind of (error) reports.
I think, my problem was, that I had two nodes for 'dynamic' and 'navigation' that were triggered by the same node. Since I added a delay node for one of them I did not have problems anymore.
@choenig no problem. Strange that this works not reliable. So thanks for any kind of (error) reports.
I think, my problem was, that I had two nodes for 'dynamic' and 'navigation' that were triggered by the same node. Since I added a delay node for one of them I did not have problems anymore.
@choenig Thanks for this hint. Tried it, but still "Failed to parse data , error SyntaxError: Unexpected end of JSON input"
on all nodes.
Which server do you use in your account properties? Thanks in advance.
edit: b2vapi.bmwgroup.com
doesnÂŽt work.
@krauskopf Yes, just stopped working on 23rd of november. đŹ
Hi, i get the same error with
msg : string[70] "Failed to parse data , error SyntaxError: Unexpected end of JSON input"
And i am confused, with Webadresse i have to use now. I have a mini cooper SE (Electric) and want read the batterie Infos or remaining km an so on.
I'm using the default 'www.bmw-connecteddrive.com' for my MINI Cooper SE.
What I additionally changed when it started working again: I increased the request interval to 4 minutes.
Ah, and i once deleted the currenttoken.json
which made it work again, too.
Br. Christian
Hi @choenig
What I additionally changed when it started working again: I increased the request interval to 4 minutes.
that make sense
Ah, and i once deleted the
currenttoken.json
which made it work again, too.
now is get some infos by using dynamic als request. I get all the data witch i want - for the moment.
but get an error by using carching profile ... anyway thanks for the moment
now is get some infos by using dynamic als request. I get all the data witch i want - for the moment.
but get an error by using carching profile ... anyway thanks for the moment
@choenig Great. Deleting /home/pi/currenttoken.json
did the job!
only "Data type = charging profile" still gives "Failed to parse data , error SyntaxError: Unexpected end of JSON input"
@krauskopf How about a workaround like
"Data type = charging profile"
Same for me.
by Analyse the returns i get more questions as answers :-D
what i am looking for is:
and i am looking for status of clima is on oder set to a spezial time and this infos ...
any possible way to get this data?
@Donni1966
As this data is only available on the new app, i would suppose, that we would need the new API for this data.
You will only get the current charging state, plug state and reason for last charging end.
Hello, i've tried again just now but am getting:
Failed to read file: Error: ENOENT: no such file or directory, open 'currenttoken.json' [warn] [car-bmw-list:d6356d32.b0376] Failed to read token:Couldn't find token in response
I am running this in a docker container, but can confirm with the file node that the running process has access to the container's filesystem as well as a named volume. there should be no reason the files doesn't get created.
I've tried this on a fresh container with no previous configurations and the file does not appear to get created.
As this data is only available on the new app, i would suppose, that we would need the new API for this data.
Oh .. okay. i use this new app. but the usability is ugly and there is o lot of space to top :-) unfortunately i am not a programmer to help here. I wait until the api is available.
Thanx a lot for help/info
now is get some infos by using dynamic als request. I get all the data witch i want - for the moment. but get an error by using carching profile ... anyway thanks for the moment
@choenig Great. Deleting
/home/pi/currenttoken.json
did the job!only "Data type = charging profile" still gives
"Failed to parse data , error SyntaxError: Unexpected end of JSON input"
@krauskopf How about a workaround like
- no connection or empty reply?
- delete currenttoken.json and retry once
Hello, i have the same problem. where can i find the currenttoken.json to delete it?
Thx
/home/pi/currenttoken.json
perhaps here?
Auntie Google could help to: https://www.plesk.com/blog/various/find-files-in-linux-via-command-line/
Yes ...
ok, so i have to delete this file at the ccu3. unfortunately i dont have access to the system with my Admin login. Is there a possibilty to delete the file by the exec node within node red?
really? i logged in with root@.... password of the ccu3 and so i can delete the file with out any trouble. But i use raspimatic - no share that there is a reason for. I remember, that you have access as root with all privileges.
i write me a node
[ { "id": "f5bfd29a.2b1e38", "type": "inject", "z": "505d9063.03da4", "name": "1. Init Deaman", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 960, "y": 1040, "wires": [ [ "9fe2a17.615336" ] ] }, { "id": "9fe2a17.615336", "type": "trigger", "z": "505d9063.03da4", "name": "Totmann", "op1": "false", "op2": "true", "op1type": "bool", "op2type": "bool", "duration": "20", "extend": true, "overrideDelay": false, "units": "min", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 1140, "y": 1040, "wires": [ [ "becaeebc.8d396", "14cecbe3.b15cec" ] ] }, { "id": "14cecbe3.b15cec", "type": "switch", "z": "505d9063.03da4", "name": "Only when true starting deleting", "property": "payload", "propertyType": "msg", "rules": [ { "t": "true" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 1370, "y": 1040, "wires": [ [ "d1809ef2.319c68" ] ] }, { "id": "becaeebc.8d396", "type": "ui_led", "z": "505d9063.03da4", "group": "c1f93750.9cb2a8", "order": 9, "width": 8, "height": 1, "label": "Fehler bei der Status-Abfrage/Token Löschen", "labelPlacement": "left", "labelAlignment": "left", "colorForValue": [ { "color": "gray", "value": "0", "valueType": "num" }, { "color": "green", "value": "false", "valueType": "bool" }, { "color": "red", "value": "true", "valueType": "bool" } ], "allowColorForValueInMessage": false, "name": "Non Error", "x": 1300, "y": 1100, "wires": [] }, { "id": "d1809ef2.319c68", "type": "exec", "z": "505d9063.03da4", "command": "sudo rm /home/pi/currenttoken.json", "addpay": false, "append": "", "useSpawn": "false", "timer": "", "oldrc": false, "name": "delete Token, when exist in case of error", "x": 1720, "y": 1140, "wires": [ [ "becaeebc.8d396" ], [ "becaeebc.8d396" ], [ "becaeebc.8d396" ] ] }, { "id": "c273797.d454d08", "type": "ui_button", "z": "505d9063.03da4", "name": "", "group": "c1f93750.9cb2a8", "order": 10, "width": 0, "height": 0, "passthru": false, "label": "Token manuell Löschen", "tooltip": "Tocken löschen weil Abfrage nicht geht", "color": "black", "bgcolor": "lightgreen", "icon": "fa-arrow-alt-circle-right", "payload": "true", "payloadType": "str", "topic": "", "topicType": "str", "x": 1650, "y": 980, "wires": [ [ "d1809ef2.319c68" ] ] }, { "id": "c1f93750.9cb2a8", "type": "ui_group", "name": "Wartungs Information", "tab": "ca94de6a.c8c928", "order": 3, "disp": true, "width": 8, "collapse": false }, { "id": "ca94de6a.c8c928", "type": "ui_tab", "name": "Mini Cooper SE Status", "icon": "fa-car", "order": 4, "disabled": false, "hidden": false } ]
do this automatically. i check every 15 minutes, if not true triggers, the file will delete automatically. it works very fine.
root worked. i found and deleted the file and also getting BMW data worked again.
thx for help!
perfect :-) but this will happen many times a day. So this was the reason to automate this with an Node ...
if you want copy my Dashboard an Homekit solution :-) https://gist.github.com/Donni1966/20ed2bcdfba6e178ac735f25fcb55b07
I was so happy with this node. Gives regular valuable information on my I3. ..but it stopped working March 11 this year. Error as mentioned above: 14 Jul 21:41:45 - [info] [car-bmw-get:BMW i3 94] Path: /api/vehicle/dynamic/v1/WBY...... 14 Jul 21:41:45 - [warn] [car-bmw-get:BMW i3 94] Failed to parse data , error SyntaxError: Unexpected end of JSON input
Deleting currenttoken.json didn't help. Tried multiple times.
Please help. Is there any way to debug this?
Since I upgraded to nodered:2.0.1 I face the same issue as @mocholor. Deleteing the file currenttoken.json
temporarily solves the issue. Once the token get's invalid it is not renewed and I get the error SyntaxError: Unexpected end of JSON input
error.
@oemich - I had the same problem with this and a few other API based nodes. Bumped NR to 2.0.3 (Maintenance release) which resolved this issue.
@oemich - I had the same problem with this and a few other API based nodes. Bumped NR to 2.0.3 (Maintenance release) which resolved this issue.
Thanks for the hint, I tried it and it did not solve my issue. But I did another change which fixed it ...
In my setup, I trigger every 10 minutes two requests to the BMW API (for 2 cars) and this seems to be the issue ... it is going fine for the first request and until the validity of the token ends. Afterwards none of both requests is capable to request a new token. I no delayed the second request by 30 seconds and this solved the issue for me.
It seems the plugin or BMW API has issues with concurrent requests to retrieve / store the API Token.
still none of these workarounds works for me:
is there a log or something else peek into the node and debug this?
Hey guys,
I've rewritten the code. Major changes of version 0.3.0:
Hope this makes everything more robust and will solve some of your issues. Note that the 'Efficiency' API is still implemented, but does not work on both of my cars. Seems dead. You might have a look if you can find the information in the new API calls. In general, the supported API calls and return values seem to be a little bit different depending on your model. The 'Specifications" API is working on my 330e but not on my M2. The 'Status' API is returning a lot more info on the 330e.
As a bonus, there is now a new node to call a remote service (flash headlight, blow horn, etc...). ;-)
Hi,
oh that are already a few cool things. I had for climate on and light and horn again a Homebridge plugin - that I can save me. Laststrip I have also had to get the way here.the Efficiency I have also fetched with a HTLM request and so to say disassembled.
if someone can use it:
[{"id":"9f19bbd9.a1b64","type":"function","z":"505d9063.03da4","name":"prep request","func":"global.set(\"vin\",\"WMWxxxxxxxxxxxxxxxx\")\n\nif(msg.payload==true){\n msg.headers =\n {\n \"Content-Type\" : \"application/x-www-form-urlencoded\"\n };\n msg.payload =\n {\n username: \"xxxxx@web.de\",\n password: \"xxxxxx\",\n client_id: \"dbf0a542-ebd1-4ff0-a9a7-55172fbfce35\",\n redirect_uri: \"https://www.bmw-connecteddrive.com/app/default/static/external-dispatch.html\",\n response_type: \"token\",\n scope: \"remote_services vehicle_data\" \n } \n return msg\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":635,"y":260,"wires":[["60f68c47.b6e5d4"]],"l":false},{"id":"60f68c47.b6e5d4","type":"http request","z":"505d9063.03da4","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://customer.bmwgroup.com/gcdm/oauth/authenticate","tls":"","persist":false,"proxy":"","authType":"","x":695,"y":260,"wires":[["5cf5359e.e6fe04","7af5ba1f.8b31f4","520dcef4bb5dc40a"]],"l":false},{"id":"8eb4a71f.05ddd8","type":"change","z":"505d9063.03da4","name":"","rules":[{"t":"set","p":"token","pt":"global","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":795,"y":260,"wires":[[]],"l":false},{"id":"520dcef4bb5dc40a","type":"debug","z":"505d9063.03da4","name":"Mini Dynamic","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":855,"y":260,"wires":[],"l":false},{"id":"d9601fef.b618f","type":"delay","z":"505d9063.03da4","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":575,"y":260,"wires":[["9f19bbd9.a1b64"]],"l":false},{"id":"65ef6094.da6d2","type":"link in","z":"505d9063.03da4","name":"","links":["5cf5359e.e6fe04"],"x":75,"y":360,"wires":[["61d0ebbd.a39924"]]},{"id":"61d0ebbd.a39924","type":"function","z":"505d9063.03da4","name":"set glob var token","func":"var x = msg.redirectList[0].location\n\nglobal.set(\"token\",x.slice(90,90+32));\nmsg.payload = global.get(\"token\");\nreturn msg;\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":75,"y":400,"wires":[["4fd57be6.ac4a84","27eb929a.cdf816"]],"l":false},{"id":"82f0deaf.838c48","type":"inject","z":"505d9063.03da4","name":"manual Trigger","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":195,"y":360,"wires":[["a1e83605.73fae8","4b845f4b.b43408"]],"l":false},{"id":"27eb929a.cdf816","type":"change","z":"505d9063.03da4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":135,"y":400,"wires":[["99977a3e.cca338"]],"l":false},{"id":"4fd57be6.ac4a84","type":"debug","z":"505d9063.03da4","name":"Lasttrip Out API","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":135,"y":440,"wires":[],"l":false},{"id":"a1e83605.73fae8","type":"function","z":"505d9063.03da4","name":"get lastTrip","func":"if(msg.payload==true){\n msg.headers = {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + global.get(\"token\")\n }\n msg.url = \"https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/\" + global.get(\"vin\") + \"/statistics/lastTrip\"\nreturn msg\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":255,"y":420,"wires":[["2a1f0bd4.36572c"]],"l":false},{"id":"4b845f4b.b43408","type":"function","z":"505d9063.03da4","name":"allTrips","func":"if(msg.payload==true){\n msg.headers = {\n \"Content-Type\": \"application/json\",\n \"Authorization\": \"Bearer \" + global.get(\"token\")\n }\n msg.url = \"https://b2vapi.bmwgroup.com/webapi/v1/user/vehicles/\" + global.get(\"vin\") + \"/statistics/allTrips\"\n return msg\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":255,"y":380,"wires":[["d19c7513.4c9e48"]],"l":false},{"id":"99977a3e.cca338","type":"delay","z":"505d9063.03da4","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":195,"y":400,"wires":[["4b845f4b.b43408","a1e83605.73fae8"]],"l":false},{"id":"d19c7513.4c9e48","type":"http request","z":"505d9063.03da4","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":295,"y":380,"wires":[["6424a644.4a0fa","eb3f66d.748b418","2e91ec15.5f7ecc"]],"l":false},{"id":"2a1f0bd4.36572c","type":"http request","z":"505d9063.03da4","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","x":295,"y":420,"wires":[["382a3a46.d7dc16","a1bec292.cb045","da434cd8.e352a","f1a8d36c.b2e428","ea9d1abb.473218"]],"l":false},{"id":"da434cd8.e352a","type":"function","z":"505d9063.03da4","name":"Effizienz read","func":"msg.payload=msg.payload.lastTrip.efficiencyValue*100\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":395,"y":380,"wires":[["435bee11.8cd1c","98f794ca.a44628"]],"l":false},{"id":"98f794ca.a44628","type":"function","z":"505d9063.03da4","name":"Mini Effiziens in DB","func":"var eff=msg.payload;\nmsg.payload = [{\n \"value\": eff,\n },\n {\n \"type\": \"Prozent\", \n \"name\": \"MiniEffizenz\"\n }];\n msg.measurement = \"Mini\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":455,"y":380,"wires":[["16f9567a.7b6132"]],"l":false},{"id":"2e91ec15.5f7ecc","type":"function","z":"505d9063.03da4","name":"","func":"msg.payload = msg.payload.allTrips.savedCO2greenEnergy/12.5\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":515,"y":380,"wires":[["5275aaea.70ec94"]],"l":false},{"id":"5275aaea.70ec94","type":"ui_artlessgauge","z":"505d9063.03da4","group":"c1f93750.9cb2a8","order":7,"width":2,"height":2,"name":"BĂ€ume","icon":"fa-tree","label":"BĂ€ume","unit":"tree","layout":"radial","decimals":"2","differential":false,"minmax":true,"colorTrack":"#fffb00","style":"","colorFromTheme":true,"property":"payload","secondary":"secondary","inline":false,"animate":false,"sectors":[{"val":0,"col":"#e0edd4","t":"min","dot":0},{"val":100,"col":"#cce8b5","t":"sec","dot":0},{"val":200,"col":"#b1dd8c","t":"sec","dot":0},{"val":300,"col":"#96d35f","t":"sec","dot":0},{"val":400,"col":"#77bb41","t":"sec","dot":0},{"val":500,"col":"#669c35","t":"sec","dot":0},{"val":600,"col":"#4f7a28","t":"sec","dot":0},{"val":700,"col":"#38571a","t":"sec","dot":0},{"val":800,"col":"#6f7608","t":"sec","dot":0},{"val":900,"col":"#38571a","t":"sec","dot":0},{"val":1000,"col":"#38571a","t":"max","dot":0}],"lineWidth":3,"bgcolorFromTheme":false,"diffCenter":"50","x":620,"y":380,"wires":[]},{"id":"435bee11.8cd1c","type":"ui_artlessgauge","z":"505d9063.03da4","group":"8b98191.6de21e8","order":1,"width":2,"height":2,"name":"ENERGIEEFFIZENZ","icon":"fa-car","label":"Effizenz","unit":"%","layout":"radial","decimals":0,"differential":false,"minmax":true,"colorTrack":"#aaaaaa","style":"","colorFromTheme":true,"property":"payload","secondary":"secondary","inline":false,"animate":true,"sectors":[{"val":0,"col":"#ff2600","t":"min","dot":0},{"val":25,"col":"#ff9300","t":"sec","dot":0},{"val":75,"col":"#00f900","t":"sec","dot":0},{"val":100,"col":"#00f900","t":"max","dot":0}],"lineWidth":3,"bgcolorFromTheme":false,"diffCenter":"50","x":660,"y":420,"wires":[]},{"id":"16f9567a.7b6132","type":"influxdb out","z":"505d9063.03da4","influxdb":"b1b4dbb8.76a4f","name":"","measurement":"","precision":"","retentionPolicy":"","database":"","retentionPolicyV18Flux":"","org":"","bucket":"","x":455,"y":420,"wires":[],"l":false},{"id":"f1a8d36c.b2e428","type":"debug","z":"505d9063.03da4","name":"Mini Dynamic","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":295,"y":460,"wires":[],"l":false},{"id":"a1bec292.cb045","type":"change","z":"505d9063.03da4","name":"parse last trip lengh","rules":[{"t":"move","p":"payload.lastTrip.totalDistance","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":460,"wires":[["25091b52.7c815c"]]},{"id":"25091b52.7c815c","type":"ui_text","z":"505d9063.03da4","group":"8b98191.6de21e8","order":7,"width":3,"height":1,"name":"LĂ€nge","label":"LĂ€nge: ","format":"{{msg.payload}} km","layout":"row-spread","x":610,"y":460,"wires":[]},{"id":"382a3a46.d7dc16","type":"change","z":"505d9063.03da4","name":"parse last trip duration","rules":[{"t":"move","p":"payload.lastTrip.duration","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":500,"wires":[["9b30a57.0f7e658"]]},{"id":"9b30a57.0f7e658","type":"ui_text","z":"505d9063.03da4","group":"8b98191.6de21e8","order":8,"width":3,"height":1,"name":"Dauer","label":"Dauer","format":"{{msg.payload}} Minuten","layout":"row-spread","x":610,"y":500,"wires":[]},{"id":"c1f93750.9cb2a8","type":"ui_group","name":"Wartungs Information","tab":"ca94de6a.c8c928","order":3,"disp":true,"width":6,"collapse":true},{"id":"8b98191.6de21e8","type":"ui_group","name":"Zustand","tab":"ca94de6a.c8c928","order":1,"disp":true,"width":6,"collapse":false},{"id":"b1b4dbb8.76a4f","type":"influxdb","hostname":"192.168.2.116","port":"8086","protocol":"http","database":"topics","name":"InfluxDB auf Homebridge01","usetls":false,"tls":"","influxdbVersion":"1.x","url":"","rejectUnauthorized":false},{"id":"ca94de6a.c8c928","type":"ui_tab","name":"Mini Cooper SE Status","icon":"fa-car","order":5,"disabled":false,"hidden":false}]
Status and Destination I have never seen - cool thing! Respect for this.
I'll test it out the days ... thank you again. byby, Michael
Very nice, thanks for your work :-)
Br Christian
Hello, thank you for your work on this code!
I was trying to implement but am getting the following error message:
Failed to parse data , error SyntaxError: Unexpected end of JSON input
the node red console output this:
this is for a USA based BMW connected drive account. If there's any additional details that I can provide please let me know.
thank you.