Skip to content

Commit

Permalink
fix: use car distance units & fix solar type
Browse files Browse the repository at this point in the history
closes #284
  • Loading branch information
shred86 authored and alandtse committed Oct 22, 2022
1 parent 38fa02b commit 2617d71
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 22 deletions.
2 changes: 1 addition & 1 deletion custom_components/tesla_custom/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
1 change: 1 addition & 0 deletions custom_components/tesla_custom/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
17 changes: 8 additions & 9 deletions custom_components/tesla_custom/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
SensorStateClass,
)
from homeassistant.const import (
CONF_UNIT_SYSTEM_METRIC,
ENERGY_KILO_WATT_HOUR,
ENERGY_WATT_HOUR,
LENGTH_KILOMETERS,
Expand All @@ -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"]
Expand Down Expand Up @@ -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
)
Expand Down Expand Up @@ -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
)
Expand All @@ -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
Expand Down Expand Up @@ -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
)
Expand All @@ -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
Expand Down Expand Up @@ -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
)
Expand All @@ -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
Expand Down
22 changes: 10 additions & 12 deletions tests/test_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
ATTR_UNIT_OF_MEASUREMENT,
ENERGY_KILO_WATT_HOUR,
ENERGY_WATT_HOUR,
LENGTH_KILOMETERS,
LENGTH_MILES,
PERCENTAGE,
POWER_WATT,
TEMP_CELSIUS,
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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:
Expand All @@ -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:
Expand Down

0 comments on commit 2617d71

Please sign in to comment.