1 """Battery Charge and Range Support for the Nissan Leaf."""
3 from __future__
import annotations
16 from .
import LeafDataStore
24 from .entity
import LeafEntity
26 _LOGGER = logging.getLogger(__name__)
32 add_entities: AddEntitiesCallback,
33 discovery_info: DiscoveryInfoType |
None =
None,
36 if discovery_info
is None:
39 entities: list[LeafEntity] = []
40 for vin, datastore
in hass.data[DATA_LEAF].items():
41 _LOGGER.debug(
"Adding sensors for vin=%s", vin)
50 """Nissan Leaf Battery Sensor."""
52 _attr_device_class = SensorDeviceClass.BATTERY
53 _attr_native_unit_of_measurement = PERCENTAGE
55 def __init__(self, car: LeafDataStore) ->
None:
56 """Set up battery sensor."""
63 return f
"{self.car.leaf.nickname} Charge"
67 """Battery state percentage."""
68 if self.
carcar.data[DATA_BATTERY]
is None:
70 return round(self.
carcar.data[DATA_BATTERY])
74 """Battery state icon handling."""
75 chargestate = self.
carcar.data[DATA_CHARGING]
80 """Nissan Leaf Range Sensor."""
82 _attr_icon =
"mdi:speedometer"
84 def __init__(self, car: LeafDataStore, ac_on: bool) ->
None:
85 """Set up range sensor. Store if AC on."""
91 self.
_attr_unique_id_attr_unique_id = f
"{self.car.leaf.vin.lower()}_range"
95 """Update sensor name depending on AC."""
96 if self.
_ac_on_ac_on
is True:
97 return f
"{self.car.leaf.nickname} Range (AC)"
98 return f
"{self.car.leaf.nickname} Range"
101 """Log registration."""
103 "Registered LeafRangeSensor integration with Home Assistant for VIN %s",
104 self.
carcar.leaf.vin,
109 """Battery range in miles or kms."""
112 ret = self.
carcar.data[DATA_RANGE_AC]
114 ret = self.
carcar.data[DATA_RANGE_AC_OFF]
119 if self.
carcar.hass.config.units
is US_CUSTOMARY_SYSTEM
or self.
carcar.force_miles:
120 ret = DistanceConverter.convert(
121 ret, UnitOfLength.KILOMETERS, UnitOfLength.MILES
128 """Battery range unit."""
129 if self.
carcar.hass.config.units
is US_CUSTOMARY_SYSTEM
or self.
carcar.force_miles:
130 return UnitOfLength.MILES
131 return UnitOfLength.KILOMETERS
StateType native_value(self)
None __init__(self, LeafDataStore car)
float|None native_value(self)
None log_registration(self)
str native_unit_of_measurement(self)
None __init__(self, LeafDataStore car, bool ac_on)
def add_entities(account, async_add_entities, tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
str icon_for_battery_level(int|None battery_level=None, bool charging=False)