Move calculation of current value into lib in Fritz!SmartHome (#89150)

This commit is contained in:
Michael 2023-03-15 18:59:03 +01:00 committed by GitHub
parent b7ac0058af
commit d4edec2863
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 2 additions and 30 deletions

View file

@ -74,17 +74,6 @@ def suitable_temperature(device: FritzhomeDevice) -> bool:
return device.has_temperature_sensor and not device.has_thermostat
def value_electric_current(device: FritzhomeDevice) -> float:
"""Return native value for electric current sensor."""
if (
isinstance(device.power, int)
and isinstance(device.voltage, int)
and device.voltage > 0
):
return round(device.power / device.voltage, 3)
return 0.0
def value_nextchange_preset(device: FritzhomeDevice) -> str:
"""Return native value for next scheduled preset sensor."""
if device.nextchange_temperature == device.eco_temperature:
@ -153,7 +142,7 @@ SENSOR_TYPES: Final[tuple[FritzSensorEntityDescription, ...]] = (
device_class=SensorDeviceClass.CURRENT,
state_class=SensorStateClass.MEASUREMENT,
suitable=lambda device: device.has_powermeter, # type: ignore[no-any-return]
native_value=value_electric_current,
native_value=lambda device: round((device.current or 0.0) / 1000, 3),
),
FritzSensorEntityDescription(
key="total_energy",

View file

@ -129,6 +129,7 @@ class FritzDeviceSwitchMock(FritzEntityBaseMock):
device_lock = "fake_locked_device"
energy = 1234
voltage = 230000
current = 25
fw_version = "1.2.3"
has_alarm = False
has_powermeter = True

View file

@ -174,21 +174,3 @@ async def test_assume_device_unavailable(hass: HomeAssistant, fritz: Mock) -> No
state = hass.states.get(ENTITY_ID)
assert state
assert state.state == STATE_UNAVAILABLE
async def test_device_current_unavailable(hass: HomeAssistant, fritz: Mock) -> None:
"""Test current in case voltage and power are not available."""
device = FritzDeviceSwitchMock()
device.voltage = None
device.power = None
assert await setup_config_entry(
hass, MOCK_CONFIG[FB_DOMAIN][CONF_DEVICES][0], ENTITY_ID, device, fritz
)
state = hass.states.get(ENTITY_ID)
assert state
assert state.state == STATE_ON
state = hass.states.get(f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_electric_current")
assert state
assert state.state == "0.0"