mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Add availability property to DSMR sensors (#84848)
This commit is contained in:
parent
eba64f84ef
commit
1b3d3d5cc3
@ -568,6 +568,11 @@ class DSMREntity(SensorEntity):
|
||||
attr: str | None = getattr(dsmr_object, attribute)
|
||||
return attr
|
||||
|
||||
@property
|
||||
def available(self) -> bool:
|
||||
"""Entity is only available if there is a telegram."""
|
||||
return bool(self.telegram)
|
||||
|
||||
@property
|
||||
def native_value(self) -> StateType:
|
||||
"""Return the state of sensor, if available, translate if needed."""
|
||||
|
@ -23,8 +23,9 @@ from homeassistant.const import (
|
||||
ATTR_ICON,
|
||||
ATTR_UNIT_OF_MEASUREMENT,
|
||||
ENERGY_KILO_WATT_HOUR,
|
||||
STATE_UNKNOWN,
|
||||
STATE_UNAVAILABLE,
|
||||
VOLUME_CUBIC_METERS,
|
||||
UnitOfPower,
|
||||
)
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
@ -56,13 +57,13 @@ async def test_default_setup(hass, dsmr_connection_fixture):
|
||||
|
||||
telegram = {
|
||||
CURRENT_ELECTRICITY_USAGE: CosemObject(
|
||||
[{"value": Decimal("0.0"), "unit": ENERGY_KILO_WATT_HOUR}]
|
||||
[{"value": Decimal("0.0"), "unit": UnitOfPower.WATT}]
|
||||
),
|
||||
ELECTRICITY_ACTIVE_TARIFF: CosemObject([{"value": "0001", "unit": ""}]),
|
||||
GAS_METER_READING: MBusObject(
|
||||
[
|
||||
{"value": datetime.datetime.fromtimestamp(1551642213)},
|
||||
{"value": Decimal(745.695), "unit": "m3"},
|
||||
{"value": Decimal(745.695), "unit": VOLUME_CUBIC_METERS},
|
||||
]
|
||||
),
|
||||
}
|
||||
@ -88,9 +89,9 @@ async def test_default_setup(hass, dsmr_connection_fixture):
|
||||
|
||||
telegram_callback = connection_factory.call_args_list[0][0][2]
|
||||
|
||||
# make sure entities have been created and return 'unknown' state
|
||||
# make sure entities have been created and return 'unavailable' state
|
||||
power_consumption = hass.states.get("sensor.electricity_meter_power_consumption")
|
||||
assert power_consumption.state == STATE_UNKNOWN
|
||||
assert power_consumption.state == STATE_UNAVAILABLE
|
||||
assert (
|
||||
power_consumption.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.POWER
|
||||
)
|
||||
@ -110,9 +111,7 @@ async def test_default_setup(hass, dsmr_connection_fixture):
|
||||
# ensure entities have new state value after incoming telegram
|
||||
power_consumption = hass.states.get("sensor.electricity_meter_power_consumption")
|
||||
assert power_consumption.state == "0.0"
|
||||
assert (
|
||||
power_consumption.attributes.get("unit_of_measurement") == ENERGY_KILO_WATT_HOUR
|
||||
)
|
||||
assert power_consumption.attributes.get("unit_of_measurement") == UnitOfPower.WATT
|
||||
|
||||
# tariff should be translated in human readable and have no unit
|
||||
active_tariff = hass.states.get("sensor.electricity_meter_active_tariff")
|
||||
|
Loading…
x
Reference in New Issue
Block a user