Optimize vcc api key change

This commit is contained in:
Linus Dietz
2023-08-18 09:40:48 +02:00
parent 3482a5f893
commit 7c87c71ac8
5 changed files with 38 additions and 31 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
name: "Volvo2Mqtt" name: "Volvo2Mqtt"
description: "Volvo AAOS MQTT bridge" description: "Volvo AAOS MQTT bridge"
version: "1.8.1" version: "1.8.2"
slug: "volvo2mqtt" slug: "volvo2mqtt"
init: false init: false
url: "https://github.com/Dielee/volvo2mqtt" url: "https://github.com/Dielee/volvo2mqtt"
+1 -1
View File
@@ -1,6 +1,6 @@
from config import settings from config import settings
VERSION = "v1.8.1" VERSION = "v1.8.2"
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2" OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles" VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
+2 -2
View File
@@ -6,11 +6,11 @@ from util import set_tz, setup_logging, set_mqtt_settings, validate_settings
if __name__ == '__main__': if __name__ == '__main__':
setup_logging()
logging.info("Starting volvo2mqtt version " + VERSION)
validate_settings() validate_settings()
set_tz() set_tz()
set_mqtt_settings() set_mqtt_settings()
setup_logging()
logging.info("Starting volvo2mqtt version " + VERSION)
connect() connect()
authorize() authorize()
update_loop() update_loop()
+1
View File
@@ -139,6 +139,7 @@ def set_mqtt_settings():
def validate_settings(): def validate_settings():
if not os.environ.get("DEV_MODE"):
setting_keys = settings.volvoData["vccapikey"] setting_keys = settings.volvoData["vccapikey"]
if isinstance(setting_keys, list): if isinstance(setting_keys, list):
if len(setting_keys) > 3: if len(setting_keys) > 3:
+9 -3
View File
@@ -119,6 +119,9 @@ def get_vehicles():
def get_vcc_api_keys(used_key=None): def get_vcc_api_keys(used_key=None):
working_keys = None
while not working_keys:
setting_keys = settings.volvoData["vccapikey"] setting_keys = settings.volvoData["vccapikey"]
if isinstance(setting_keys, str): if isinstance(setting_keys, str):
set_key_state(setting_keys) set_key_state(setting_keys)
@@ -129,12 +132,11 @@ def get_vcc_api_keys(used_key=None):
logging.debug(str(vcc_api_keys)) logging.debug(str(vcc_api_keys))
working_keys = [key["key"] for key in vcc_api_keys if not key.get("extended") and key.get('key') != used_key] working_keys = [key["key"] for key in vcc_api_keys if not key.get("extended") and key.get('key') != used_key]
if len(working_keys) < 1: if len(working_keys) < 1:
used_key = None
logging.warning("No working VCCAPIKEY found, waiting 10 minutes. Then trying again!") logging.warning("No working VCCAPIKEY found, waiting 10 minutes. Then trying again!")
mqtt.send_offline() mqtt.send_offline()
time.sleep(600) time.sleep(600)
get_vcc_api_keys(used_key=None) else:
return None
mqtt.send_heartbeat() mqtt.send_heartbeat()
session.headers.update({"vcc-api-key": working_keys[0]}) session.headers.update({"vcc-api-key": working_keys[0]})
logging.info("Using VCCAPIKEY: " + working_keys[0]) logging.info("Using VCCAPIKEY: " + working_keys[0])
@@ -142,6 +144,8 @@ def get_vcc_api_keys(used_key=None):
if key_dict["key"] == working_keys[0]: if key_dict["key"] == working_keys[0]:
key_dict["in_use"] = True key_dict["in_use"] = True
logging.debug(str(vcc_api_keys))
def set_key_state(key): def set_key_state(key):
global vcc_api_keys global vcc_api_keys
@@ -160,6 +164,8 @@ def set_key_state(key):
def check_vcc_api_key(test_key, extended_until=None): def check_vcc_api_key(test_key, extended_until=None):
if extended_until: if extended_until:
if extended_until >= datetime.now(): if extended_until >= datetime.now():
logging.warning("VCCAPIKEY " + test_key + " is extended and will be reusable at: "
+ format_datetime(extended_until, format="medium", locale=settings["babelLocale"]))
return True, extended_until return True, extended_until
if datetime.now(util.TZ) >= token_expires_at: if datetime.now(util.TZ) >= token_expires_at: