Add device class for volatile organic compounds (#55050)

This commit is contained in:
Jc2k 2021-08-23 10:14:43 +01:00 committed by GitHub
parent 4a2eeed1e8
commit 2dd4de060b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 19 additions and 1 deletions

View File

@ -37,6 +37,7 @@ from homeassistant.const import (
DEVICE_CLASS_SULPHUR_DIOXIDE,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_TIMESTAMP,
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS,
DEVICE_CLASS_VOLTAGE,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
@ -85,6 +86,7 @@ DEVICE_CLASSES: Final[list[str]] = [
DEVICE_CLASS_POWER, # power (W/kW)
DEVICE_CLASS_POWER_FACTOR, # power factor (%)
DEVICE_CLASS_VOLTAGE, # voltage (V)
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS, # Amount of VOC (µg/m³)
DEVICE_CLASS_GAS, # gas (m³ or ft³)
]

View File

@ -32,6 +32,7 @@ from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_SULPHUR_DIOXIDE,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS,
DEVICE_CLASS_VOLTAGE,
)
from homeassistant.core import HomeAssistant, HomeAssistantError, callback
@ -70,6 +71,7 @@ CONF_IS_PRESSURE = "is_pressure"
CONF_IS_SIGNAL_STRENGTH = "is_signal_strength"
CONF_IS_SULPHUR_DIOXIDE = "is_sulphur_dioxide"
CONF_IS_TEMPERATURE = "is_temperature"
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS = "is_volatile_organic_compounds"
CONF_IS_VOLTAGE = "is_voltage"
CONF_IS_VALUE = "is_value"
@ -95,6 +97,9 @@ ENTITY_CONDITIONS = {
DEVICE_CLASS_SIGNAL_STRENGTH: [{CONF_TYPE: CONF_IS_SIGNAL_STRENGTH}],
DEVICE_CLASS_SULPHUR_DIOXIDE: [{CONF_TYPE: CONF_IS_SULPHUR_DIOXIDE}],
DEVICE_CLASS_TEMPERATURE: [{CONF_TYPE: CONF_IS_TEMPERATURE}],
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS: [
{CONF_TYPE: CONF_IS_VOLATILE_ORGANIC_COMPOUNDS}
],
DEVICE_CLASS_VOLTAGE: [{CONF_TYPE: CONF_IS_VOLTAGE}],
DEVICE_CLASS_NONE: [{CONF_TYPE: CONF_IS_VALUE}],
}
@ -126,6 +131,7 @@ CONDITION_SCHEMA = vol.All(
CONF_IS_SIGNAL_STRENGTH,
CONF_IS_SULPHUR_DIOXIDE,
CONF_IS_TEMPERATURE,
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS,
CONF_IS_VOLTAGE,
CONF_IS_VALUE,
]

View File

@ -35,6 +35,7 @@ from homeassistant.const import (
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_SULPHUR_DIOXIDE,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS,
DEVICE_CLASS_VOLTAGE,
)
from homeassistant.core import HomeAssistantError
@ -69,6 +70,7 @@ CONF_PRESSURE = "pressure"
CONF_SIGNAL_STRENGTH = "signal_strength"
CONF_SULPHUR_DIOXIDE = "sulphur_dioxide"
CONF_TEMPERATURE = "temperature"
CONF_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds"
CONF_VOLTAGE = "voltage"
CONF_VALUE = "value"
@ -94,6 +96,9 @@ ENTITY_TRIGGERS = {
DEVICE_CLASS_SIGNAL_STRENGTH: [{CONF_TYPE: CONF_SIGNAL_STRENGTH}],
DEVICE_CLASS_SULPHUR_DIOXIDE: [{CONF_TYPE: CONF_SULPHUR_DIOXIDE}],
DEVICE_CLASS_TEMPERATURE: [{CONF_TYPE: CONF_TEMPERATURE}],
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS: [
{CONF_TYPE: CONF_VOLATILE_ORGANIC_COMPOUNDS}
],
DEVICE_CLASS_VOLTAGE: [{CONF_TYPE: CONF_VOLTAGE}],
DEVICE_CLASS_NONE: [{CONF_TYPE: CONF_VALUE}],
}
@ -126,6 +131,7 @@ TRIGGER_SCHEMA = vol.All(
CONF_SIGNAL_STRENGTH,
CONF_SULPHUR_DIOXIDE,
CONF_TEMPERATURE,
CONF_VOLATILE_ORGANIC_COMPOUNDS,
CONF_VOLTAGE,
CONF_VALUE,
]

View File

@ -23,6 +23,7 @@
"is_current": "Current {entity_name} current",
"is_energy": "Current {entity_name} energy",
"is_power_factor": "Current {entity_name} power factor",
"is_volatile_organic_compounds": "Current {entity_name} volatile organic compounds concentration level",
"is_voltage": "Current {entity_name} voltage",
"is_value": "Current {entity_name} value"
},
@ -48,6 +49,7 @@
"current": "{entity_name} current changes",
"energy": "{entity_name} energy changes",
"power_factor": "{entity_name} power factor changes",
"volatile_organic_compounds": "{entity_name} volatile organic compounds concentration changes",
"voltage": "{entity_name} voltage changes",
"value": "{entity_name} value changes"
}

View File

@ -256,6 +256,7 @@ DEVICE_CLASS_SULPHUR_DIOXIDE = "sulphur_dioxide"
DEVICE_CLASS_TEMPERATURE: Final = "temperature"
DEVICE_CLASS_TIMESTAMP: Final = "timestamp"
DEVICE_CLASS_VOLTAGE: Final = "voltage"
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds"
DEVICE_CLASS_GAS: Final = "gas"
# #### STATES ####

View File

@ -86,7 +86,7 @@ async def test_get_triggers(hass, device_reg, entity_reg, enable_custom_integrat
if device_class != "none"
]
triggers = await async_get_device_automations(hass, "trigger", device_entry.id)
assert len(triggers) == 22
assert len(triggers) == 23
assert triggers == expected_triggers

View File

@ -39,6 +39,7 @@ UNITS_OF_MEASUREMENT = {
sensor.DEVICE_CLASS_CURRENT: "A", # current (A)
sensor.DEVICE_CLASS_ENERGY: "kWh", # energy (Wh/kWh)
sensor.DEVICE_CLASS_POWER_FACTOR: PERCENTAGE, # power factor (no unit, min: -1.0, max: 1.0)
sensor.DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, # µg/m³ of vocs
sensor.DEVICE_CLASS_VOLTAGE: "V", # voltage (V)
sensor.DEVICE_CLASS_GAS: VOLUME_CUBIC_METERS, # gas (m³)
}