mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 02:07:54 +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."""
|
"""Demo platform that has a couple of fake sensors."""
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_BATTERY_LEVEL,
|
ATTR_BATTERY_LEVEL,
|
||||||
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
|
DEVICE_CLASS_CO,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
@ -31,6 +34,22 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
|||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
None,
|
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,
|
ATTR_UNIT_OF_MEASUREMENT,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
|
DEVICE_CLASS_CO,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
@ -54,8 +56,6 @@ from .const import (
|
|||||||
CONF_LINKED_BATTERY_SENSOR,
|
CONF_LINKED_BATTERY_SENSOR,
|
||||||
CONF_LOW_BATTERY_THRESHOLD,
|
CONF_LOW_BATTERY_THRESHOLD,
|
||||||
DEFAULT_LOW_BATTERY_THRESHOLD,
|
DEFAULT_LOW_BATTERY_THRESHOLD,
|
||||||
DEVICE_CLASS_CO,
|
|
||||||
DEVICE_CLASS_CO2,
|
|
||||||
DEVICE_CLASS_PM25,
|
DEVICE_CLASS_PM25,
|
||||||
EVENT_HOMEKIT_CHANGED,
|
EVENT_HOMEKIT_CHANGED,
|
||||||
HK_CHARGING,
|
HK_CHARGING,
|
||||||
@ -167,7 +167,7 @@ def get_accessory(hass, driver, state, aid, config):
|
|||||||
a_type = "AirQualitySensor"
|
a_type = "AirQualitySensor"
|
||||||
elif device_class == DEVICE_CLASS_CO:
|
elif device_class == DEVICE_CLASS_CO:
|
||||||
a_type = "CarbonMonoxideSensor"
|
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"
|
a_type = "CarbonDioxideSensor"
|
||||||
elif device_class == DEVICE_CLASS_ILLUMINANCE or unit in ("lm", LIGHT_LUX):
|
elif device_class == DEVICE_CLASS_ILLUMINANCE or unit in ("lm", LIGHT_LUX):
|
||||||
a_type = "LightSensor"
|
a_type = "LightSensor"
|
||||||
|
@ -237,8 +237,6 @@ PROP_CELSIUS = {"minValue": -273, "maxValue": 999}
|
|||||||
PROP_VALID_VALUES = "ValidValues"
|
PROP_VALID_VALUES = "ValidValues"
|
||||||
|
|
||||||
# #### Device Classes ####
|
# #### Device Classes ####
|
||||||
DEVICE_CLASS_CO = "co"
|
|
||||||
DEVICE_CLASS_CO2 = "co2"
|
|
||||||
DEVICE_CLASS_DOOR = "door"
|
DEVICE_CLASS_DOOR = "door"
|
||||||
DEVICE_CLASS_GARAGE_DOOR = "garage_door"
|
DEVICE_CLASS_GARAGE_DOOR = "garage_door"
|
||||||
DEVICE_CLASS_GAS = "gas"
|
DEVICE_CLASS_GAS = "gas"
|
||||||
|
@ -6,6 +6,8 @@ from pyhap.const import CATEGORY_SENSOR
|
|||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_DEVICE_CLASS,
|
ATTR_DEVICE_CLASS,
|
||||||
ATTR_UNIT_OF_MEASUREMENT,
|
ATTR_UNIT_OF_MEASUREMENT,
|
||||||
|
DEVICE_CLASS_CO,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
STATE_HOME,
|
STATE_HOME,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
@ -30,7 +32,6 @@ from .const import (
|
|||||||
CHAR_MOTION_DETECTED,
|
CHAR_MOTION_DETECTED,
|
||||||
CHAR_OCCUPANCY_DETECTED,
|
CHAR_OCCUPANCY_DETECTED,
|
||||||
CHAR_SMOKE_DETECTED,
|
CHAR_SMOKE_DETECTED,
|
||||||
DEVICE_CLASS_CO2,
|
|
||||||
DEVICE_CLASS_DOOR,
|
DEVICE_CLASS_DOOR,
|
||||||
DEVICE_CLASS_GARAGE_DOOR,
|
DEVICE_CLASS_GARAGE_DOOR,
|
||||||
DEVICE_CLASS_GAS,
|
DEVICE_CLASS_GAS,
|
||||||
@ -60,6 +61,7 @@ from .util import convert_to_float, density_to_air_quality, temperature_to_homek
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
BINARY_SENSOR_SERVICE_MAP = {
|
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_CO2: (SERV_CARBON_DIOXIDE_SENSOR, CHAR_CARBON_DIOXIDE_DETECTED, int),
|
||||||
DEVICE_CLASS_DOOR: (SERV_CONTACT_SENSOR, CHAR_CONTACT_SENSOR_STATE, int),
|
DEVICE_CLASS_DOOR: (SERV_CONTACT_SENSOR, CHAR_CONTACT_SENSOR_STATE, int),
|
||||||
DEVICE_CLASS_GARAGE_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,
|
ATTR_UNIT_OF_MEASUREMENT,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
|
DEVICE_CLASS_CO,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
LIGHT_LUX,
|
LIGHT_LUX,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
@ -186,9 +188,19 @@ def test_type_media_player(type_name, entity_id, state, attrs, config):
|
|||||||
("BinarySensor", "person.someone", "home", {}),
|
("BinarySensor", "person.someone", "home", {}),
|
||||||
("AirQualitySensor", "sensor.air_quality_pm25", "40", {}),
|
("AirQualitySensor", "sensor.air_quality_pm25", "40", {}),
|
||||||
("AirQualitySensor", "sensor.air_quality", "40", {ATTR_DEVICE_CLASS: "pm25"}),
|
("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_co2", "500", {}),
|
||||||
("CarbonDioxideSensor", "sensor.airmeter", "500", {ATTR_DEVICE_CLASS: "co2"}),
|
(
|
||||||
|
"CarbonDioxideSensor",
|
||||||
|
"sensor.co2",
|
||||||
|
"500",
|
||||||
|
{ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2},
|
||||||
|
),
|
||||||
(
|
(
|
||||||
"HumiditySensor",
|
"HumiditySensor",
|
||||||
"sensor.humidity",
|
"sensor.humidity",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user