1
mirror of https://github.com/home-assistant/core synced 2024-08-31 05:57:13 +02:00

Add HomeKit support for new CO / CO2 device class (#47737)

This commit is contained in:
Mick Vleeshouwer 2021-03-12 20:03:47 +01:00 committed by GitHub
parent 13cd2f52d8
commit 9a98dcf432
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 8 deletions

View File

@ -1,6 +1,9 @@
"""Demo platform that has a couple of fake sensors."""
from homeassistant.const import (
ATTR_BATTERY_LEVEL,
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
@ -31,6 +34,22 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
PERCENTAGE,
None,
),
DemoSensor(
"sensor_3",
"Carbon monoxide",
54,
DEVICE_CLASS_CO,
CONCENTRATION_PARTS_PER_MILLION,
None,
),
DemoSensor(
"sensor_4",
"Carbon dioxide",
54,
DEVICE_CLASS_CO2,
CONCENTRATION_PARTS_PER_MILLION,
14,
),
]
)

View File

@ -22,6 +22,8 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
CONF_NAME,
CONF_TYPE,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_TEMPERATURE,
@ -54,8 +56,6 @@ from .const import (
CONF_LINKED_BATTERY_SENSOR,
CONF_LOW_BATTERY_THRESHOLD,
DEFAULT_LOW_BATTERY_THRESHOLD,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
DEVICE_CLASS_PM25,
EVENT_HOMEKIT_CHANGED,
HK_CHARGING,
@ -167,7 +167,7 @@ def get_accessory(hass, driver, state, aid, config):
a_type = "AirQualitySensor"
elif device_class == DEVICE_CLASS_CO:
a_type = "CarbonMonoxideSensor"
elif device_class == DEVICE_CLASS_CO2 or DEVICE_CLASS_CO2 in state.entity_id:
elif device_class == DEVICE_CLASS_CO2 or "co2" in state.entity_id:
a_type = "CarbonDioxideSensor"
elif device_class == DEVICE_CLASS_ILLUMINANCE or unit in ("lm", LIGHT_LUX):
a_type = "LightSensor"

View File

@ -237,8 +237,6 @@ PROP_CELSIUS = {"minValue": -273, "maxValue": 999}
PROP_VALID_VALUES = "ValidValues"
# #### Device Classes ####
DEVICE_CLASS_CO = "co"
DEVICE_CLASS_CO2 = "co2"
DEVICE_CLASS_DOOR = "door"
DEVICE_CLASS_GARAGE_DOOR = "garage_door"
DEVICE_CLASS_GAS = "gas"

View File

@ -6,6 +6,8 @@ from pyhap.const import CATEGORY_SENSOR
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_UNIT_OF_MEASUREMENT,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
STATE_HOME,
STATE_ON,
TEMP_CELSIUS,
@ -30,7 +32,6 @@ from .const import (
CHAR_MOTION_DETECTED,
CHAR_OCCUPANCY_DETECTED,
CHAR_SMOKE_DETECTED,
DEVICE_CLASS_CO2,
DEVICE_CLASS_DOOR,
DEVICE_CLASS_GARAGE_DOOR,
DEVICE_CLASS_GAS,
@ -60,6 +61,7 @@ from .util import convert_to_float, density_to_air_quality, temperature_to_homek
_LOGGER = logging.getLogger(__name__)
BINARY_SENSOR_SERVICE_MAP = {
DEVICE_CLASS_CO: (SERV_CARBON_MONOXIDE_SENSOR, CHAR_CARBON_MONOXIDE_DETECTED, int),
DEVICE_CLASS_CO2: (SERV_CARBON_DIOXIDE_SENSOR, CHAR_CARBON_DIOXIDE_DETECTED, int),
DEVICE_CLASS_DOOR: (SERV_CONTACT_SENSOR, CHAR_CONTACT_SENSOR_STATE, int),
DEVICE_CLASS_GARAGE_DOOR: (SERV_CONTACT_SENSOR, CHAR_CONTACT_SENSOR_STATE, int),

View File

@ -26,6 +26,8 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
CONF_NAME,
CONF_TYPE,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
LIGHT_LUX,
PERCENTAGE,
TEMP_CELSIUS,
@ -186,9 +188,19 @@ def test_type_media_player(type_name, entity_id, state, attrs, config):
("BinarySensor", "person.someone", "home", {}),
("AirQualitySensor", "sensor.air_quality_pm25", "40", {}),
("AirQualitySensor", "sensor.air_quality", "40", {ATTR_DEVICE_CLASS: "pm25"}),
("CarbonMonoxideSensor", "sensor.airmeter", "2", {ATTR_DEVICE_CLASS: "co"}),
(
"CarbonMonoxideSensor",
"sensor.co",
"2",
{ATTR_DEVICE_CLASS: DEVICE_CLASS_CO},
),
("CarbonDioxideSensor", "sensor.airmeter_co2", "500", {}),
("CarbonDioxideSensor", "sensor.airmeter", "500", {ATTR_DEVICE_CLASS: "co2"}),
(
"CarbonDioxideSensor",
"sensor.co2",
"500",
{ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2},
),
(
"HumiditySensor",
"sensor.humidity",