diff --git a/custom_components/tesla_custom/base.py b/custom_components/tesla_custom/base.py index c1f77649..e9f458df 100644 --- a/custom_components/tesla_custom/base.py +++ b/custom_components/tesla_custom/base.py @@ -160,7 +160,7 @@ def sw_version(self) -> bool: @property def device_info(self) -> DeviceInfo: """Return device info.""" - model = f"{self._energysite.resource_type.title()} {self._energysite.solar_type.replace('_', ' ')}" + model = f"{self._energysite.resource_type.title()}" return DeviceInfo( identifiers={(DOMAIN, self._energysite.energysite_id)}, manufacturer="Tesla", diff --git a/custom_components/tesla_custom/const.py b/custom_components/tesla_custom/const.py index 46b67584..c77ff9d4 100644 --- a/custom_components/tesla_custom/const.py +++ b/custom_components/tesla_custom/const.py @@ -40,5 +40,6 @@ ATTR_POLLING_POLICY_ALWAYS = "always" ATTR_VIN = "vin" DEFAULT_POLLING_POLICY = ATTR_POLLING_POLICY_NORMAL +DISTANCE_UNITS_KM_HR = "km/hr" SERVICE_API = "api" SERVICE_SCAN_INTERVAL = "polling_interval" diff --git a/custom_components/tesla_custom/sensor.py b/custom_components/tesla_custom/sensor.py index 35c75662..84619f31 100644 --- a/custom_components/tesla_custom/sensor.py +++ b/custom_components/tesla_custom/sensor.py @@ -9,7 +9,6 @@ SensorStateClass, ) from homeassistant.const import ( - CONF_UNIT_SYSTEM_METRIC, ENERGY_KILO_WATT_HOUR, ENERGY_WATT_HOUR, LENGTH_KILOMETERS, @@ -27,7 +26,7 @@ from . import TeslaDataUpdateCoordinator from .base import TeslaCarEntity, TeslaEnergyEntity -from .const import DOMAIN +from .const import DISTANCE_UNITS_KM_HR, DOMAIN SOLAR_SITE_SENSORS = ["solar power", "grid power", "load power"] BATTERY_SITE_SENSORS = SOLAR_SITE_SENSORS + ["battery power"] @@ -150,7 +149,7 @@ def extra_state_attributes(self): else: added_range = 0 - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: added_range = DistanceConverter.convert( added_range, LENGTH_MILES, LENGTH_KILOMETERS ) @@ -215,7 +214,7 @@ def native_value(self) -> float: if charge_rate is None: return charge_rate - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: charge_rate = DistanceConverter.convert( charge_rate, LENGTH_MILES, LENGTH_KILOMETERS ) @@ -225,7 +224,7 @@ def native_value(self) -> float: @property def native_unit_of_measurement(self) -> str: """Return distance units.""" - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: return SPEED_KILOMETERS_PER_HOUR return SPEED_MILES_PER_HOUR @@ -262,7 +261,7 @@ def native_value(self) -> float: if odometer_value is None: return None - if self.native_unit_of_measurement == LENGTH_KILOMETERS: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: odometer_value = DistanceConverter.convert( odometer_value, LENGTH_MILES, LENGTH_KILOMETERS ) @@ -272,7 +271,7 @@ def native_value(self) -> float: @property def native_unit_of_measurement(self) -> str: """Return distance units.""" - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: return LENGTH_KILOMETERS return LENGTH_MILES @@ -305,7 +304,7 @@ def native_value(self) -> float: if range_value is None: return None - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: range_value = DistanceConverter.convert( range_value, LENGTH_MILES, LENGTH_KILOMETERS ) @@ -315,7 +314,7 @@ def native_value(self) -> float: @property def native_unit_of_measurement(self) -> str: """Return distance units.""" - if self._unit_system == CONF_UNIT_SYSTEM_METRIC: + if self._car.gui_distance_units == DISTANCE_UNITS_KM_HR: return LENGTH_KILOMETERS return LENGTH_MILES diff --git a/tests/test_sensor.py b/tests/test_sensor.py index 3fcd7c06..0c97ca4e 100644 --- a/tests/test_sensor.py +++ b/tests/test_sensor.py @@ -10,7 +10,7 @@ ATTR_UNIT_OF_MEASUREMENT, ENERGY_KILO_WATT_HOUR, ENERGY_WATT_HOUR, - LENGTH_KILOMETERS, + LENGTH_MILES, PERCENTAGE, POWER_WATT, TEMP_CELSIUS, @@ -188,9 +188,7 @@ async def test_charger_rate_value(hass: HomeAssistant) -> None: await setup_platform(hass, SENSOR_DOMAIN) state = hass.states.get("sensor.my_model_s_charging_rate") - # Test state against km/hr - # Tesla API returns in miles so manually set charge rate to km/hr - assert state.state == "37.34" + assert state.state == str(car_mock_data.VEHICLE_DATA["charge_state"]["charge_rate"]) assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT @@ -243,12 +241,12 @@ async def test_odometer_value(hass: HomeAssistant) -> None: await setup_platform(hass, SENSOR_DOMAIN) state = hass.states.get("sensor.my_model_s_odometer") - # Test state against odometer in kilometers - # Tesla API returns in miles so manually set range in kilometers - assert state.state == "114127.59" + assert state.state == str( + round(car_mock_data.VEHICLE_DATA["vehicle_state"]["odometer"], 1) + ) assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.TOTAL_INCREASING - assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_KILOMETERS + assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_MILES async def test_outside_temp_value(hass: HomeAssistant) -> None: @@ -270,12 +268,12 @@ async def test_range_value(hass: HomeAssistant) -> None: await setup_platform(hass, SENSOR_DOMAIN) state = hass.states.get("sensor.my_model_s_range") - # Test state against range in kilometers - # Tesla API returns in miles so manually set range in kilometers - assert state.state == "272.11" + assert state.state == str( + car_mock_data.VEHICLE_DATA["charge_state"]["battery_range"] + ) assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT - assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_KILOMETERS + assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_MILES async def test_solar_power_value(hass: HomeAssistant) -> None: