diff --git a/homeassistant/components/shelly/sensor.py b/homeassistant/components/shelly/sensor.py index 1f91cf4844b..1e09c4b8e8f 100644 --- a/homeassistant/components/shelly/sensor.py +++ b/homeassistant/components/shelly/sensor.py @@ -20,6 +20,7 @@ from homeassistant.const import ( LIGHT_LUX, PERCENTAGE, SIGNAL_STRENGTH_DECIBELS_MILLIWATT, + UnitOfApparentPower, UnitOfElectricCurrent, UnitOfElectricPotential, UnitOfEnergy, @@ -318,10 +319,78 @@ RPC_SENSORS: Final = { sub_key="apower", name="Power", native_unit_of_measurement=UnitOfPower.WATT, - value=lambda status, _: None if status is None else round(float(status), 1), device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, ), + "a_act_power": RpcSensorDescription( + key="em", + sub_key="a_act_power", + name="Phase A active power", + native_unit_of_measurement=UnitOfPower.WATT, + device_class=SensorDeviceClass.POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "b_act_power": RpcSensorDescription( + key="em", + sub_key="b_act_power", + name="Phase B active power", + native_unit_of_measurement=UnitOfPower.WATT, + device_class=SensorDeviceClass.POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "c_act_power": RpcSensorDescription( + key="em", + sub_key="c_act_power", + name="Phase C active power", + native_unit_of_measurement=UnitOfPower.WATT, + device_class=SensorDeviceClass.POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "a_aprt_power": RpcSensorDescription( + key="em", + sub_key="a_aprt_power", + name="Phase A apparent power", + native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE, + device_class=SensorDeviceClass.APPARENT_POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "b_aprt_power": RpcSensorDescription( + key="em", + sub_key="b_aprt_power", + name="Phase B apparent power", + native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE, + device_class=SensorDeviceClass.APPARENT_POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "c_aprt_power": RpcSensorDescription( + key="em", + sub_key="c_aprt_power", + name="Phase C apparent power", + native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE, + device_class=SensorDeviceClass.APPARENT_POWER, + state_class=SensorStateClass.MEASUREMENT, + ), + "a_pf": RpcSensorDescription( + key="em", + sub_key="a_pf", + name="Phase A power factor", + device_class=SensorDeviceClass.POWER_FACTOR, + state_class=SensorStateClass.MEASUREMENT, + ), + "b_pf": RpcSensorDescription( + key="em", + sub_key="b_pf", + name="Phase B power factor", + device_class=SensorDeviceClass.POWER_FACTOR, + state_class=SensorStateClass.MEASUREMENT, + ), + "c_pf": RpcSensorDescription( + key="em", + sub_key="c_pf", + name="Phase C power factor", + device_class=SensorDeviceClass.POWER_FACTOR, + state_class=SensorStateClass.MEASUREMENT, + ), "voltage": RpcSensorDescription( key="switch", sub_key="voltage", @@ -332,6 +401,60 @@ RPC_SENSORS: Final = { state_class=SensorStateClass.MEASUREMENT, entity_registry_enabled_default=False, ), + "a_voltage": RpcSensorDescription( + key="em", + sub_key="a_voltage", + name="Phase A voltage", + native_unit_of_measurement=UnitOfElectricPotential.VOLT, + device_class=SensorDeviceClass.VOLTAGE, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + "b_voltage": RpcSensorDescription( + key="em", + sub_key="b_voltage", + name="Phase B voltage", + native_unit_of_measurement=UnitOfElectricPotential.VOLT, + device_class=SensorDeviceClass.VOLTAGE, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + "c_voltage": RpcSensorDescription( + key="em", + sub_key="c_voltage", + name="Phase C voltage", + native_unit_of_measurement=UnitOfElectricPotential.VOLT, + device_class=SensorDeviceClass.VOLTAGE, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + "a_current": RpcSensorDescription( + key="em", + sub_key="a_current", + name="Phase A current", + native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, + device_class=SensorDeviceClass.CURRENT, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + "b_current": RpcSensorDescription( + key="em", + sub_key="b_current", + name="Phase B current", + native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, + device_class=SensorDeviceClass.CURRENT, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + "c_current": RpcSensorDescription( + key="em", + sub_key="c_current", + name="Phase C current", + native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, + device_class=SensorDeviceClass.CURRENT, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), "energy": RpcSensorDescription( key="switch", sub_key="aenergy",