mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Allow older vehicles to sleep in Teslemetry (#117229)
* Allow older vehicles to sleep * Remove updated_once * move pre2021 to lib * bump * Bump again * Bump to 0.5.11 * Fix VIN so it matches the check * Fix snapshot * Snapshots * Fix self.updated_once * Remove old pre2021 attribute * fix snapshots --------- Co-authored-by: G Johansson <goran.johansson@shiftit.se>
This commit is contained in:
parent
2a8fc7f310
commit
46158f5c14
@ -1,11 +1,12 @@
|
||||
"""Teslemetry Data Coordinator."""
|
||||
|
||||
from datetime import timedelta
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any
|
||||
|
||||
from tesla_fleet_api import EnergySpecific, VehicleSpecific
|
||||
from tesla_fleet_api.const import VehicleDataEndpoint
|
||||
from tesla_fleet_api.exceptions import (
|
||||
Forbidden,
|
||||
InvalidToken,
|
||||
SubscriptionRequired,
|
||||
TeslaFleetError,
|
||||
@ -19,6 +20,7 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
|
||||
from .const import LOGGER, TeslemetryState
|
||||
|
||||
VEHICLE_INTERVAL = timedelta(seconds=30)
|
||||
VEHICLE_WAIT = timedelta(minutes=15)
|
||||
ENERGY_LIVE_INTERVAL = timedelta(seconds=30)
|
||||
ENERGY_INFO_INTERVAL = timedelta(seconds=30)
|
||||
|
||||
@ -49,6 +51,8 @@ class TeslemetryVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
||||
"""Class to manage fetching data from the Teslemetry API."""
|
||||
|
||||
updated_once: bool
|
||||
pre2021: bool
|
||||
last_active: datetime
|
||||
|
||||
def __init__(
|
||||
self, hass: HomeAssistant, api: VehicleSpecific, product: dict
|
||||
@ -63,9 +67,13 @@ class TeslemetryVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
||||
self.api = api
|
||||
self.data = flatten(product)
|
||||
self.updated_once = False
|
||||
self.last_active = datetime.now()
|
||||
|
||||
async def _async_update_data(self) -> dict[str, Any]:
|
||||
"""Update vehicle data using Teslemetry API."""
|
||||
|
||||
self.update_interval = VEHICLE_INTERVAL
|
||||
|
||||
try:
|
||||
data = (await self.api.vehicle_data(endpoints=ENDPOINTS))["response"]
|
||||
except VehicleOffline:
|
||||
@ -79,6 +87,25 @@ class TeslemetryVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
||||
raise UpdateFailed(e.message) from e
|
||||
|
||||
self.updated_once = True
|
||||
|
||||
if self.api.pre2021 and data["state"] == TeslemetryState.ONLINE:
|
||||
# Handle pre-2021 vehicles which cannot sleep by themselves
|
||||
if (
|
||||
data["charge_state"].get("charging_state") == "Charging"
|
||||
or data["vehicle_state"].get("is_user_present")
|
||||
or data["vehicle_state"].get("sentry_mode")
|
||||
):
|
||||
# Vehicle is active, reset timer
|
||||
self.last_active = datetime.now()
|
||||
else:
|
||||
elapsed = datetime.now() - self.last_active
|
||||
if elapsed > timedelta(minutes=20):
|
||||
# Vehicle didn't sleep, try again in 15 minutes
|
||||
self.last_active = datetime.now()
|
||||
elif elapsed > timedelta(minutes=15):
|
||||
# Let vehicle go to sleep now
|
||||
self.update_interval = VEHICLE_WAIT
|
||||
|
||||
return flatten(data)
|
||||
|
||||
|
||||
@ -102,9 +129,7 @@ class TeslemetryEnergySiteLiveCoordinator(DataUpdateCoordinator[dict[str, Any]])
|
||||
|
||||
try:
|
||||
data = (await self.api.live_status())["response"]
|
||||
except InvalidToken as e:
|
||||
raise ConfigEntryAuthFailed from e
|
||||
except SubscriptionRequired as e:
|
||||
except (InvalidToken, Forbidden, SubscriptionRequired) as e:
|
||||
raise ConfigEntryAuthFailed from e
|
||||
except TeslaFleetError as e:
|
||||
raise UpdateFailed(e.message) from e
|
||||
@ -138,9 +163,7 @@ class TeslemetryEnergySiteInfoCoordinator(DataUpdateCoordinator[dict[str, Any]])
|
||||
|
||||
try:
|
||||
data = (await self.api.site_info())["response"]
|
||||
except InvalidToken as e:
|
||||
raise ConfigEntryAuthFailed from e
|
||||
except SubscriptionRequired as e:
|
||||
except (InvalidToken, Forbidden, SubscriptionRequired) as e:
|
||||
raise ConfigEntryAuthFailed from e
|
||||
except TeslaFleetError as e:
|
||||
raise UpdateFailed(e.message) from e
|
||||
|
@ -6,5 +6,5 @@
|
||||
"documentation": "https://www.home-assistant.io/integrations/teslemetry",
|
||||
"iot_class": "cloud_polling",
|
||||
"loggers": ["tesla-fleet-api"],
|
||||
"requirements": ["tesla-fleet-api==0.4.9"]
|
||||
"requirements": ["tesla-fleet-api==0.5.12"]
|
||||
}
|
||||
|
@ -2704,7 +2704,7 @@ temperusb==1.6.1
|
||||
# tensorflow==2.5.0
|
||||
|
||||
# homeassistant.components.teslemetry
|
||||
tesla-fleet-api==0.4.9
|
||||
tesla-fleet-api==0.5.12
|
||||
|
||||
# homeassistant.components.powerwall
|
||||
tesla-powerwall==0.5.2
|
||||
|
@ -2096,7 +2096,7 @@ temescal==0.5
|
||||
temperusb==1.6.1
|
||||
|
||||
# homeassistant.components.teslemetry
|
||||
tesla-fleet-api==0.4.9
|
||||
tesla-fleet-api==0.5.12
|
||||
|
||||
# homeassistant.components.powerwall
|
||||
tesla-powerwall==0.5.2
|
||||
|
@ -4,7 +4,7 @@
|
||||
"id": 1234,
|
||||
"user_id": 1234,
|
||||
"vehicle_id": 1234,
|
||||
"vin": "VINVINVIN",
|
||||
"vin": "LRWXF7EK4KC700000",
|
||||
"color": null,
|
||||
"access_type": "OWNER",
|
||||
"display_name": "Test",
|
||||
|
@ -3,7 +3,7 @@
|
||||
"id": 1234,
|
||||
"user_id": 1234,
|
||||
"vehicle_id": 1234,
|
||||
"vin": "VINVINVIN",
|
||||
"vin": "LRWXF7EK4KC700000",
|
||||
"color": null,
|
||||
"access_type": "OWNER",
|
||||
"granular_access": {
|
||||
|
@ -3,7 +3,7 @@
|
||||
"id": 1234,
|
||||
"user_id": 1234,
|
||||
"vehicle_id": 1234,
|
||||
"vin": "VINVINVIN",
|
||||
"vin": "LRWXF7EK4KC700000",
|
||||
"color": null,
|
||||
"access_type": "OWNER",
|
||||
"granular_access": {
|
||||
@ -201,7 +201,7 @@
|
||||
"feature_bitmask": "fbdffbff,187f",
|
||||
"fp_window": 1,
|
||||
"ft": 1,
|
||||
"is_user_present": false,
|
||||
"is_user_present": true,
|
||||
"locked": false,
|
||||
"media_info": {
|
||||
"audio_volume": 2.6667,
|
||||
|
@ -166,7 +166,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_battery_heater_on',
|
||||
'unique_id': 'VINVINVIN-charge_state_battery_heater_on',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_battery_heater_on',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -213,7 +213,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_cabin_overheat_protection_actively_cooling',
|
||||
'unique_id': 'VINVINVIN-climate_state_cabin_overheat_protection_actively_cooling',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_cabin_overheat_protection_actively_cooling',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -260,7 +260,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_conn_charge_cable',
|
||||
'unique_id': 'VINVINVIN-charge_state_conn_charge_cable',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_conn_charge_cable',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -307,7 +307,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charger_phases',
|
||||
'unique_id': 'VINVINVIN-charge_state_charger_phases',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charger_phases',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -353,7 +353,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_dashcam_state',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_dashcam_state',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_dashcam_state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -400,7 +400,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_df',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_df',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_df',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -447,7 +447,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_fd_window',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_fd_window',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_fd_window',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -494,7 +494,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_pf',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_pf',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_pf',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -541,7 +541,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_fp_window',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_fp_window',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_fp_window',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -588,7 +588,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_is_preconditioning',
|
||||
'unique_id': 'VINVINVIN-climate_state_is_preconditioning',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_is_preconditioning',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -634,7 +634,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_preconditioning_enabled',
|
||||
'unique_id': 'VINVINVIN-charge_state_preconditioning_enabled',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_preconditioning_enabled',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -680,7 +680,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_dr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_dr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_dr',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -727,7 +727,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_rd_window',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_rd_window',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_rd_window',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -774,7 +774,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_pr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_pr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_pr',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -821,7 +821,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_rp_window',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_rp_window',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_rp_window',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -868,7 +868,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_scheduled_charging_pending',
|
||||
'unique_id': 'VINVINVIN-charge_state_scheduled_charging_pending',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_scheduled_charging_pending',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -914,7 +914,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'state',
|
||||
'unique_id': 'VINVINVIN-state',
|
||||
'unique_id': 'LRWXF7EK4KC700000-state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -961,7 +961,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_soft_warning_fl',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_soft_warning_fl',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_soft_warning_fl',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1008,7 +1008,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_soft_warning_fr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_soft_warning_fr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_soft_warning_fr',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1055,7 +1055,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_soft_warning_rl',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_soft_warning_rl',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_soft_warning_rl',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1102,7 +1102,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_soft_warning_rr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_soft_warning_rr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_soft_warning_rr',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1149,7 +1149,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_trip_charging',
|
||||
'unique_id': 'VINVINVIN-charge_state_trip_charging',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_trip_charging',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1195,7 +1195,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_is_user_present',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_is_user_present',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_is_user_present',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1566,6 +1566,6 @@
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'off',
|
||||
'state': 'on',
|
||||
})
|
||||
# ---
|
||||
|
@ -28,7 +28,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'flash_lights',
|
||||
'unique_id': 'VINVINVIN-flash_lights',
|
||||
'unique_id': 'LRWXF7EK4KC700000-flash_lights',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -74,7 +74,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'homelink',
|
||||
'unique_id': 'VINVINVIN-homelink',
|
||||
'unique_id': 'LRWXF7EK4KC700000-homelink',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -120,7 +120,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'honk',
|
||||
'unique_id': 'VINVINVIN-honk',
|
||||
'unique_id': 'LRWXF7EK4KC700000-honk',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -166,7 +166,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'enable_keyless_driving',
|
||||
'unique_id': 'VINVINVIN-enable_keyless_driving',
|
||||
'unique_id': 'LRWXF7EK4KC700000-enable_keyless_driving',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -212,7 +212,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'boombox',
|
||||
'unique_id': 'VINVINVIN-boombox',
|
||||
'unique_id': 'LRWXF7EK4KC700000-boombox',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -258,7 +258,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'wake',
|
||||
'unique_id': 'VINVINVIN-wake',
|
||||
'unique_id': 'LRWXF7EK4KC700000-wake',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -41,7 +41,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <ClimateEntityFeature: 401>,
|
||||
'translation_key': <TeslemetryClimateSide.DRIVER: 'driver_temp'>,
|
||||
'unique_id': 'VINVINVIN-driver_temp',
|
||||
'unique_id': 'LRWXF7EK4KC700000-driver_temp',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -116,7 +116,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <ClimateEntityFeature: 401>,
|
||||
'translation_key': <TeslemetryClimateSide.DRIVER: 'driver_temp'>,
|
||||
'unique_id': 'VINVINVIN-driver_temp',
|
||||
'unique_id': 'LRWXF7EK4KC700000-driver_temp',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -191,7 +191,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <ClimateEntityFeature: 401>,
|
||||
'translation_key': <TeslemetryClimateSide.DRIVER: 'driver_temp'>,
|
||||
'unique_id': 'VINVINVIN-driver_temp',
|
||||
'unique_id': 'LRWXF7EK4KC700000-driver_temp',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -28,7 +28,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'charge_state_charge_port_door_open',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_port_door_open',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_port_door_open',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -76,7 +76,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
'translation_key': 'vehicle_state_ft',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_ft',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_ft',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -124,7 +124,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'vehicle_state_rt',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_rt',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_rt',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -172,7 +172,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'windows',
|
||||
'unique_id': 'VINVINVIN-windows',
|
||||
'unique_id': 'LRWXF7EK4KC700000-windows',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -220,7 +220,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'charge_state_charge_port_door_open',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_port_door_open',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_port_door_open',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -268,7 +268,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 1>,
|
||||
'translation_key': 'vehicle_state_ft',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_ft',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_ft',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -316,7 +316,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'vehicle_state_rt',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_rt',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_rt',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -364,7 +364,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <CoverEntityFeature: 3>,
|
||||
'translation_key': 'windows',
|
||||
'unique_id': 'VINVINVIN-windows',
|
||||
'unique_id': 'LRWXF7EK4KC700000-windows',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -412,7 +412,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_port_door_open',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_port_door_open',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_port_door_open',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -460,7 +460,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_ft',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_ft',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_ft',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -508,7 +508,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_rt',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_rt',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_rt',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -556,7 +556,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'windows',
|
||||
'unique_id': 'VINVINVIN-windows',
|
||||
'unique_id': 'LRWXF7EK4KC700000-windows',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -28,7 +28,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'location',
|
||||
'unique_id': 'VINVINVIN-location',
|
||||
'unique_id': 'LRWXF7EK4KC700000-location',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -78,7 +78,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'route',
|
||||
'unique_id': 'VINVINVIN-route',
|
||||
'unique_id': 'LRWXF7EK4KC700000-route',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -29,7 +29,7 @@
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_devices[{('teslemetry', 'VINVINVIN')}]
|
||||
# name: test_devices[{('teslemetry', 'LRWXF7EK4KC700000')}]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
@ -43,17 +43,17 @@
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'teslemetry',
|
||||
'VINVINVIN',
|
||||
'LRWXF7EK4KC700000',
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tesla',
|
||||
'model': None,
|
||||
'model': 'Model X',
|
||||
'name': 'Test',
|
||||
'name_by_user': None,
|
||||
'serial_number': 'VINVINVIN',
|
||||
'serial_number': 'LRWXF7EK4KC700000',
|
||||
'suggested_area': None,
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
|
@ -28,7 +28,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_port_latch',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_port_latch',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_port_latch',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -75,7 +75,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_locked',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_locked',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_locked',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -29,7 +29,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <MediaPlayerEntityFeature: 16437>,
|
||||
'translation_key': 'media',
|
||||
'unique_id': 'VINVINVIN-media',
|
||||
'unique_id': 'LRWXF7EK4KC700000-media',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -107,7 +107,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'media',
|
||||
'unique_id': 'VINVINVIN-media',
|
||||
'unique_id': 'LRWXF7EK4KC700000-media',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -149,7 +149,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_current_request',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_current_request',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_current_request',
|
||||
'unit_of_measurement': <UnitOfElectricCurrent.AMPERE: 'A'>,
|
||||
})
|
||||
# ---
|
||||
@ -206,7 +206,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_limit_soc',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_limit_soc',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_limit_soc',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
|
@ -149,7 +149,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_left',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_left',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_left',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -208,7 +208,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_right',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_right',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_right',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -267,7 +267,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_rear_center',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_rear_center',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_rear_center',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -326,7 +326,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_rear_left',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_rear_left',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_rear_left',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -385,7 +385,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_rear_right',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_rear_right',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_rear_right',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -444,7 +444,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_third_row_left',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_third_row_left',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_third_row_left',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -503,7 +503,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_seat_heater_third_row_right',
|
||||
'unique_id': 'VINVINVIN-climate_state_seat_heater_third_row_right',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_seat_heater_third_row_right',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -561,7 +561,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_steering_wheel_heat_level',
|
||||
'unique_id': 'VINVINVIN-climate_state_steering_wheel_heat_level',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_steering_wheel_heat_level',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -867,7 +867,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_battery_level',
|
||||
'unique_id': 'VINVINVIN-charge_state_battery_level',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_battery_level',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
@ -940,7 +940,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_battery_range',
|
||||
'unique_id': 'VINVINVIN-charge_state_battery_range',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_battery_range',
|
||||
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
|
||||
})
|
||||
# ---
|
||||
@ -1005,7 +1005,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_conn_charge_cable',
|
||||
'unique_id': 'VINVINVIN-charge_state_conn_charge_cable',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_conn_charge_cable',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1069,7 +1069,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_energy_added',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_energy_added',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_energy_added',
|
||||
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
|
||||
})
|
||||
# ---
|
||||
@ -1139,7 +1139,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charge_rate',
|
||||
'unique_id': 'VINVINVIN-charge_state_charge_rate',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charge_rate',
|
||||
'unit_of_measurement': <UnitOfSpeed.KILOMETERS_PER_HOUR: 'km/h'>,
|
||||
})
|
||||
# ---
|
||||
@ -1206,7 +1206,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charger_actual_current',
|
||||
'unique_id': 'VINVINVIN-charge_state_charger_actual_current',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charger_actual_current',
|
||||
'unit_of_measurement': <UnitOfElectricCurrent.AMPERE: 'A'>,
|
||||
})
|
||||
# ---
|
||||
@ -1273,7 +1273,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charger_power',
|
||||
'unique_id': 'VINVINVIN-charge_state_charger_power',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charger_power',
|
||||
'unit_of_measurement': <UnitOfPower.KILO_WATT: 'kW'>,
|
||||
})
|
||||
# ---
|
||||
@ -1340,7 +1340,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charger_voltage',
|
||||
'unique_id': 'VINVINVIN-charge_state_charger_voltage',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charger_voltage',
|
||||
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
|
||||
})
|
||||
# ---
|
||||
@ -1414,7 +1414,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_charging_state',
|
||||
'unique_id': 'VINVINVIN-charge_state_charging_state',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_charging_state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1496,7 +1496,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_active_route_miles_to_arrival',
|
||||
'unique_id': 'VINVINVIN-drive_state_active_route_miles_to_arrival',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_active_route_miles_to_arrival',
|
||||
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
|
||||
})
|
||||
# ---
|
||||
@ -1566,7 +1566,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_driver_temp_setting',
|
||||
'unique_id': 'VINVINVIN-climate_state_driver_temp_setting',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_driver_temp_setting',
|
||||
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
|
||||
})
|
||||
# ---
|
||||
@ -1639,7 +1639,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_est_battery_range',
|
||||
'unique_id': 'VINVINVIN-charge_state_est_battery_range',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_est_battery_range',
|
||||
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
|
||||
})
|
||||
# ---
|
||||
@ -1704,7 +1704,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_fast_charger_type',
|
||||
'unique_id': 'VINVINVIN-charge_state_fast_charger_type',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_fast_charger_type',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -1771,7 +1771,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_ideal_battery_range',
|
||||
'unique_id': 'VINVINVIN-charge_state_ideal_battery_range',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_ideal_battery_range',
|
||||
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
|
||||
})
|
||||
# ---
|
||||
@ -1841,7 +1841,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_inside_temp',
|
||||
'unique_id': 'VINVINVIN-climate_state_inside_temp',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_inside_temp',
|
||||
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
|
||||
})
|
||||
# ---
|
||||
@ -1914,7 +1914,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_odometer',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_odometer',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_odometer',
|
||||
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
|
||||
})
|
||||
# ---
|
||||
@ -1984,7 +1984,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_outside_temp',
|
||||
'unique_id': 'VINVINVIN-climate_state_outside_temp',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_outside_temp',
|
||||
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
|
||||
})
|
||||
# ---
|
||||
@ -2054,7 +2054,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_passenger_temp_setting',
|
||||
'unique_id': 'VINVINVIN-climate_state_passenger_temp_setting',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_passenger_temp_setting',
|
||||
'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
|
||||
})
|
||||
# ---
|
||||
@ -2121,7 +2121,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_power',
|
||||
'unique_id': 'VINVINVIN-drive_state_power',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_power',
|
||||
'unit_of_measurement': <UnitOfPower.KILO_WATT: 'kW'>,
|
||||
})
|
||||
# ---
|
||||
@ -2193,7 +2193,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_shift_state',
|
||||
'unique_id': 'VINVINVIN-drive_state_shift_state',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_shift_state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -2271,7 +2271,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_speed',
|
||||
'unique_id': 'VINVINVIN-drive_state_speed',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_speed',
|
||||
'unit_of_measurement': <UnitOfSpeed.KILOMETERS_PER_HOUR: 'km/h'>,
|
||||
})
|
||||
# ---
|
||||
@ -2338,7 +2338,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_active_route_energy_at_arrival',
|
||||
'unique_id': 'VINVINVIN-drive_state_active_route_energy_at_arrival',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_active_route_energy_at_arrival',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
@ -2403,7 +2403,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_active_route_minutes_to_arrival',
|
||||
'unique_id': 'VINVINVIN-drive_state_active_route_minutes_to_arrival',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_active_route_minutes_to_arrival',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -2464,7 +2464,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_minutes_to_full_charge',
|
||||
'unique_id': 'VINVINVIN-charge_state_minutes_to_full_charge',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_minutes_to_full_charge',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -2533,7 +2533,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_pressure_fl',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_pressure_fl',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_pressure_fl',
|
||||
'unit_of_measurement': <UnitOfPressure.PSI: 'psi'>,
|
||||
})
|
||||
# ---
|
||||
@ -2606,7 +2606,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_pressure_fr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_pressure_fr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_pressure_fr',
|
||||
'unit_of_measurement': <UnitOfPressure.PSI: 'psi'>,
|
||||
})
|
||||
# ---
|
||||
@ -2679,7 +2679,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_pressure_rl',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_pressure_rl',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_pressure_rl',
|
||||
'unit_of_measurement': <UnitOfPressure.PSI: 'psi'>,
|
||||
})
|
||||
# ---
|
||||
@ -2752,7 +2752,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_tpms_pressure_rr',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_tpms_pressure_rr',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_tpms_pressure_rr',
|
||||
'unit_of_measurement': <UnitOfPressure.PSI: 'psi'>,
|
||||
})
|
||||
# ---
|
||||
@ -2819,7 +2819,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'drive_state_active_route_traffic_minutes_delay',
|
||||
'unique_id': 'VINVINVIN-drive_state_active_route_traffic_minutes_delay',
|
||||
'unique_id': 'LRWXF7EK4KC700000-drive_state_active_route_traffic_minutes_delay',
|
||||
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
|
||||
})
|
||||
# ---
|
||||
@ -2886,7 +2886,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_usable_battery_level',
|
||||
'unique_id': 'VINVINVIN-charge_state_usable_battery_level',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_usable_battery_level',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
|
@ -122,7 +122,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_auto_seat_climate_left',
|
||||
'unique_id': 'VINVINVIN-climate_state_auto_seat_climate_left',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_auto_seat_climate_left',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -169,7 +169,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_auto_seat_climate_right',
|
||||
'unique_id': 'VINVINVIN-climate_state_auto_seat_climate_right',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_auto_seat_climate_right',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -216,7 +216,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_auto_steering_wheel_heat',
|
||||
'unique_id': 'VINVINVIN-climate_state_auto_steering_wheel_heat',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_auto_steering_wheel_heat',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -263,7 +263,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'charge_state_user_charge_enable_request',
|
||||
'unique_id': 'VINVINVIN-charge_state_user_charge_enable_request',
|
||||
'unique_id': 'LRWXF7EK4KC700000-charge_state_user_charge_enable_request',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -310,7 +310,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'climate_state_defrost_mode',
|
||||
'unique_id': 'VINVINVIN-climate_state_defrost_mode',
|
||||
'unique_id': 'LRWXF7EK4KC700000-climate_state_defrost_mode',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -357,7 +357,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'vehicle_state_sentry_mode',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_sentry_mode',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_sentry_mode',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -28,7 +28,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <UpdateEntityFeature: 5>,
|
||||
'translation_key': 'vehicle_state_software_update_status',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_software_update_status',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_software_update_status',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
@ -84,7 +84,7 @@
|
||||
'previous_unique_id': None,
|
||||
'supported_features': <UpdateEntityFeature: 4>,
|
||||
'translation_key': 'vehicle_state_software_update_status',
|
||||
'unique_id': 'VINVINVIN-vehicle_state_software_update_status',
|
||||
'unique_id': 'LRWXF7EK4KC700000-vehicle_state_software_update_status',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
|
@ -1,4 +1,4 @@
|
||||
"""Test the Tessie init."""
|
||||
"""Test the Teslemetry init."""
|
||||
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
@ -10,7 +10,10 @@ from tesla_fleet_api.exceptions import (
|
||||
VehicleOffline,
|
||||
)
|
||||
|
||||
from homeassistant.components.teslemetry.coordinator import VEHICLE_INTERVAL
|
||||
from homeassistant.components.teslemetry.coordinator import (
|
||||
VEHICLE_INTERVAL,
|
||||
VEHICLE_WAIT,
|
||||
)
|
||||
from homeassistant.components.teslemetry.models import TeslemetryData
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.const import Platform
|
||||
@ -18,6 +21,7 @@ from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
|
||||
from . import setup_platform
|
||||
from .const import VEHICLE_DATA_ALT
|
||||
|
||||
from tests.common import async_fire_time_changed
|
||||
|
||||
@ -90,6 +94,63 @@ async def test_vehicle_refresh_error(
|
||||
assert entry.state is state
|
||||
|
||||
|
||||
async def test_vehicle_sleep(
|
||||
hass: HomeAssistant, mock_vehicle_data, freezer: FrozenDateTimeFactory
|
||||
) -> None:
|
||||
"""Test coordinator refresh with an error."""
|
||||
await setup_platform(hass, [Platform.CLIMATE])
|
||||
assert mock_vehicle_data.call_count == 1
|
||||
|
||||
freezer.tick(VEHICLE_WAIT + VEHICLE_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
# Let vehicle sleep, no updates for 15 minutes
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 2
|
||||
|
||||
freezer.tick(VEHICLE_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
# No polling, call_count should not increase
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 2
|
||||
|
||||
freezer.tick(VEHICLE_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
# No polling, call_count should not increase
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 2
|
||||
|
||||
freezer.tick(VEHICLE_WAIT)
|
||||
async_fire_time_changed(hass)
|
||||
# Vehicle didn't sleep, go back to normal
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 3
|
||||
|
||||
freezer.tick(VEHICLE_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
# Regular polling
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 4
|
||||
|
||||
mock_vehicle_data.return_value = VEHICLE_DATA_ALT
|
||||
freezer.tick(VEHICLE_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
# Vehicle active
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 5
|
||||
|
||||
freezer.tick(VEHICLE_WAIT)
|
||||
async_fire_time_changed(hass)
|
||||
# Dont let sleep when active
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 6
|
||||
|
||||
freezer.tick(VEHICLE_WAIT)
|
||||
async_fire_time_changed(hass)
|
||||
# Dont let sleep when active
|
||||
await hass.async_block_till_done()
|
||||
assert mock_vehicle_data.call_count == 7
|
||||
|
||||
|
||||
# Test Energy Live Coordinator
|
||||
@pytest.mark.parametrize(("side_effect", "state"), ERRORS)
|
||||
async def test_energy_live_refresh_error(
|
||||
|
Loading…
x
Reference in New Issue
Block a user