mirror of
https://github.com/home-assistant/core.git
synced 2025-07-11 15:27:08 +00:00
Add device class CO2 to various integrations (#47676)
* Add device class CO2 to Fibaro * Add device class CO2 to Awair * Add device class CO2 to Tasmota * Add device class CO2 to Netatmo * Add device class CO2 to Ambient Station * Update Tasmota tests * Remove icon
This commit is contained in:
parent
5bc0e9a50f
commit
461e766a93
@ -18,6 +18,7 @@ from homeassistant.const import (
|
|||||||
CONCENTRATION_PARTS_PER_MILLION,
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
CONF_API_KEY,
|
CONF_API_KEY,
|
||||||
DEGREE,
|
DEGREE,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
IRRADIATION_WATTS_PER_SQUARE_METER,
|
IRRADIATION_WATTS_PER_SQUARE_METER,
|
||||||
LIGHT_LUX,
|
LIGHT_LUX,
|
||||||
@ -159,7 +160,7 @@ SENSOR_TYPES = {
|
|||||||
TYPE_BATT8: ("Battery 8", None, BINARY_SENSOR, "battery"),
|
TYPE_BATT8: ("Battery 8", None, BINARY_SENSOR, "battery"),
|
||||||
TYPE_BATT9: ("Battery 9", None, BINARY_SENSOR, "battery"),
|
TYPE_BATT9: ("Battery 9", None, BINARY_SENSOR, "battery"),
|
||||||
TYPE_BATTOUT: ("Battery", None, BINARY_SENSOR, "battery"),
|
TYPE_BATTOUT: ("Battery", None, BINARY_SENSOR, "battery"),
|
||||||
TYPE_CO2: ("co2", CONCENTRATION_PARTS_PER_MILLION, SENSOR, None),
|
TYPE_CO2: ("co2", CONCENTRATION_PARTS_PER_MILLION, SENSOR, DEVICE_CLASS_CO2),
|
||||||
TYPE_DAILYRAININ: ("Daily Rain", "in", SENSOR, None),
|
TYPE_DAILYRAININ: ("Daily Rain", "in", SENSOR, None),
|
||||||
TYPE_DEWPOINT: ("Dew Point", TEMP_FAHRENHEIT, SENSOR, "temperature"),
|
TYPE_DEWPOINT: ("Dew Point", TEMP_FAHRENHEIT, SENSOR, "temperature"),
|
||||||
TYPE_EVENTRAININ: ("Event Rain", "in", SENSOR, None),
|
TYPE_EVENTRAININ: ("Event Rain", "in", SENSOR, None),
|
||||||
|
@ -12,6 +12,7 @@ from homeassistant.const import (
|
|||||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||||
CONCENTRATION_PARTS_PER_BILLION,
|
CONCENTRATION_PARTS_PER_BILLION,
|
||||||
CONCENTRATION_PARTS_PER_MILLION,
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
@ -104,7 +105,7 @@ SENSOR_TYPES = {
|
|||||||
ATTR_UNIQUE_ID: "PM10", # matches legacy format
|
ATTR_UNIQUE_ID: "PM10", # matches legacy format
|
||||||
},
|
},
|
||||||
API_CO2: {
|
API_CO2: {
|
||||||
ATTR_DEVICE_CLASS: None,
|
ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2,
|
||||||
ATTR_ICON: "mdi:cloud",
|
ATTR_ICON: "mdi:cloud",
|
||||||
ATTR_UNIT: CONCENTRATION_PARTS_PER_MILLION,
|
ATTR_UNIT: CONCENTRATION_PARTS_PER_MILLION,
|
||||||
ATTR_LABEL: "Carbon dioxide",
|
ATTR_LABEL: "Carbon dioxide",
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
from homeassistant.components.sensor import DOMAIN
|
from homeassistant.components.sensor import DOMAIN
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONCENTRATION_PARTS_PER_MILLION,
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
@ -27,7 +28,13 @@ SENSOR_TYPES = {
|
|||||||
"mdi:fire",
|
"mdi:fire",
|
||||||
None,
|
None,
|
||||||
],
|
],
|
||||||
"CO2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, "mdi:cloud", None],
|
"CO2": [
|
||||||
|
"CO2",
|
||||||
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
|
],
|
||||||
"com.fibaro.humiditySensor": [
|
"com.fibaro.humiditySensor": [
|
||||||
"Humidity",
|
"Humidity",
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
|
@ -8,6 +8,7 @@ from homeassistant.const import (
|
|||||||
CONCENTRATION_PARTS_PER_MILLION,
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
DEGREE,
|
DEGREE,
|
||||||
DEVICE_CLASS_BATTERY,
|
DEVICE_CLASS_BATTERY,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_PRESSURE,
|
DEVICE_CLASS_PRESSURE,
|
||||||
DEVICE_CLASS_SIGNAL_STRENGTH,
|
DEVICE_CLASS_SIGNAL_STRENGTH,
|
||||||
@ -52,7 +53,7 @@ SUPPORTED_PUBLIC_SENSOR_TYPES = [
|
|||||||
SENSOR_TYPES = {
|
SENSOR_TYPES = {
|
||||||
"temperature": ["Temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE, True],
|
"temperature": ["Temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE, True],
|
||||||
"temp_trend": ["Temperature trend", None, "mdi:trending-up", None, False],
|
"temp_trend": ["Temperature trend", None, "mdi:trending-up", None, False],
|
||||||
"co2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, "mdi:molecule-co2", None, True],
|
"co2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, None, DEVICE_CLASS_CO2, True],
|
||||||
"pressure": ["Pressure", PRESSURE_MBAR, None, DEVICE_CLASS_PRESSURE, True],
|
"pressure": ["Pressure", PRESSURE_MBAR, None, DEVICE_CLASS_PRESSURE, True],
|
||||||
"pressure_trend": ["Pressure trend", None, "mdi:trending-up", None, False],
|
"pressure_trend": ["Pressure trend", None, "mdi:trending-up", None, False],
|
||||||
"noise": ["Noise", "dB", "mdi:volume-high", None, True],
|
"noise": ["Noise", "dB", "mdi:volume-high", None, True],
|
||||||
|
@ -9,6 +9,7 @@ from homeassistant.const import (
|
|||||||
CONCENTRATION_PARTS_PER_BILLION,
|
CONCENTRATION_PARTS_PER_BILLION,
|
||||||
CONCENTRATION_PARTS_PER_MILLION,
|
CONCENTRATION_PARTS_PER_MILLION,
|
||||||
DEVICE_CLASS_BATTERY,
|
DEVICE_CLASS_BATTERY,
|
||||||
|
DEVICE_CLASS_CO2,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
DEVICE_CLASS_ILLUMINANCE,
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
@ -52,7 +53,7 @@ SENSOR_DEVICE_CLASS_ICON_MAP = {
|
|||||||
hc.SENSOR_APPARENT_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER},
|
hc.SENSOR_APPARENT_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER},
|
||||||
hc.SENSOR_BATTERY: {DEVICE_CLASS: DEVICE_CLASS_BATTERY},
|
hc.SENSOR_BATTERY: {DEVICE_CLASS: DEVICE_CLASS_BATTERY},
|
||||||
hc.SENSOR_CCT: {ICON: "mdi:temperature-kelvin"},
|
hc.SENSOR_CCT: {ICON: "mdi:temperature-kelvin"},
|
||||||
hc.SENSOR_CO2: {ICON: "mdi:molecule-co2"},
|
hc.SENSOR_CO2: {DEVICE_CLASS: DEVICE_CLASS_CO2},
|
||||||
hc.SENSOR_COLOR_BLUE: {ICON: "mdi:palette"},
|
hc.SENSOR_COLOR_BLUE: {ICON: "mdi:palette"},
|
||||||
hc.SENSOR_COLOR_GREEN: {ICON: "mdi:palette"},
|
hc.SENSOR_COLOR_GREEN: {ICON: "mdi:palette"},
|
||||||
hc.SENSOR_COLOR_RED: {ICON: "mdi:palette"},
|
hc.SENSOR_COLOR_RED: {ICON: "mdi:palette"},
|
||||||
|
@ -446,9 +446,9 @@ async def test_attributes(hass, mqtt_mock, setup_tasmota):
|
|||||||
assert state.attributes.get("unit_of_measurement") == "°C"
|
assert state.attributes.get("unit_of_measurement") == "°C"
|
||||||
|
|
||||||
state = hass.states.get("sensor.tasmota_beer_CarbonDioxide")
|
state = hass.states.get("sensor.tasmota_beer_CarbonDioxide")
|
||||||
assert state.attributes.get("device_class") is None
|
assert state.attributes.get("device_class") == "carbon_dioxide"
|
||||||
assert state.attributes.get("friendly_name") == "Tasmota Beer CarbonDioxide"
|
assert state.attributes.get("friendly_name") == "Tasmota Beer CarbonDioxide"
|
||||||
assert state.attributes.get("icon") == "mdi:molecule-co2"
|
assert state.attributes.get("icon") is None
|
||||||
assert state.attributes.get("unit_of_measurement") == "ppm"
|
assert state.attributes.get("unit_of_measurement") == "ppm"
|
||||||
|
|
||||||
|
|
||||||
@ -516,9 +516,9 @@ async def test_indexed_sensor_attributes(hass, mqtt_mock, setup_tasmota):
|
|||||||
assert state.attributes.get("unit_of_measurement") == "°C"
|
assert state.attributes.get("unit_of_measurement") == "°C"
|
||||||
|
|
||||||
state = hass.states.get("sensor.tasmota_dummy2_carbondioxide_1")
|
state = hass.states.get("sensor.tasmota_dummy2_carbondioxide_1")
|
||||||
assert state.attributes.get("device_class") is None
|
assert state.attributes.get("device_class") == "carbon_dioxide"
|
||||||
assert state.attributes.get("friendly_name") == "Tasmota Dummy2 CarbonDioxide 1"
|
assert state.attributes.get("friendly_name") == "Tasmota Dummy2 CarbonDioxide 1"
|
||||||
assert state.attributes.get("icon") == "mdi:molecule-co2"
|
assert state.attributes.get("icon") is None
|
||||||
assert state.attributes.get("unit_of_measurement") == "ppm"
|
assert state.attributes.get("unit_of_measurement") == "ppm"
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user