diff --git a/homeassistant/components/nissan_leaf/__init__.py b/homeassistant/components/nissan_leaf/__init__.py index 75757ae4a25..a32ba2e6329 100644 --- a/homeassistant/components/nissan_leaf/__init__.py +++ b/homeassistant/components/nissan_leaf/__init__.py @@ -500,7 +500,7 @@ class LeafDataStore: class LeafEntity(Entity): """Base class for Nissan Leaf entity.""" - def __init__(self, car: Leaf) -> None: + def __init__(self, car: LeafDataStore) -> None: """Store LeafDataStore upon init.""" self.car = car diff --git a/homeassistant/components/nissan_leaf/binary_sensor.py b/homeassistant/components/nissan_leaf/binary_sensor.py index 7b8173cd31b..40880714c2a 100644 --- a/homeassistant/components/nissan_leaf/binary_sensor.py +++ b/homeassistant/components/nissan_leaf/binary_sensor.py @@ -3,8 +3,6 @@ from __future__ import annotations import logging -from pycarwings2.pycarwings2 import Leaf - from homeassistant.components.binary_sensor import ( BinarySensorDeviceClass, BinarySensorEntity, @@ -13,7 +11,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import LeafEntity +from . import LeafDataStore, LeafEntity from .const import DATA_CHARGING, DATA_LEAF, DATA_PLUGGED_IN _LOGGER = logging.getLogger(__name__) @@ -43,7 +41,7 @@ class LeafPluggedInSensor(LeafEntity, BinarySensorEntity): _attr_device_class = BinarySensorDeviceClass.PLUG - def __init__(self, car: Leaf) -> None: + def __init__(self, car: LeafDataStore) -> None: """Set up plug status sensor.""" super().__init__(car) self._attr_unique_id = f"{self.car.leaf.vin.lower()}_plugstatus" @@ -69,7 +67,7 @@ class LeafChargingSensor(LeafEntity, BinarySensorEntity): _attr_device_class = BinarySensorDeviceClass.BATTERY_CHARGING - def __init__(self, car: Leaf) -> None: + def __init__(self, car: LeafDataStore) -> None: """Set up charging status sensor.""" super().__init__(car) self._attr_unique_id = f"{self.car.leaf.vin.lower()}_chargingstatus" diff --git a/homeassistant/components/nissan_leaf/sensor.py b/homeassistant/components/nissan_leaf/sensor.py index c92ed2300a4..b0da5757db9 100644 --- a/homeassistant/components/nissan_leaf/sensor.py +++ b/homeassistant/components/nissan_leaf/sensor.py @@ -3,7 +3,6 @@ from __future__ import annotations import logging -from pycarwings2.pycarwings2 import Leaf from voluptuous.validators import Number from homeassistant.components.sensor import SensorDeviceClass, SensorEntity @@ -15,7 +14,7 @@ from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.util.unit_conversion import DistanceConverter from homeassistant.util.unit_system import US_CUSTOMARY_SYSTEM -from . import LeafEntity +from . import LeafDataStore, LeafEntity from .const import ( DATA_BATTERY, DATA_CHARGING, @@ -26,8 +25,6 @@ from .const import ( _LOGGER = logging.getLogger(__name__) -ICON_RANGE = "mdi:speedometer" - def setup_platform( hass: HomeAssistant, @@ -52,7 +49,10 @@ def setup_platform( class LeafBatterySensor(LeafEntity, SensorEntity): """Nissan Leaf Battery Sensor.""" - def __init__(self, car: Leaf) -> None: + _attr_device_class = SensorDeviceClass.BATTERY + _attr_native_unit_of_measurement = PERCENTAGE + + def __init__(self, car: LeafDataStore) -> None: """Set up battery sensor.""" super().__init__(car) self._attr_unique_id = f"{self.car.leaf.vin.lower()}_soc" @@ -62,11 +62,6 @@ class LeafBatterySensor(LeafEntity, SensorEntity): """Sensor Name.""" return f"{self.car.leaf.nickname} Charge" - @property - def device_class(self) -> str: - """Return the device class of the sensor.""" - return SensorDeviceClass.BATTERY - @property def native_value(self) -> Number | None: """Battery state percentage.""" @@ -74,11 +69,6 @@ class LeafBatterySensor(LeafEntity, SensorEntity): return None return round(self.car.data[DATA_BATTERY]) - @property - def native_unit_of_measurement(self) -> str: - """Battery state measured in percentage.""" - return PERCENTAGE - @property def icon(self) -> str: """Battery state icon handling.""" @@ -89,7 +79,9 @@ class LeafBatterySensor(LeafEntity, SensorEntity): class LeafRangeSensor(LeafEntity, SensorEntity): """Nissan Leaf Range Sensor.""" - def __init__(self, car: Leaf, ac_on: bool) -> None: + _attr_icon = "mdi:speedometer" + + def __init__(self, car: LeafDataStore, ac_on: bool) -> None: """Set up range sensor. Store if AC on.""" self._ac_on = ac_on super().__init__(car) @@ -115,6 +107,7 @@ class LeafRangeSensor(LeafEntity, SensorEntity): @property def native_value(self) -> float | None: """Battery range in miles or kms.""" + ret: float | None if self._ac_on: ret = self.car.data[DATA_RANGE_AC] else: @@ -134,8 +127,3 @@ class LeafRangeSensor(LeafEntity, SensorEntity): if self.car.hass.config.units is US_CUSTOMARY_SYSTEM or self.car.force_miles: return LENGTH_MILES return LENGTH_KILOMETERS - - @property - def icon(self) -> str: - """Nice icon for range.""" - return ICON_RANGE diff --git a/homeassistant/components/nissan_leaf/switch.py b/homeassistant/components/nissan_leaf/switch.py index 0d655622517..97f02a9e0be 100644 --- a/homeassistant/components/nissan_leaf/switch.py +++ b/homeassistant/components/nissan_leaf/switch.py @@ -4,14 +4,12 @@ from __future__ import annotations import logging from typing import Any -from pycarwings2.pycarwings2 import Leaf - from homeassistant.components.switch import SwitchEntity from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -from . import LeafEntity +from . import LeafDataStore, LeafEntity from .const import DATA_CLIMATE, DATA_LEAF _LOGGER = logging.getLogger(__name__) @@ -38,7 +36,7 @@ def setup_platform( class LeafClimateSwitch(LeafEntity, SwitchEntity): """Nissan Leaf Climate Control switch.""" - def __init__(self, car: Leaf) -> None: + def __init__(self, car: LeafDataStore) -> None: """Set up climate control switch.""" super().__init__(car) self._attr_unique_id = f"{self.car.leaf.vin.lower()}_climatecontrol"