mirror of
https://github.com/Dielee/volvo2mqtt.git
synced 2026-08-13 19:29:52 +02:00
Add option for dynamic interval settings #160
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
## v1.8.24
|
||||||
|
### 🚀 Features:
|
||||||
|
|
||||||
|
- Add option for dynamic interval settings #160
|
||||||
|
|
||||||
## v1.8.23
|
## v1.8.23
|
||||||
### 🚀 Features:
|
### 🚀 Features:
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
name: "Volvo2Mqtt"
|
name: "Volvo2Mqtt"
|
||||||
description: "Volvo AAOS MQTT bridge"
|
description: "Volvo AAOS MQTT bridge"
|
||||||
version: "1.8.23"
|
version: "1.8.24"
|
||||||
slug: "volvo2mqtt"
|
slug: "volvo2mqtt"
|
||||||
init: false
|
init: false
|
||||||
url: "https://github.com/Dielee/volvo2mqtt"
|
url: "https://github.com/Dielee/volvo2mqtt"
|
||||||
|
|||||||
+4
-2
@@ -1,6 +1,6 @@
|
|||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
VERSION = "v1.8.23"
|
VERSION = "v1.8.24"
|
||||||
|
|
||||||
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/v2/vehicles"
|
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles"
|
||||||
@@ -20,6 +20,7 @@ FUEL_BATTERY_STATE_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicle
|
|||||||
STATISTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/statistics"
|
STATISTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/statistics"
|
||||||
ENGINE_DIAGNOSTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/engine"
|
ENGINE_DIAGNOSTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/engine"
|
||||||
VEHICLE_DIAGNOSTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/diagnostics"
|
VEHICLE_DIAGNOSTICS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/diagnostics"
|
||||||
|
WARNINGS_URL = "https://api.volvocars.com/connected-vehicle/v2/vehicles/{0}/warnings"
|
||||||
API_BACKEND_STATUS = "https://oip-dev-bff.euwest1.production.volvo.care/api/v1/backend-status"
|
API_BACKEND_STATUS = "https://oip-dev-bff.euwest1.production.volvo.care/api/v1/backend-status"
|
||||||
|
|
||||||
LENGTH_KILOMETERS = "km"
|
LENGTH_KILOMETERS = "km"
|
||||||
@@ -130,7 +131,8 @@ supported_entities = [
|
|||||||
{"name": "Time to Service", "domain": "sensor", "id": "time_to_service", "icon": "wrench-clock", "url": VEHICLE_DIAGNOSTICS_URL},
|
{"name": "Time to Service", "domain": "sensor", "id": "time_to_service", "icon": "wrench-clock", "url": VEHICLE_DIAGNOSTICS_URL},
|
||||||
{"name": "Service warning status", "domain": "sensor", "id": "service_warning_status", "icon": "alert-outline", "url": VEHICLE_DIAGNOSTICS_URL},
|
{"name": "Service warning status", "domain": "sensor", "id": "service_warning_status", "icon": "alert-outline", "url": VEHICLE_DIAGNOSTICS_URL},
|
||||||
{"name": "Washer Fluid Level warning", "domain": "sensor", "id": "washer_fluid_warning", "icon": "alert-outline", "url": VEHICLE_DIAGNOSTICS_URL},
|
{"name": "Washer Fluid Level warning", "domain": "sensor", "id": "washer_fluid_warning", "icon": "alert-outline", "url": VEHICLE_DIAGNOSTICS_URL},
|
||||||
{"name": "API Backend status", "domain": "sensor", "id": "api_backend_status", "icon": "alert"}
|
{"name": "API Backend status", "domain": "sensor", "id": "api_backend_status", "icon": "alert"},
|
||||||
|
{"name": "Update Interval", "domain": "number", "id": "update_interval", "unit": "seconds", "icon": "timer", "min": 60, "max": 600, "mode": "box"},
|
||||||
]
|
]
|
||||||
|
|
||||||
old_entity_ids = ["months_to_service", "service_warning_trigger", "distance_to_empty"]
|
old_entity_ids = ["months_to_service", "service_warning_trigger", "distance_to_empty"]
|
||||||
|
|||||||
+11
-2
@@ -114,6 +114,8 @@ def on_message(client, userdata, msg):
|
|||||||
elif "update_data" in msg.topic:
|
elif "update_data" in msg.topic:
|
||||||
if payload == "PRESS":
|
if payload == "PRESS":
|
||||||
update_car_data(True)
|
update_car_data(True)
|
||||||
|
elif "update_interval" in msg.topic:
|
||||||
|
settings.update({"updateInterval": int(payload)})
|
||||||
elif "schedule" in msg.topic:
|
elif "schedule" in msg.topic:
|
||||||
try:
|
try:
|
||||||
d = json.loads(payload)
|
d = json.loads(payload)
|
||||||
@@ -226,7 +228,7 @@ def update_car_data(force_update=False, overwrite={}):
|
|||||||
last_data_update = format_datetime(datetime.now(util.TZ), format="medium", locale=settings["babelLocale"])
|
last_data_update = format_datetime(datetime.now(util.TZ), format="medium", locale=settings["babelLocale"])
|
||||||
for vin in volvo.vins:
|
for vin in volvo.vins:
|
||||||
for entity in volvo.supported_endpoints[vin]:
|
for entity in volvo.supported_endpoints[vin]:
|
||||||
if entity["domain"] == "button":
|
if entity["domain"] in ["button"]:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
ov_entity_id = ""
|
ov_entity_id = ""
|
||||||
@@ -243,6 +245,8 @@ def update_car_data(force_update=False, overwrite={}):
|
|||||||
state = last_data_update
|
state = last_data_update
|
||||||
elif entity["id"] == "active_schedules":
|
elif entity["id"] == "active_schedules":
|
||||||
state = active_schedules[vin]
|
state = active_schedules[vin]
|
||||||
|
elif entity["id"] == "update_interval":
|
||||||
|
state = settings["updateInterval"]
|
||||||
elif entity["id"] == "api_backend_status":
|
elif entity["id"] == "api_backend_status":
|
||||||
if force_update:
|
if force_update:
|
||||||
state = volvo.get_backend_status()
|
state = volvo.get_backend_status()
|
||||||
@@ -347,11 +351,16 @@ def create_ha_devices():
|
|||||||
|
|
||||||
if entity.get("domain") == "device_tracker" or entity.get("id") == "active_schedules":
|
if entity.get("domain") == "device_tracker" or entity.get("id") == "active_schedules":
|
||||||
config["json_attributes_topic"] = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/attributes"
|
config["json_attributes_topic"] = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/attributes"
|
||||||
elif entity.get("domain") in ["switch", "lock", "button"]:
|
elif entity.get("domain") in ["switch", "lock", "button", "number"]:
|
||||||
command_topic = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/command"
|
command_topic = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/command"
|
||||||
config["command_topic"] = command_topic
|
config["command_topic"] = command_topic
|
||||||
subscribed_topics.append(command_topic)
|
subscribed_topics.append(command_topic)
|
||||||
mqtt_client.subscribe(command_topic)
|
mqtt_client.subscribe(command_topic)
|
||||||
|
|
||||||
|
if entity["domain"] == "number":
|
||||||
|
config["min"] = entity["min"]
|
||||||
|
config["max"] = entity["max"]
|
||||||
|
config["mode"] = entity["mode"]
|
||||||
elif entity.get("domain") == "image":
|
elif entity.get("domain") == "image":
|
||||||
config["url_topic"] = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/image_url"
|
config["url_topic"] = f"homeassistant/{entity['domain']}/{vin}_{entity['id']}/image_url"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user