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_SULPHUR_DIOXIDE,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_TIMESTAMP, DEVICE_CLASS_TIMESTAMP,
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
TEMP_CELSIUS, TEMP_CELSIUS,
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
@ -85,6 +86,7 @@ DEVICE_CLASSES: Final[list[str]] = [
DEVICE_CLASS_POWER, # power (W/kW) DEVICE_CLASS_POWER, # power (W/kW)
DEVICE_CLASS_POWER_FACTOR, # power factor (%) DEVICE_CLASS_POWER_FACTOR, # power factor (%)
DEVICE_CLASS_VOLTAGE, # voltage (V) DEVICE_CLASS_VOLTAGE, # voltage (V)
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS, # Amount of VOC (µg/m³)
DEVICE_CLASS_GAS, # gas (m³ or ft³) DEVICE_CLASS_GAS, # gas (m³ or ft³)
] ]

View File

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

View File

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

View File

@ -23,6 +23,7 @@
"is_current": "Current {entity_name} current", "is_current": "Current {entity_name} current",
"is_energy": "Current {entity_name} energy", "is_energy": "Current {entity_name} energy",
"is_power_factor": "Current {entity_name} power factor", "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_voltage": "Current {entity_name} voltage",
"is_value": "Current {entity_name} value" "is_value": "Current {entity_name} value"
}, },
@ -48,6 +49,7 @@
"current": "{entity_name} current changes", "current": "{entity_name} current changes",
"energy": "{entity_name} energy changes", "energy": "{entity_name} energy changes",
"power_factor": "{entity_name} power factor changes", "power_factor": "{entity_name} power factor changes",
"volatile_organic_compounds": "{entity_name} volatile organic compounds concentration changes",
"voltage": "{entity_name} voltage changes", "voltage": "{entity_name} voltage changes",
"value": "{entity_name} value 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_TEMPERATURE: Final = "temperature"
DEVICE_CLASS_TIMESTAMP: Final = "timestamp" DEVICE_CLASS_TIMESTAMP: Final = "timestamp"
DEVICE_CLASS_VOLTAGE: Final = "voltage" DEVICE_CLASS_VOLTAGE: Final = "voltage"
DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds"
DEVICE_CLASS_GAS: Final = "gas" DEVICE_CLASS_GAS: Final = "gas"
# #### STATES #### # #### STATES ####

View File

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

View File

@ -39,6 +39,7 @@ UNITS_OF_MEASUREMENT = {
sensor.DEVICE_CLASS_CURRENT: "A", # current (A) sensor.DEVICE_CLASS_CURRENT: "A", # current (A)
sensor.DEVICE_CLASS_ENERGY: "kWh", # energy (Wh/kWh) 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_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_VOLTAGE: "V", # voltage (V)
sensor.DEVICE_CLASS_GAS: VOLUME_CUBIC_METERS, # gas (m³) sensor.DEVICE_CLASS_GAS: VOLUME_CUBIC_METERS, # gas (m³)
} }