diff --git a/homeassistant/components/fritzbox/sensor.py b/homeassistant/components/fritzbox/sensor.py index 2ae7f9dccc8..161dfc196d2 100644 --- a/homeassistant/components/fritzbox/sensor.py +++ b/homeassistant/components/fritzbox/sensor.py @@ -96,7 +96,7 @@ SENSOR_TYPES: Final[tuple[FritzSensorEntityDescription, ...]] = ( device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, suitable=lambda device: device.has_powermeter, # type: ignore[no-any-return] - native_value=lambda device: device.voltage / 1000 + native_value=lambda device: device.voltage if getattr(device, "voltage", None) else 0.0, ), @@ -107,7 +107,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=lambda device: device.power / device.voltage + native_value=lambda device: device.power / device.voltage / 1000 if device.power and getattr(device, "voltage", None) else 0.0, ), diff --git a/tests/components/fritzbox/test_switch.py b/tests/components/fritzbox/test_switch.py index a3135dd61f3..75799a08d48 100644 --- a/tests/components/fritzbox/test_switch.py +++ b/tests/components/fritzbox/test_switch.py @@ -16,6 +16,8 @@ from homeassistant.const import ( ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT, CONF_DEVICES, + ELECTRIC_CURRENT_AMPERE, + ELECTRIC_POTENTIAL_VOLT, ENERGY_KILO_WATT_HOUR, POWER_WATT, SERVICE_TURN_OFF, @@ -48,29 +50,54 @@ async def test_setup(hass: HomeAssistant, fritz: Mock): assert state.attributes[ATTR_FRIENDLY_NAME] == CONF_FAKE_NAME assert ATTR_STATE_CLASS not in state.attributes - state = hass.states.get(f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_temperature") - assert state - assert state.state == "1.23" - assert state.attributes[ATTR_FRIENDLY_NAME] == f"{CONF_FAKE_NAME} Temperature" - assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == TEMP_CELSIUS - assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.MEASUREMENT - state = hass.states.get(f"{ENTITY_ID}_humidity") assert state is None - state = hass.states.get(f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_power_consumption") - assert state - assert state.state == "5.678" - assert state.attributes[ATTR_FRIENDLY_NAME] == f"{CONF_FAKE_NAME} Power Consumption" - assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == POWER_WATT - assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.MEASUREMENT + sensors = ( + [ + f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_temperature", + "1.23", + f"{CONF_FAKE_NAME} Temperature", + TEMP_CELSIUS, + SensorStateClass.MEASUREMENT, + ], + [ + f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_power_consumption", + "5.678", + f"{CONF_FAKE_NAME} Power Consumption", + POWER_WATT, + SensorStateClass.MEASUREMENT, + ], + [ + f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_total_energy", + "1.234", + f"{CONF_FAKE_NAME} Total Energy", + ENERGY_KILO_WATT_HOUR, + SensorStateClass.TOTAL_INCREASING, + ], + [ + f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_voltage", + "230", + f"{CONF_FAKE_NAME} Voltage", + ELECTRIC_POTENTIAL_VOLT, + SensorStateClass.MEASUREMENT, + ], + [ + f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_electric_current", + "0.0246869565217391", + f"{CONF_FAKE_NAME} Electric Current", + ELECTRIC_CURRENT_AMPERE, + SensorStateClass.MEASUREMENT, + ], + ) - state = hass.states.get(f"{SENSOR_DOMAIN}.{CONF_FAKE_NAME}_total_energy") - assert state - assert state.state == "1.234" - assert state.attributes[ATTR_FRIENDLY_NAME] == f"{CONF_FAKE_NAME} Total Energy" - assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == ENERGY_KILO_WATT_HOUR - assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.TOTAL_INCREASING + for sensor in sensors: + state = hass.states.get(sensor[0]) + assert state + assert state.state == sensor[1] + assert state.attributes[ATTR_FRIENDLY_NAME] == sensor[2] + assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == sensor[3] + assert state.attributes[ATTR_STATE_CLASS] == sensor[4] async def test_turn_on(hass: HomeAssistant, fritz: Mock):