mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Move calculation of current value into lib in Fritz!SmartHome (#89150)
This commit is contained in:
parent
b7ac0058af
commit
d4edec2863
@ -74,17 +74,6 @@ def suitable_temperature(device: FritzhomeDevice) -> bool:
|
|||||||
return device.has_temperature_sensor and not device.has_thermostat
|
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:
|
def value_nextchange_preset(device: FritzhomeDevice) -> str:
|
||||||
"""Return native value for next scheduled preset sensor."""
|
"""Return native value for next scheduled preset sensor."""
|
||||||
if device.nextchange_temperature == device.eco_temperature:
|
if device.nextchange_temperature == device.eco_temperature:
|
||||||
@ -153,7 +142,7 @@ SENSOR_TYPES: Final[tuple[FritzSensorEntityDescription, ...]] = (
|
|||||||
device_class=SensorDeviceClass.CURRENT,
|
device_class=SensorDeviceClass.CURRENT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
suitable=lambda device: device.has_powermeter, # type: ignore[no-any-return]
|
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(
|
FritzSensorEntityDescription(
|
||||||
key="total_energy",
|
key="total_energy",
|
||||||
|
@ -129,6 +129,7 @@ class FritzDeviceSwitchMock(FritzEntityBaseMock):
|
|||||||
device_lock = "fake_locked_device"
|
device_lock = "fake_locked_device"
|
||||||
energy = 1234
|
energy = 1234
|
||||||
voltage = 230000
|
voltage = 230000
|
||||||
|
current = 25
|
||||||
fw_version = "1.2.3"
|
fw_version = "1.2.3"
|
||||||
has_alarm = False
|
has_alarm = False
|
||||||
has_powermeter = True
|
has_powermeter = True
|
||||||
|
@ -174,21 +174,3 @@ async def test_assume_device_unavailable(hass: HomeAssistant, fritz: Mock) -> No
|
|||||||
state = hass.states.get(ENTITY_ID)
|
state = hass.states.get(ENTITY_ID)
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_UNAVAILABLE
|
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"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user