From dcb3a57476e7268470130428a09b0210344db023 Mon Sep 17 00:00:00 2001 From: Filip Pytloun Date: Mon, 22 Jun 2020 13:10:26 +0200 Subject: [PATCH] Add support for daikin humidity sensor (#36475) --- homeassistant/components/daikin/const.py | 17 +++++++++++++++++ homeassistant/components/daikin/manifest.json | 2 +- homeassistant/components/daikin/sensor.py | 12 ++++++++++++ requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/daikin/const.py b/homeassistant/components/daikin/const.py index 30d34b898d3..a28221dbcbf 100644 --- a/homeassistant/components/daikin/const.py +++ b/homeassistant/components/daikin/const.py @@ -5,11 +5,13 @@ from homeassistant.const import ( CONF_NAME, CONF_TYPE, CONF_UNIT_OF_MEASUREMENT, + DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_POWER, DEVICE_CLASS_TEMPERATURE, ENERGY_KILO_WATT_HOUR, POWER_KILO_WATT, TEMP_CELSIUS, + UNIT_PERCENTAGE, ) ATTR_TARGET_TEMPERATURE = "target_temperature" @@ -18,11 +20,14 @@ ATTR_OUTSIDE_TEMPERATURE = "outside_temperature" ATTR_TOTAL_POWER = "total_power" ATTR_COOL_ENERGY = "cool_energy" ATTR_HEAT_ENERGY = "heat_energy" +ATTR_HUMIDITY = "humidity" +ATTR_TARGET_HUMIDITY = "target_humidity" ATTR_STATE_ON = "on" ATTR_STATE_OFF = "off" SENSOR_TYPE_TEMPERATURE = "temperature" +SENSOR_TYPE_HUMIDITY = "humidity" SENSOR_TYPE_POWER = "power" SENSOR_TYPE_ENERGY = "energy" @@ -39,6 +44,18 @@ SENSOR_TYPES = { CONF_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE, CONF_UNIT_OF_MEASUREMENT: TEMP_CELSIUS, }, + ATTR_HUMIDITY: { + CONF_NAME: "Humidity", + CONF_TYPE: SENSOR_TYPE_HUMIDITY, + CONF_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + CONF_UNIT_OF_MEASUREMENT: UNIT_PERCENTAGE, + }, + ATTR_TARGET_HUMIDITY: { + CONF_NAME: "Target Humidity", + CONF_TYPE: SENSOR_TYPE_HUMIDITY, + CONF_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + CONF_UNIT_OF_MEASUREMENT: UNIT_PERCENTAGE, + }, ATTR_TOTAL_POWER: { CONF_NAME: "Total Power Consumption", CONF_TYPE: SENSOR_TYPE_POWER, diff --git a/homeassistant/components/daikin/manifest.json b/homeassistant/components/daikin/manifest.json index 1a180aa5ab6..dc9bc9653f8 100644 --- a/homeassistant/components/daikin/manifest.json +++ b/homeassistant/components/daikin/manifest.json @@ -3,7 +3,7 @@ "name": "Daikin AC", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/daikin", - "requirements": ["pydaikin==2.1.2"], + "requirements": ["pydaikin==2.2.0"], "codeowners": ["@fredrike"], "zeroconf": ["_dkapi._tcp.local."], "quality_scale": "platinum" diff --git a/homeassistant/components/daikin/sensor.py b/homeassistant/components/daikin/sensor.py index 7ff79338a79..73cadba9e45 100644 --- a/homeassistant/components/daikin/sensor.py +++ b/homeassistant/components/daikin/sensor.py @@ -14,10 +14,13 @@ from . import DOMAIN as DAIKIN_DOMAIN, DaikinApi from .const import ( ATTR_COOL_ENERGY, ATTR_HEAT_ENERGY, + ATTR_HUMIDITY, ATTR_INSIDE_TEMPERATURE, ATTR_OUTSIDE_TEMPERATURE, + ATTR_TARGET_HUMIDITY, ATTR_TOTAL_POWER, SENSOR_TYPE_ENERGY, + SENSOR_TYPE_HUMIDITY, SENSOR_TYPE_POWER, SENSOR_TYPE_TEMPERATURE, SENSOR_TYPES, @@ -44,6 +47,9 @@ async def async_setup_entry(hass, entry, async_add_entities): sensors.append(ATTR_TOTAL_POWER) sensors.append(ATTR_COOL_ENERGY) sensors.append(ATTR_HEAT_ENERGY) + if daikin_api.device.support_humidity: + sensors.append(ATTR_HUMIDITY) + sensors.append(ATTR_TARGET_HUMIDITY) async_add_entities([DaikinSensor.factory(daikin_api, sensor) for sensor in sensors]) @@ -55,6 +61,7 @@ class DaikinSensor(Entity): """Initialize any DaikinSensor.""" cls = { SENSOR_TYPE_TEMPERATURE: DaikinClimateSensor, + SENSOR_TYPE_HUMIDITY: DaikinClimateSensor, SENSOR_TYPE_POWER: DaikinPowerSensor, SENSOR_TYPE_ENERGY: DaikinPowerSensor, }[SENSOR_TYPES[monitored_state][CONF_TYPE]] @@ -117,6 +124,11 @@ class DaikinClimateSensor(DaikinSensor): return self._api.device.inside_temperature if self._device_attribute == ATTR_OUTSIDE_TEMPERATURE: return self._api.device.outside_temperature + + if self._device_attribute == ATTR_HUMIDITY: + return self._api.device.humidity + if self._device_attribute == ATTR_TARGET_HUMIDITY: + return self._api.device.target_humidity return None diff --git a/requirements_all.txt b/requirements_all.txt index b37eb4e7915..f7175fa2dd8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1276,7 +1276,7 @@ pycsspeechtts==1.0.3 # pycups==1.9.73 # homeassistant.components.daikin -pydaikin==2.1.2 +pydaikin==2.2.0 # homeassistant.components.danfoss_air pydanfossair==0.1.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 81069c0b251..4a610fb0115 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -567,7 +567,7 @@ pycoolmasternet==0.0.4 pycountry==19.8.18 # homeassistant.components.daikin -pydaikin==2.1.2 +pydaikin==2.2.0 # homeassistant.components.deconz pydeconz==71