Hi.
I'm trying to extract some SoC information from the Cerbo using a Raspberry Pi running Python. I'm able to get a token but when I try and use the token it is returning "errors":"Login required","error_code":"invalid_credentials"
Surely if it's giving me a token, the credentials aren't invalid.
Any help greatly appreciated.
import requests USERNAME = 'my username' PASSWORD = 'my password' # VRM API endpoints LOGIN_URL = 'https://vrmapi.victronenergy.com/v2/auth/login' DATA_URL_TEMPLATE = 'https://vrmapi.victronenergy.com/v2/installations/{installation_id}/stats/latest' def get_auth_token(username, password): # Authenticate and obtain an authorization token headers = {'Content-Type': 'application/json'} payload = {'username': username, 'password': password} response = requests.post(LOGIN_URL, headers=headers, json=payload) if response.status_code == 200: token = response.json().get('token') return token else: print(f'Failed to authenticate: {response.status_code} - {response.text}') return None def get_current_soc(token, installation_id): # Get current State of Charge (SoC) using the obtained token headers = { 'Authorization':f'Bearer {token}', 'Content-Type':'application/json' } url = DATA_URL_TEMPLATE.format(installation_id=installation_id) response = requests.get(url, headers=headers) if response.status_code == 200: data = response.json() soc = data.get('battery', {}).get('stateOfCharge') if soc is not None: return soc else: print('State of Charge (SoC) not found in response.') return None else: print(f'Failed to fetch SoC: {response.status_code} - {response.text}') return None if __name__ == '__main__': installation_id = 'my installation ID' # Authenticate and get token token = get_auth_token(USERNAME, PASSWORD) if token: # Get current SoC print(token) soc = get_current_soc(token, installation_id) if soc is not None: print(f'Current State of Charge (SoC): {soc}%') else: print('Failed to fetch State of Charge (SoC)..') else: print('Authentication failed.')