mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Add HomeKit support for new CO / CO2 device class (#47737)
This commit is contained in:
parent
13cd2f52d8
commit
9a98dcf432
@ -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,
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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),
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user