From 614be5c1bb0567b9589416b2fe3002f6b4a371d2 Mon Sep 17 00:00:00 2001 From: Vilppu Vuorinen Date: Fri, 14 Feb 2020 22:11:51 +0200 Subject: [PATCH] Remove energy sensor from incompatible Ata devices (#31831) An AtaDevice has a boolean flag describing whether it supports energy consumption metering. The flag was ignored resulting in sensor entities reporting constant 0 kWh consumption. * Update pymelcloud dependency to support the has_energy_consumed_meter flag. * Add ATTR_ENABLED_FN to sensor definitions for filtering out unsupported sensors. * Fix typing issue in sensor constructor. * Remove unused UnitSystem constructor parameter. --- homeassistant/components/melcloud/manifest.json | 2 +- homeassistant/components/melcloud/sensor.py | 12 ++++++++---- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/melcloud/manifest.json b/homeassistant/components/melcloud/manifest.json index 43331def303..55edcdd0d9f 100644 --- a/homeassistant/components/melcloud/manifest.json +++ b/homeassistant/components/melcloud/manifest.json @@ -3,7 +3,7 @@ "name": "MELCloud", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/melcloud", - "requirements": ["pymelcloud==2.0.0"], + "requirements": ["pymelcloud==2.1.0"], "dependencies": [], "codeowners": ["@vilppuvuorinen"] } diff --git a/homeassistant/components/melcloud/sensor.py b/homeassistant/components/melcloud/sensor.py index 428c83a4ee3..8f55906443e 100644 --- a/homeassistant/components/melcloud/sensor.py +++ b/homeassistant/components/melcloud/sensor.py @@ -1,12 +1,12 @@ """Support for MelCloud device sensors.""" import logging -from pymelcloud import DEVICE_TYPE_ATA, AtaDevice +from pymelcloud import DEVICE_TYPE_ATA from homeassistant.const import DEVICE_CLASS_TEMPERATURE, TEMP_CELSIUS from homeassistant.helpers.entity import Entity -from homeassistant.util.unit_system import UnitSystem +from . import MelCloudDevice from .const import DOMAIN, TEMP_UNIT_LOOKUP ATTR_MEASUREMENT_NAME = "measurement_name" @@ -14,6 +14,7 @@ ATTR_ICON = "icon" ATTR_UNIT_FN = "unit_fn" ATTR_DEVICE_CLASS = "device_class" ATTR_VALUE_FN = "value_fn" +ATTR_ENABLED_FN = "enabled" SENSORS = { "room_temperature": { @@ -22,6 +23,7 @@ SENSORS = { ATTR_UNIT_FN: lambda x: TEMP_UNIT_LOOKUP.get(x.device.temp_unit, TEMP_CELSIUS), ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE, ATTR_VALUE_FN: lambda x: x.device.room_temperature, + ATTR_ENABLED_FN: lambda x: True, }, "energy": { ATTR_MEASUREMENT_NAME: "Energy", @@ -29,6 +31,7 @@ SENSORS = { ATTR_UNIT_FN: lambda x: "kWh", ATTR_DEVICE_CLASS: None, ATTR_VALUE_FN: lambda x: x.device.total_energy_consumed, + ATTR_ENABLED_FN: lambda x: x.device.has_energy_consumed_meter, }, } @@ -40,9 +43,10 @@ async def async_setup_entry(hass, entry, async_add_entities): mel_devices = hass.data[DOMAIN].get(entry.entry_id) async_add_entities( [ - MelCloudSensor(mel_device, measurement, definition, hass.config.units) + MelCloudSensor(mel_device, measurement, definition) for measurement, definition in SENSORS.items() for mel_device in mel_devices[DEVICE_TYPE_ATA] + if definition[ATTR_ENABLED_FN](mel_device) ], True, ) @@ -51,7 +55,7 @@ async def async_setup_entry(hass, entry, async_add_entities): class MelCloudSensor(Entity): """Representation of a Sensor.""" - def __init__(self, device: AtaDevice, measurement, definition, units: UnitSystem): + def __init__(self, device: MelCloudDevice, measurement, definition): """Initialize the sensor.""" self._api = device self._name_slug = device.name diff --git a/requirements_all.txt b/requirements_all.txt index cb9d5f7f1a0..a05b40af502 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1361,7 +1361,7 @@ pymailgunner==1.4 pymediaroom==0.6.4 # homeassistant.components.melcloud -pymelcloud==2.0.0 +pymelcloud==2.1.0 # homeassistant.components.somfy pymfy==0.7.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 3f2d4736d19..46b998f2f78 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -494,7 +494,7 @@ pylitejet==0.1 pymailgunner==1.4 # homeassistant.components.melcloud -pymelcloud==2.0.0 +pymelcloud==2.1.0 # homeassistant.components.somfy pymfy==0.7.1