mirror of
https://github.com/home-assistant/core
synced 2024-09-12 15:16:21 +02:00
Add Record distance sensor to MyPermobil (#106519)
* add record-distance-sensor * simplify UOM property * remove uom for record_distance description * remove redundant code * Update homeassistant/components/permobil/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
parent
454201d0a8
commit
756292234e
@ -15,6 +15,8 @@ from mypermobil import (
|
|||||||
BATTERY_MAX_DISTANCE_LEFT,
|
BATTERY_MAX_DISTANCE_LEFT,
|
||||||
BATTERY_STATE_OF_CHARGE,
|
BATTERY_STATE_OF_CHARGE,
|
||||||
BATTERY_STATE_OF_HEALTH,
|
BATTERY_STATE_OF_HEALTH,
|
||||||
|
RECORDS_DISTANCE,
|
||||||
|
RECORDS_DISTANCE_UNIT,
|
||||||
RECORDS_SEATING,
|
RECORDS_SEATING,
|
||||||
USAGE_ADJUSTMENTS,
|
USAGE_ADJUSTMENTS,
|
||||||
USAGE_DISTANCE,
|
USAGE_DISTANCE,
|
||||||
@ -32,7 +34,7 @@ from homeassistant.core import HomeAssistant
|
|||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||||
|
|
||||||
from .const import BATTERY_ASSUMED_VOLTAGE, DOMAIN
|
from .const import BATTERY_ASSUMED_VOLTAGE, DOMAIN, KM, MILES
|
||||||
from .coordinator import MyPermobilCoordinator
|
from .coordinator import MyPermobilCoordinator
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@ -159,7 +161,7 @@ SENSOR_DESCRIPTIONS: tuple[PermobilSensorEntityDescription, ...] = (
|
|||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
PermobilSensorEntityDescription(
|
PermobilSensorEntityDescription(
|
||||||
# Largest number of adjustemnts in a single 24h period, never resets
|
# Largest number of adjustemnts in a single 24h period, monotonically increasing, never resets
|
||||||
value_fn=lambda data: data.records[RECORDS_SEATING[0]],
|
value_fn=lambda data: data.records[RECORDS_SEATING[0]],
|
||||||
available_fn=lambda data: RECORDS_SEATING[0] in data.records,
|
available_fn=lambda data: RECORDS_SEATING[0] in data.records,
|
||||||
key="record_adjustments",
|
key="record_adjustments",
|
||||||
@ -168,8 +170,22 @@ SENSOR_DESCRIPTIONS: tuple[PermobilSensorEntityDescription, ...] = (
|
|||||||
native_unit_of_measurement="adjustments",
|
native_unit_of_measurement="adjustments",
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
|
PermobilSensorEntityDescription(
|
||||||
|
# Record of largest distance travelled in a day, monotonically increasing, never resets
|
||||||
|
value_fn=lambda data: data.records[RECORDS_DISTANCE[0]],
|
||||||
|
available_fn=lambda data: RECORDS_DISTANCE[0] in data.records,
|
||||||
|
key="record_distance",
|
||||||
|
translation_key="record_distance",
|
||||||
|
icon="mdi:map-marker-distance",
|
||||||
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
DISTANCE_UNITS: dict[Any, UnitOfLength] = {
|
||||||
|
KM: UnitOfLength.KILOMETERS,
|
||||||
|
MILES: UnitOfLength.MILES,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@ -209,6 +225,15 @@ class PermobilSensor(CoordinatorEntity[MyPermobilCoordinator], SensorEntity):
|
|||||||
f"{coordinator.p_api.email}_{self.entity_description.key}"
|
f"{coordinator.p_api.email}_{self.entity_description.key}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def native_unit_of_measurement(self) -> str | None:
|
||||||
|
"""Return the unit of measurement of the sensor."""
|
||||||
|
if self.entity_description.key == "record_distance":
|
||||||
|
return DISTANCE_UNITS.get(
|
||||||
|
self.coordinator.data.records[RECORDS_DISTANCE_UNIT[0]]
|
||||||
|
)
|
||||||
|
return self.entity_description.native_unit_of_measurement
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def available(self) -> bool:
|
def available(self) -> bool:
|
||||||
"""Return True if the sensor has value."""
|
"""Return True if the sensor has value."""
|
||||||
|
@ -64,6 +64,9 @@
|
|||||||
},
|
},
|
||||||
"record_adjustments": {
|
"record_adjustments": {
|
||||||
"name": "Record number of adjustments"
|
"name": "Record number of adjustments"
|
||||||
|
},
|
||||||
|
"record_distance": {
|
||||||
|
"name": "Record distance"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user