diff --git a/homeassistant/components/shelly/sensor.py b/homeassistant/components/shelly/sensor.py index d66076d1754..f10e0864061 100644 --- a/homeassistant/components/shelly/sensor.py +++ b/homeassistant/components/shelly/sensor.py @@ -4,6 +4,7 @@ import aioshelly from homeassistant.components import sensor from homeassistant.const import ( CONCENTRATION_PARTS_PER_MILLION, + DEGREE, ELECTRICAL_CURRENT_AMPERE, ENERGY_KILO_WATT_HOUR, POWER_WATT, @@ -26,8 +27,11 @@ SENSORS = { "energyReturned": [ENERGY_KILO_WATT_HOUR, sensor.DEVICE_CLASS_ENERGY], "extTemp": [None, sensor.DEVICE_CLASS_TEMPERATURE], "humidity": [UNIT_PERCENTAGE, sensor.DEVICE_CLASS_HUMIDITY], + "luminosity": ["lx", sensor.DEVICE_CLASS_ILLUMINANCE], "overpowerValue": [POWER_WATT, sensor.DEVICE_CLASS_POWER], "power": [POWER_WATT, sensor.DEVICE_CLASS_POWER], + "powerFactor": [UNIT_PERCENTAGE, sensor.DEVICE_CLASS_POWER_FACTOR], + "tilt": [DEGREE, None], "voltage": [VOLT, sensor.DEVICE_CLASS_VOLTAGE], } @@ -93,6 +97,8 @@ class ShellySensor(ShellyBlockEntity, Entity): if value is None: return None + if self.attribute in ["luminosity", "tilt"]: + return round(value) if self.attribute in [ "deviceTemp", "extTemp", @@ -101,6 +107,8 @@ class ShellySensor(ShellyBlockEntity, Entity): "power", ]: return round(value, 1) + if self.attribute == "powerFactor": + return round(value * 100, 1) # Energy unit change from Wmin or Wh to kWh if self.info.get(aioshelly.BLOCK_VALUE_UNIT) == "Wmin": return round(value / 60 / 1000, 2)