Correct, as they‘re not part of the MQTT integration itself.
I can link the Telegram binding for a better understanding,
Unfortunately I cannot make this work. I’m using the Telegram approach, but the tokens are not received. I was wondering if I create 2 items named ‘tgReplyId’ and ‘tgLastMessageText’; should I still adapt the code below:
var tgReplyItem = 'tgReplyId'; // Item that receives the reply ID
var tgLastMessageItem = 'tgLastMessageText'; // Item that receives the last message text
Can you share some logs with a filter set to BMW_Token and replacing logger.debug with logger.info?
It´s hard to help without knowing which part doesn´t work.
I was already thinking about a method that doesn´t need Telegram.
I could integrate a global variable that works as a switch between Telegram and log output.
This way one could do the setup with just the log viewer.
Hi,
I changed some of the codes (for privacy reasons), but here you can find some of the logging. As you will see, I never reach the point where I receive the tokens:
2025-11-09 17:42:00.942 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Starting BMW Device Code Flow for Client ID: 5c88702b-8fa2-4bf9-907f-e7cc49a02820
2025-11-09 17:42:00.945 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Generated code_verifier and code_challenge
2025-11-09 17:42:00.948 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Code Verifier: kP9ovenMena63T1otOBGAMGJ2UZNU4rJz5NizJZH5T9M
2025-11-09 17:42:00.950 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Code Challenge: An1CYKndA1io4D4hkWBDTFRzb5u0u0lbf-yTgquAGkQ
2025-11-09 17:42:01.029 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Received response: {“user_code”:“eDY5cZZs”,“device_code”:“eyJ0eXAiOiJKVKJYRCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2Zvcmdlcm9jay1ibHVlLnByb2QtZ2NkbS5ldS1jZW50cmFsLTEuYXdzLmNsb3VkLmJtdzo0NDMvYW0vb2F1dGgyIiwibmJmIjoxNzYyNzA2NTIxLCJ1c2VyX2NvZGUiOiJlRFk1Y1pacyIsImlzcyI6Imh0dHBzOi8vZm9yZ2Vyb2NrLWJsdWUucHJvZC1nY2RtLmV1LWNlbnRyYWwtMS5hd3MuY2xvdWQuYm13OjQ0My9hbS9vYXV0aDIiLCJleHAiOjE3NjI3MDY4MjEsImlhdCI6MTc2MjcwNjUyMSwianRpIjoiMmJjMDZhN2QtYzVmOS00NTNmLItMTBhMjZkOWI4NjMwIn0.eUPTHZzMVMifZCy63Z_OzQGzOBm4DIl0ibV6LPuk_NA”,“interval”:5,“verification_uri_complete”:“https://customer.bmwgroup.com/oneid/link?user_code=eDY5cZZs",“verification_uri”:“https://customer.bmwgroup.com/oneid/link”,"expires_in”:300}
2025-11-09 17:42:01.035 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Device Code and User Code successfully received and stored.
2025-11-09 17:42:01.037 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - User Code: XXXXXXXX
2025-11-09 17:42:01.045 [INFO ] [ion.openhab-js.BMW_Token_Setup_Step1] - Verification URI: https://customer.bmwgroup.com/oneid/link?user_code=XXXXXX
2025-11-09 17:42:30.919 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-11-09 17:42:30.921 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Exception during token refresh: TypeError: null has no such function “toString”
2025-11-09 17:42:30.941 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error type: TypeError
2025-11-09 17:42:30.941 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error message: null has no such function “toString”
2025-11-09 17:42:30.943 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Stack trace: TypeError: null has no such function “toString”
Please use the code block for your logs, this makes them easier to read.
You can use it manually by putting three ` before and after your logs.
Example:
```
Your logs
```
I reworked the rule for the setup and now you can choose between telegram and logviewer mode.
The steps are the same and just use a different way to output the URL to the user.
Edit: I tested both methods and they worked.
Your error messages looks like one of the items is still in the state NULL…
Error message: null has no such function “toString”
Just to be sure, you open the URL to authorize your Client_ID?
I received the tokens now via the logviewer option. Thanks for that!
What is still confusing for me is: Username = Your gcid / username. What is the gcid? Should I combine gcid and username OR should I make a choice between gcid and username?
Good point!
I didn‘t implement the gcid because i already had it from the manual setup.
Let me check this tomorrow.
New update for the items, BMW_Token_Setup.js and BMW_ID_Token_Update.js!
The setup will now check if there´s a username stored in the item, in my example carBMW_Username.
If there´s no username stored, it´ll store the username.
If the username is not the same, it´ll update the username. (Which shouldn´t happen)
Or does nothing if the username stays the same.
I did a quick test and it was working for me.
The state of carBMW_Username was NULL and it was updated to the username received in the token response.
So far, so good. I was able to configure the MQTT broker and create a first channel. Big thank you! I assume that sending commands to the car is not possible yet?
It‘s not possible anymore.
Maybe BMW will add this later.
I’m not able to run BMW_Token_Setup.js and assume this is because of my java environment I use
automation = jsscripting
transformation = map, exec, regex, jsonpath, js
Can that be the reason? I tried to change the code with some AI help to GraalJS
const { actions, items, rules, log, ir } = require('@runtime');
const triggers = require('@openhab/triggers');
But at the end I get a error when I save the file
Error during evaluation of script ‘/openhab/conf/automation/js/BMW_Token_Setup.js’: java.lang.NullPointerException: Cannot invoke “java.nio.file.Path.resolve(String)” because the return value of “java.nio.file.Path.getRoot()” is null
Is there a java expert who can give some tips to find the issue?
Sorry, i don´t have any idea what the issue is.
I wasn’t able to get this working at first (I assume different java implementation). After some searching I found a Python solution that worked for me, but I wanted a JavaScript-based approach. I ended up creating a solution for my environment using JS scripting and Docker. I reused code and ideas from both.
Prerequisites:
-
Automation = JS scripting
-
Telegram and MQTT bindings installed and working
-
A BMW ClientID
I’m not an experienced developer, so there may be bugs and you might not like the code, but it works for me.
What I can provide is a BMWMqtt.things file with broker and datastream, the JS file, and the required items. Everything is file-based.
I got it working for a couple of weeks, but since a couple of days it is not working anymore. I get the following log. Any ideas?
`2025-12-05 23:52:30.267 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-05 23:52:44.741 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'customer.streaming-cardata.bmwgroup.com'. Next attempt in 60000ms
2025-12-05 23:52:44.741 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'customer.streaming-cardata.bmwgroup.com' with clientid 5c89702b-8ea2-4bf9-907f-e7cc49a02821
2025-12-05 23:53:00.114 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 05.12.2025 23:53:00, expiry of token: 01.01.1970 01:00:02
2025-12-05 23:53:00.114 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-05 23:53:00.114 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-05 23:53:00.179 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-05 23:53:00.179 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-05 23:53:00.179 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-05 23:53:00.179 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-05 23:53:00.180 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed with BMW API error. Will retry in 30 seconds.
2025-12-05 23:53:00.180 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-05 23:53:30.182 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-05 23:53:30.183 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-05 23:53:30.256 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-05 23:53:30.256 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-05 23:53:30.257 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-05 23:53:30.257 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-05 23:53:44.742 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'customer.streaming-cardata.bmwgroup.com'. Next attempt in 60000ms
2025-12-05 23:53:44.743 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'customer.streaming-cardata.bmwgroup.com' with clientid 5c89702b-8ea2-4bf9-907f-e7cc49a02821
2025-12-05 23:54:00.114 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 05.12.2025 23:54:00, expiry of token: 01.01.1970 01:00:02
2025-12-05 23:54:00.114 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-05 23:54:00.114 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-05 23:54:00.179 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-05 23:54:00.180 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-05 23:54:00.180 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-05 23:54:00.180 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-05 23:54:00.180 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed with BMW API error. Will retry in 30 seconds.
2025-12-05 23:54:00.181 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-05 23:54:30.182 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-05 23:54:30.183 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-05 23:54:30.257 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-05 23:54:30.258 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-05 23:54:30.258 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-05 23:54:30.258 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
```
Hi, is docker required for your solution? Could you post your solution in this thread?
BMW had a hickup.
It´s no issue of the integration.
I tried once again today. I assume that BMW is still having an issue?
No, i´m online again.
You probably need to do the authorization again.
No docker is not a requirement. If not you may need to change the path to things folder. I will clean it this week and than share it.
Hi,
I still get the following errors. The token setup works fine via the Cardata Customer portal (not via Telegram or log file), but the updating is not working for me:
`
9:00.541 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:29:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:29:00.542 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - The access token is still valid -> wait
2025-12-10 23:30:00.542 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:30:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:30:00.542 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - The access token is still valid -> wait
2025-12-10 23:31:00.541 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:31:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:31:00.541 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - The access token is still valid -> wait
2025-12-10 23:31:32.797 [INFO ] [ort.loader.AbstractScriptFileWatcher] - (Re-)Loading script 'C:\Users\Tdewaele\Desktop\OPENHAB\conf\automation\js\BMW_Token_Refresh.js'
2025-12-10 23:31:32.954 [INFO ] [.openhab.automation.openhab-js.rules] - Adding rule: BMW Token Refresh
2025-12-10 23:31:32.957 [INFO ] [.openhab.automation.openhab-js.rules] - Adding rule: BMW Token Refresh - Manual
2025-12-10 23:32:00.960 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:32:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:32:00.960 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - The access token is still valid -> wait
2025-12-10 23:33:00.957 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:33:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:33:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-10 23:33:00.959 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:33:00.979 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.io.EOFException: @67210ce7::DecryptedEndPoint@2ebabc8b{l=/192.168.200.72:61485,r=customer.bmwgroup.com/35.227.244.195:443,OPEN,fill=-,flush=-,to=3206748/0}
2025-12-10 23:33:00.979 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - No valid response received from BMW. Tokens will NOT be updated!
2025-12-10 23:33:00.980 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed. Will retry in 30 seconds.
2025-12-10 23:33:00.980 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-10 23:33:30.981 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-10 23:33:30.982 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:33:31.245 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:33:31.246 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:33:31.246 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:33:31.246 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:34:00.958 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:34:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:34:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-10 23:34:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:34:01.069 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:34:01.069 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:34:01.069 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:34:01.070 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:34:01.070 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed with BMW API error. Will retry in 30 seconds.
2025-12-10 23:34:01.070 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-10 23:34:31.073 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-10 23:34:31.073 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:34:31.142 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:34:31.142 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:34:31.142 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:34:31.142 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:35:00.958 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:35:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:35:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-10 23:35:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:35:01.029 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:35:01.030 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:35:01.030 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:35:01.030 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:35:01.030 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed with BMW API error. Will retry in 30 seconds.
2025-12-10 23:35:01.030 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-10 23:35:31.032 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-10 23:35:31.033 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:35:31.104 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:35:31.105 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:35:31.105 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:35:31.105 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:36:00.958 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:36:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:36:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-10 23:36:00.959 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:36:01.066 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:36:01.066 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:36:01.066 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:36:01.066 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:36:01.066 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - First attempt failed with BMW API error. Will retry in 30 seconds.
2025-12-10 23:36:01.067 [WARN ] [omation.openhab-js.BMW_Token_Refresh] - Scheduling retry in 30 seconds...
2025-12-10 23:36:11.330 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to 'customer.streaming-cardata.bmwgroup.com'. Next attempt in 60000ms
2025-12-10 23:36:11.332 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'customer.streaming-cardata.bmwgroup.com' with clientid 9e34e8d0-1f35-477d-879f-ad778a0f69df
2025-12-10 23:36:31.068 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - === RETRY ATTEMPT - Second try after initial failure ===
2025-12-10 23:36:31.069 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
2025-12-10 23:36:31.169 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - BMW API returned error
2025-12-10 23:36:31.169 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Code: invalid_request
2025-12-10 23:36:31.169 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Error Description: The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed
2025-12-10 23:36:31.169 [ERROR] [omation.openhab-js.BMW_Token_Refresh] - Full JSON Response: {"error": "invalid_request", "error_description": "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
2025-12-10 23:37:00.958 [INFO ] [hab-js.BMW_Token_Refresh_ExpireCheck] - current time: 10.12.2025 23:37:00, expiry of token: 10.12.2025 23:32:59
2025-12-10 23:37:00.958 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Token needs to be updated! -> Starting update
2025-12-10 23:37:00.959 [INFO ] [omation.openhab-js.BMW_Token_Refresh] - Starting token refresh...
`
7 8 / 8
