1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

HA deconz: Add support for Tuya Smart Air Housekeeper 6in1 Air Quality Monitor (#87866)

* fix check for airquality sensor (was always TRUE)

* import additional const required

* add support for formaldehyd sensor

* add support for co2 sensor

* add support for pm25 sensor

* sort const a-z

* adapt to typo fixed function

* adapt to new key names (formaldehyde)

* adapt co2 sensor to new key names

* Update homeassistant/components/deconz/sensor.py

remove unnecessary code

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* add device_class for air_quality_ppb

* add test_air_quality_sensor_6_in_1

* fix Air quality PPB test to match device_class

* remove device_class of air_quality_ppb

* remove device_class test of airqualityppb

* explicit units

* remove device_class test of airquality_1_ppb

* dependency bump pydeconz to 111

* Update homeassistant/components/deconz/sensor.py

remove unnecessary device_class

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* import formatting

* formatting

* Update homeassistant/components/deconz/sensor.py

change key for pm2_5

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* add airquality co2 ch2o pm25 sensor testdata

* remove test_air_quality_sensor_6_in_1

* formatting

* bump pydeconz for requirements

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
This commit is contained in:
Markus
2023-04-23 16:12:52 +02:00
committed by GitHub
parent 06520217bc
commit 1a14a93df6
5 changed files with 168 additions and 6 deletions

View File

@@ -14,7 +14,14 @@ from homeassistant.components.sensor import (
SensorStateClass,
)
from homeassistant.config_entries import RELOAD_AFTER_UPDATE_DELAY
from homeassistant.const import ATTR_DEVICE_CLASS, STATE_UNAVAILABLE, EntityCategory
from homeassistant.const import (
ATTR_DEVICE_CLASS,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
STATE_UNAVAILABLE,
EntityCategory,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.util import dt
@@ -106,12 +113,132 @@ TEST_DATA = [
"attributes": {
"friendly_name": "BOSCH Air quality sensor PPB",
"state_class": "measurement",
"unit_of_measurement": "ppb",
"unit_of_measurement": CONCENTRATION_PARTS_PER_BILLION,
},
"websocket_event": {"state": {"airqualityppb": 1000}},
"next_state": "1000",
},
),
( # Air quality 6 in 1 (without airquality) -> airquality_co2_density
{
"config": {
"on": True,
"reachable": True,
},
"etag": "e1a406dbbe1438fa924007309ef46a01",
"lastseen": "2023-03-29T18:25Z",
"manufacturername": "_TZE200_dwcarsat",
"modelid": "TS0601",
"name": "AirQuality 1",
"state": {
"airquality_co2_density": 359,
"airquality_formaldehyde_density": 4,
"airqualityppb": 15,
"lastupdated": "2023-03-29T19:05:41.903",
"pm2_5": 8,
},
"type": "ZHAAirQuality",
"uniqueid": "00:00:00:00:00:00:00:01-02-0113",
},
{
"entity_count": 4,
"device_count": 3,
"entity_id": "sensor.airquality_1_co2",
"unique_id": "00:00:00:00:00:00:00:01-02-0113-air_quality_co2",
"state": "359",
"entity_category": None,
"device_class": SensorDeviceClass.CO2,
"state_class": SensorStateClass.MEASUREMENT,
"attributes": {
"friendly_name": "AirQuality 1 CO2",
"device_class": SensorDeviceClass.CO2,
"state_class": SensorStateClass.MEASUREMENT,
"unit_of_measurement": CONCENTRATION_PARTS_PER_MILLION,
},
"websocket_event": {"state": {"airquality_co2_density": 332}},
"next_state": "332",
},
),
( # Air quality 6 in 1 (without airquality) -> airquality_formaldehyde_density
{
"config": {
"on": True,
"reachable": True,
},
"etag": "e1a406dbbe1438fa924007309ef46a01",
"lastseen": "2023-03-29T18:25Z",
"manufacturername": "_TZE200_dwcarsat",
"modelid": "TS0601",
"name": "AirQuality 1",
"state": {
"airquality_co2_density": 359,
"airquality_formaldehyde_density": 4,
"airqualityppb": 15,
"lastupdated": "2023-03-29T19:05:41.903",
"pm2_5": 8,
},
"type": "ZHAAirQuality",
"uniqueid": "00:00:00:00:00:00:00:01-02-0113",
},
{
"entity_count": 4,
"device_count": 3,
"entity_id": "sensor.airquality_1_ch2o",
"unique_id": "00:00:00:00:00:00:00:01-02-0113-air_quality_formaldehyde",
"state": "4",
"entity_category": None,
"device_class": SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
"state_class": SensorStateClass.MEASUREMENT,
"attributes": {
"friendly_name": "AirQuality 1 CH2O",
"device_class": SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
"state_class": SensorStateClass.MEASUREMENT,
"unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
},
"websocket_event": {"state": {"airquality_formaldehyde_density": 5}},
"next_state": "5",
},
),
( # Air quality 6 in 1 (without airquality) -> pm2_5
{
"config": {
"on": True,
"reachable": True,
},
"etag": "e1a406dbbe1438fa924007309ef46a01",
"lastseen": "2023-03-29T18:25Z",
"manufacturername": "_TZE200_dwcarsat",
"modelid": "TS0601",
"name": "AirQuality 1",
"state": {
"airquality_co2_density": 359,
"airquality_formaldehyde_density": 4,
"airqualityppb": 15,
"lastupdated": "2023-03-29T19:05:41.903",
"pm2_5": 8,
},
"type": "ZHAAirQuality",
"uniqueid": "00:00:00:00:00:00:00:01-02-0113",
},
{
"entity_count": 4,
"device_count": 3,
"entity_id": "sensor.airquality_1_pm25",
"unique_id": "00:00:00:00:00:00:00:01-02-0113-air_quality_pm2_5",
"state": "8",
"entity_category": None,
"device_class": SensorDeviceClass.PM25,
"state_class": SensorStateClass.MEASUREMENT,
"attributes": {
"friendly_name": "AirQuality 1 PM25",
"device_class": SensorDeviceClass.PM25,
"state_class": SensorStateClass.MEASUREMENT,
"unit_of_measurement": CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
},
"websocket_event": {"state": {"pm2_5": 11}},
"next_state": "11",
},
),
( # Battery sensor
{
"config": {