Add new range sensors to Tessie (#110446)

* Add new sensors

* Fix tests
This commit is contained in:
Brett Adams 2024-02-20 06:50:20 +10:00 committed by GitHub
parent b35490404a
commit 980413c57f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 192 additions and 8 deletions

View file

@ -114,6 +114,22 @@ DESCRIPTIONS: tuple[TessieSensorEntityDescription, ...] = (
device_class=SensorDeviceClass.DISTANCE, device_class=SensorDeviceClass.DISTANCE,
suggested_display_precision=1, suggested_display_precision=1,
), ),
TessieSensorEntityDescription(
key="charge_state_est_battery_range",
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfLength.MILES,
device_class=SensorDeviceClass.DISTANCE,
suggested_display_precision=1,
entity_registry_enabled_default=False,
),
TessieSensorEntityDescription(
key="charge_state_ideal_battery_range",
state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=UnitOfLength.MILES,
device_class=SensorDeviceClass.DISTANCE,
suggested_display_precision=1,
entity_registry_enabled_default=False,
),
TessieSensorEntityDescription( TessieSensorEntityDescription(
key="drive_state_speed", key="drive_state_speed",
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,

View file

@ -102,6 +102,12 @@
"charge_state_battery_range": { "charge_state_battery_range": {
"name": "Battery range" "name": "Battery range"
}, },
"charge_state_est_battery_range": {
"name": "Battery range estimate"
},
"charge_state_ideal_battery_range": {
"name": "Battery range ideal"
},
"charge_state_minutes_to_full_charge": { "charge_state_minutes_to_full_charge": {
"name": "Time to full charge" "name": "Time to full charge"
}, },
@ -170,8 +176,12 @@
"charge_state_charge_port_door_open": { "charge_state_charge_port_door_open": {
"name": "Charge port door" "name": "Charge port door"
}, },
"vehicle_state_ft": { "name": "Frunk" }, "vehicle_state_ft": {
"vehicle_state_rt": { "name": "Trunk" } "name": "Frunk"
},
"vehicle_state_rt": {
"name": "Trunk"
}
}, },
"select": { "select": {
"climate_state_seat_heater_left": { "climate_state_seat_heater_left": {
@ -325,12 +335,24 @@
} }
}, },
"button": { "button": {
"wake": { "name": "Wake" }, "wake": {
"flash_lights": { "name": "Flash lights" }, "name": "Wake"
"honk": { "name": "Honk horn" }, },
"trigger_homelink": { "name": "Homelink" }, "flash_lights": {
"enable_keyless_driving": { "name": "Keyless driving" }, "name": "Flash lights"
"boombox": { "name": "Play fart" } },
"honk": {
"name": "Honk horn"
},
"trigger_homelink": {
"name": "Homelink"
},
"enable_keyless_driving": {
"name": "Keyless driving"
},
"boombox": {
"name": "Play fart"
}
}, },
"switch": { "switch": {
"charge_state_charge_enable_request": { "charge_state_charge_enable_request": {

View file

@ -105,6 +105,114 @@
'state': '424.35182592', 'state': '424.35182592',
}) })
# --- # ---
# name: test_sensors[sensor.test_battery_range_estimate-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_battery_range_estimate',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}),
}),
'original_device_class': <SensorDeviceClass.DISTANCE: 'distance'>,
'original_icon': None,
'original_name': 'Battery range estimate',
'platform': 'tessie',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'charge_state_est_battery_range',
'unique_id': 'VINVINVIN-charge_state_est_battery_range',
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
})
# ---
# name: test_sensors[sensor.test_battery_range_estimate-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'distance',
'friendly_name': 'Test Battery range estimate',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_battery_range_estimate',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '522.60227712',
})
# ---
# name: test_sensors[sensor.test_battery_range_ideal-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_battery_range_ideal',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 1,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}),
}),
'original_device_class': <SensorDeviceClass.DISTANCE: 'distance'>,
'original_icon': None,
'original_name': 'Battery range ideal',
'platform': 'tessie',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'charge_state_ideal_battery_range',
'unique_id': 'VINVINVIN-charge_state_ideal_battery_range',
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
})
# ---
# name: test_sensors[sensor.test_battery_range_ideal-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'distance',
'friendly_name': 'Test Battery range ideal',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}),
'context': <ANY>,
'entity_id': 'sensor.test_battery_range_ideal',
'last_changed': <ANY>,
'last_updated': <ANY>,
'state': '424.35182592',
})
# ---
# name: test_sensors[sensor.test_charge_energy_added-entry] # name: test_sensors[sensor.test_charge_energy_added-entry]
EntityRegistryEntrySnapshot({ EntityRegistryEntrySnapshot({
'aliases': set({ 'aliases': set({
@ -470,6 +578,42 @@
'state': 'Giga Texas', 'state': 'Giga Texas',
}) })
# --- # ---
# name: test_sensors[sensor.test_distance-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': <RegistryEntryDisabler.INTEGRATION: 'integration'>,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.test_distance',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'name': None,
'options': dict({
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
}),
}),
'original_device_class': <SensorDeviceClass.DISTANCE: 'distance'>,
'original_icon': None,
'original_name': 'Distance',
'platform': 'tessie',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'charge_state_est_battery_range',
'unique_id': 'VINVINVIN-charge_state_est_battery_range',
'unit_of_measurement': <UnitOfLength.KILOMETERS: 'km'>,
})
# ---
# name: test_sensors[sensor.test_distance_to_arrival-entry] # name: test_sensors[sensor.test_distance_to_arrival-entry]
EntityRegistryEntrySnapshot({ EntityRegistryEntrySnapshot({
'aliases': set({ 'aliases': set({

View file

@ -1,5 +1,6 @@
"""Test the Tessie sensor platform.""" """Test the Tessie sensor platform."""
from freezegun.api import FrozenDateTimeFactory from freezegun.api import FrozenDateTimeFactory
import pytest
from syrupy import SnapshotAssertion from syrupy import SnapshotAssertion
from homeassistant.const import Platform from homeassistant.const import Platform
@ -9,6 +10,7 @@ from homeassistant.helpers import entity_registry as er
from .common import assert_entities, setup_platform from .common import assert_entities, setup_platform
@pytest.mark.usefixtures("entity_registry_enabled_by_default")
async def test_sensors( async def test_sensors(
hass: HomeAssistant, hass: HomeAssistant,
snapshot: SnapshotAssertion, snapshot: SnapshotAssertion,