Fix voltage and current values for Fritz!DECT smart plugs (#73608)
fix voltage and current values
This commit is contained in:
parent
cdd5a5f68b
commit
e30478457b
2 changed files with 48 additions and 21 deletions
|
@ -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,
|
||||
),
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Reference in a new issue