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:
Mick Vleeshouwer 2021-03-10 12:52:55 +01:00 committed by GitHub
parent 5bc0e9a50f
commit 461e766a93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 9 deletions

View file

@ -18,6 +18,7 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION,
CONF_API_KEY,
DEGREE,
DEVICE_CLASS_CO2,
EVENT_HOMEASSISTANT_STOP,
IRRADIATION_WATTS_PER_SQUARE_METER,
LIGHT_LUX,
@ -159,7 +160,7 @@ SENSOR_TYPES = {
TYPE_BATT8: ("Battery 8", None, BINARY_SENSOR, "battery"),
TYPE_BATT9: ("Battery 9", 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_DEWPOINT: ("Dew Point", TEMP_FAHRENHEIT, SENSOR, "temperature"),
TYPE_EVENTRAININ: ("Event Rain", "in", SENSOR, None),

View file

@ -12,6 +12,7 @@ from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_TEMPERATURE,
@ -104,7 +105,7 @@ SENSOR_TYPES = {
ATTR_UNIQUE_ID: "PM10", # matches legacy format
},
API_CO2: {
ATTR_DEVICE_CLASS: None,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2,
ATTR_ICON: "mdi:cloud",
ATTR_UNIT: CONCENTRATION_PARTS_PER_MILLION,
ATTR_LABEL: "Carbon dioxide",

View file

@ -2,6 +2,7 @@
from homeassistant.components.sensor import DOMAIN
from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_TEMPERATURE,
@ -27,7 +28,13 @@ SENSOR_TYPES = {
"mdi:fire",
None,
],
"CO2": ["CO2", CONCENTRATION_PARTS_PER_MILLION, "mdi:cloud", None],
"CO2": [
"CO2",
CONCENTRATION_PARTS_PER_MILLION,
None,
None,
DEVICE_CLASS_CO2,
],
"com.fibaro.humiditySensor": [
"Humidity",
PERCENTAGE,

View file

@ -8,6 +8,7 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION,
DEGREE,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_SIGNAL_STRENGTH,
@ -52,7 +53,7 @@ SUPPORTED_PUBLIC_SENSOR_TYPES = [
SENSOR_TYPES = {
"temperature": ["Temperature", TEMP_CELSIUS, None, DEVICE_CLASS_TEMPERATURE, True],
"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_trend": ["Pressure trend", None, "mdi:trending-up", None, False],
"noise": ["Noise", "dB", "mdi:volume-high", None, True],

View file

@ -9,6 +9,7 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CO2,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_POWER,
@ -52,7 +53,7 @@ SENSOR_DEVICE_CLASS_ICON_MAP = {
hc.SENSOR_APPARENT_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER},
hc.SENSOR_BATTERY: {DEVICE_CLASS: DEVICE_CLASS_BATTERY},
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_GREEN: {ICON: "mdi:palette"},
hc.SENSOR_COLOR_RED: {ICON: "mdi:palette"},

View file

@ -446,9 +446,9 @@ async def test_attributes(hass, mqtt_mock, setup_tasmota):
assert state.attributes.get("unit_of_measurement") == "°C"
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("icon") == "mdi:molecule-co2"
assert state.attributes.get("icon") is None
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"
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("icon") == "mdi:molecule-co2"
assert state.attributes.get("icon") is None
assert state.attributes.get("unit_of_measurement") == "ppm"