Move engine state to binary_sensor domain

This commit is contained in:
Linus Dietz
2023-07-03 09:36:44 +02:00
parent 4cb729beb5
commit 71b6cd269a
3 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
name: "Volvo2Mqtt"
description: "Volvo AAOS MQTT bridge"
version: "1.7.0"
version: "1.7.1"
slug: "volvo2mqtt"
init: false
url: "https://github.com/Dielee/volvo2mqtt"
+5 -4
View File
@@ -1,6 +1,6 @@
from config import settings
VERSION = "v1.7.0"
VERSION = "v1.7.1"
OAUTH_URL = "https://volvoid.eu.volvocars.com/as/token.oauth2"
VEHICLES_URL = "https://api.volvocars.com/connected-vehicle/v1/vehicles"
@@ -48,6 +48,7 @@ charging_connection_states = {"CONNECTION_STATUS_DISCONNECTED": "Disconnected",
window_states = {"CLOSED": "OFF", "OPEN": "ON"}
door_states = {"CLOSED": "OFF", "OPEN": "ON"}
engine_states = {"RUNNING": "ON", "STOPPED": "OFF"}
icon_states = {
"lock_status": {"UNLOCKED": "lock-open-alert", "LOCKED": "lock"},
@@ -55,7 +56,7 @@ icon_states = {
"door_front_right": {"ON": "car-door", "OFF": "car-door-lock"},
"door_rear_left": {"ON": "car-door", "OFF": "car-door-lock"},
"door_rear_right": {"ON": "car-door", "OFF": "car-door-lock"},
"engine_state": {"RUNNING": "engine-outline", "STOPPED": "engine-off-outline"},
"engine_state": {"ON": "engine-outline", "OFF": "engine-off-outline"},
"battery_charge_level": [
{"from": 100, "to": 100, "icon": "battery"},
{"from": 99, "to": 90, "icon": "battery-90"},
@@ -101,8 +102,8 @@ supported_entities = [
{"name": "Tire Front Right", "domain": "sensor", "id": "tyre_front_right", "icon": "car-tire-alert", "url": TYRE_STATE_URL},
{"name": "Tire Rear Left", "domain": "sensor", "id": "tyre_rear_left", "icon": "car-tire-alert", "url": TYRE_STATE_URL},
{"name": "Tire Rear Right", "domain": "sensor", "id": "tyre_rear_right", "icon": "car-tire-alert", "url": TYRE_STATE_URL},
{"name": "Engine State", "domain": "sensor", "id": "engine_state", "icon": "engine", "url": ENGINE_STATE_URL},
{"name": "Engine State", "domain": "sensor", "id": "engine_state", "icon": "engine", "url": ENGINE_DIAGNOSTICS_URL},
{"name": "Engine State", "domain": "binary_sensor", "device_class": "running", "id": "engine_state", "icon": "engine", "url": ENGINE_STATE_URL},
{"name": "Engine State", "domain": "binary_sensor", "device_class": "running", "id": "engine_state", "icon": "engine", "url": ENGINE_DIAGNOSTICS_URL},
{"name": "Fuel Level", "domain": "sensor", "id": "fuel_level", "unit": "liters", "icon": "fuel", "url": FUEL_STATE_URL},
{"name": "Average Fuel Consumption", "domain": "sensor", "id": "average_fuel_consumption", "unit": "liters", "icon": "fuel", "url": STATISTICS_URL},
{"name": "Distance to Empty", "domain": "sensor", "id": "distance_to_empty", "unit": "km" if not units.get(settings["babelLocale"]) else units[settings["babelLocale"]]["distance_to_empty"]["unit"], "icon": "map-marker-distance", "url": STATISTICS_URL},
+4 -4
View File
@@ -3,14 +3,14 @@ import requests
import mqtt
import util
import time
from threading import Thread, currentThread
from threading import currentThread
from datetime import datetime, timedelta
from config import settings
from babel.dates import format_datetime
from const import charging_system_states, charging_connection_states, door_states, window_states, \
OAUTH_URL, VEHICLES_URL, VEHICLE_DETAILS_URL, RECHARGE_STATE_URL, CLIMATE_START_URL, \
WINDOWS_STATE_URL, LOCK_STATE_URL, TYRE_STATE_URL, supported_entities, BATTERY_CHARGE_STATE_URL, \
STATISTICS_URL, CLIMATE_STOP_URL, ENGINE_DIAGNOSTICS_URL
STATISTICS_URL, ENGINE_DIAGNOSTICS_URL, engine_states
session = requests.Session()
session.headers = {
@@ -194,7 +194,7 @@ def check_engine_status(vin):
t = currentThread()
while getattr(t, "do_run", True):
engine_state = api_call(endpoint_url, "GET", vin, "engine_state", True)
if engine_state == "RUNNING":
if engine_state == "ON":
mqtt.assumed_climate_state[vin] = "OFF"
mqtt.update_car_data()
break
@@ -366,7 +366,7 @@ def parse_api_data(data, sensor_id=None):
elif sensor_id == "tyre_rear_right":
return data["rearRightTyrePressure"]["value"] if util.keys_exists(data, "rearRightTyrePressure") else None
elif sensor_id == "engine_state":
return data["engineRunning"]["value"] if util.keys_exists(data, "engineRunning") else None
return engine_states[data["engineRunning"]["value"]] if util.keys_exists(data, "engineRunning") else None
elif sensor_id == "fuel_level":
if util.keys_exists(data, "fuelAmount"):
fuel_amount = int(data["fuelAmount"]["value"])