mirror of
https://github.com/Dielee/volvo2mqtt.git
synced 2026-08-13 19:29:52 +02:00
Optimize vcc api key change
This commit is contained in:
+1
-1
@@ -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
@@ -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
@@ -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()
|
||||||
|
|||||||
+8
-7
@@ -139,11 +139,12 @@ def set_mqtt_settings():
|
|||||||
|
|
||||||
|
|
||||||
def validate_settings():
|
def validate_settings():
|
||||||
setting_keys = settings.volvoData["vccapikey"]
|
if not os.environ.get("DEV_MODE"):
|
||||||
if isinstance(setting_keys, list):
|
setting_keys = settings.volvoData["vccapikey"]
|
||||||
if len(setting_keys) > 3:
|
if isinstance(setting_keys, list):
|
||||||
raise Exception("Settings invalid! Maximum allowed vccapikeys are three!")
|
if len(setting_keys) > 3:
|
||||||
|
raise Exception("Settings invalid! Maximum allowed vccapikeys are three!")
|
||||||
|
|
||||||
update_interval = settings["updateInterval"]
|
update_interval = settings["updateInterval"]
|
||||||
if update_interval < 60:
|
if update_interval < 60:
|
||||||
raise Exception("Settings invalid! Minimum allowed update interval is 60 seconds!")
|
raise Exception("Settings invalid! Minimum allowed update interval is 60 seconds!")
|
||||||
|
|||||||
+26
-20
@@ -119,28 +119,32 @@ def get_vehicles():
|
|||||||
|
|
||||||
|
|
||||||
def get_vcc_api_keys(used_key=None):
|
def get_vcc_api_keys(used_key=None):
|
||||||
setting_keys = settings.volvoData["vccapikey"]
|
working_keys = None
|
||||||
if isinstance(setting_keys, str):
|
|
||||||
set_key_state(setting_keys)
|
|
||||||
elif isinstance(setting_keys, list):
|
|
||||||
for key in setting_keys:
|
|
||||||
set_key_state(key)
|
|
||||||
|
|
||||||
logging.debug(str(vcc_api_keys))
|
while not working_keys:
|
||||||
working_keys = [key["key"] for key in vcc_api_keys if not key.get("extended") and key.get('key') != used_key]
|
setting_keys = settings.volvoData["vccapikey"]
|
||||||
if len(working_keys) < 1:
|
if isinstance(setting_keys, str):
|
||||||
logging.warning("No working VCCAPIKEY found, waiting 10 minutes. Then trying again!")
|
set_key_state(setting_keys)
|
||||||
mqtt.send_offline()
|
elif isinstance(setting_keys, list):
|
||||||
time.sleep(600)
|
for key in setting_keys:
|
||||||
get_vcc_api_keys(used_key=None)
|
set_key_state(key)
|
||||||
return None
|
|
||||||
|
|
||||||
mqtt.send_heartbeat()
|
logging.debug(str(vcc_api_keys))
|
||||||
session.headers.update({"vcc-api-key": working_keys[0]})
|
working_keys = [key["key"] for key in vcc_api_keys if not key.get("extended") and key.get('key') != used_key]
|
||||||
logging.info("Using VCCAPIKEY: " + working_keys[0])
|
if len(working_keys) < 1:
|
||||||
for key_dict in vcc_api_keys:
|
used_key = None
|
||||||
if key_dict["key"] == working_keys[0]:
|
logging.warning("No working VCCAPIKEY found, waiting 10 minutes. Then trying again!")
|
||||||
key_dict["in_use"] = True
|
mqtt.send_offline()
|
||||||
|
time.sleep(600)
|
||||||
|
else:
|
||||||
|
mqtt.send_heartbeat()
|
||||||
|
session.headers.update({"vcc-api-key": working_keys[0]})
|
||||||
|
logging.info("Using VCCAPIKEY: " + working_keys[0])
|
||||||
|
for key_dict in vcc_api_keys:
|
||||||
|
if key_dict["key"] == working_keys[0]:
|
||||||
|
key_dict["in_use"] = True
|
||||||
|
|
||||||
|
logging.debug(str(vcc_api_keys))
|
||||||
|
|
||||||
|
|
||||||
def set_key_state(key):
|
def set_key_state(key):
|
||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user