Add sensor device class volatile_organic_compounds_parts (#92973)

This commit is contained in:
Erik Montnemery 2023-05-12 14:37:54 +02:00 committed by GitHub
parent 7546e8efa4
commit 5a7c3aaa2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 39 additions and 0 deletions

View file

@ -8,6 +8,7 @@ import voluptuous as vol
from homeassistant.backports.enum import StrEnum from homeassistant.backports.enum import StrEnum
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
@ -309,6 +310,12 @@ class NumberDeviceClass(StrEnum):
Unit of measurement: `µg/` Unit of measurement: `µg/`
""" """
VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts"
"""Ratio of VOC.
Unit of measurement: `ppm`, `ppb`
"""
VOLTAGE = "voltage" VOLTAGE = "voltage"
"""Voltage. """Voltage.
@ -421,6 +428,10 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = {
NumberDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: { NumberDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
}, },
NumberDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
},
NumberDeviceClass.VOLTAGE: set(UnitOfElectricPotential), NumberDeviceClass.VOLTAGE: set(UnitOfElectricPotential),
NumberDeviceClass.VOLUME: set(UnitOfVolume), NumberDeviceClass.VOLUME: set(UnitOfVolume),
NumberDeviceClass.VOLUME_STORAGE: set(UnitOfVolume), NumberDeviceClass.VOLUME_STORAGE: set(UnitOfVolume),

View file

@ -8,6 +8,7 @@ import voluptuous as vol
from homeassistant.backports.enum import StrEnum from homeassistant.backports.enum import StrEnum
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
@ -347,6 +348,12 @@ class SensorDeviceClass(StrEnum):
Unit of measurement: `µg/` Unit of measurement: `µg/`
""" """
VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts"
"""Ratio of VOC.
Unit of measurement: `ppm`, `ppb`
"""
VOLTAGE = "voltage" VOLTAGE = "voltage"
"""Voltage. """Voltage.
@ -521,6 +528,10 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: { SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
}, },
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
},
SensorDeviceClass.VOLTAGE: set(UnitOfElectricPotential), SensorDeviceClass.VOLTAGE: set(UnitOfElectricPotential),
SensorDeviceClass.VOLUME: set(UnitOfVolume), SensorDeviceClass.VOLUME: set(UnitOfVolume),
SensorDeviceClass.WATER: { SensorDeviceClass.WATER: {
@ -580,6 +591,7 @@ DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]] = {
SensorDeviceClass.TEMPERATURE: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.TEMPERATURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.TIMESTAMP: set(), SensorDeviceClass.TIMESTAMP: set(),
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.VOLTAGE: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.VOLTAGE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.VOLUME: { SensorDeviceClass.VOLUME: {
SensorStateClass.TOTAL, SensorStateClass.TOTAL,

View file

@ -70,6 +70,7 @@ CONF_IS_SULPHUR_DIOXIDE = "is_sulphur_dioxide"
CONF_IS_TEMPERATURE = "is_temperature" CONF_IS_TEMPERATURE = "is_temperature"
CONF_IS_VALUE = "is_value" CONF_IS_VALUE = "is_value"
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS = "is_volatile_organic_compounds" CONF_IS_VOLATILE_ORGANIC_COMPOUNDS = "is_volatile_organic_compounds"
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS = "is_volatile_organic_compounds_parts"
CONF_IS_VOLTAGE = "is_voltage" CONF_IS_VOLTAGE = "is_voltage"
CONF_IS_VOLUME = "is_volume" CONF_IS_VOLUME = "is_volume"
CONF_IS_WATER = "is_water" CONF_IS_WATER = "is_water"
@ -120,6 +121,9 @@ ENTITY_CONDITIONS = {
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: [ SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: [
{CONF_TYPE: CONF_IS_VOLATILE_ORGANIC_COMPOUNDS} {CONF_TYPE: CONF_IS_VOLATILE_ORGANIC_COMPOUNDS}
], ],
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: [
{CONF_TYPE: CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS}
],
SensorDeviceClass.VOLTAGE: [{CONF_TYPE: CONF_IS_VOLTAGE}], SensorDeviceClass.VOLTAGE: [{CONF_TYPE: CONF_IS_VOLTAGE}],
SensorDeviceClass.VOLUME: [{CONF_TYPE: CONF_IS_VOLUME}], SensorDeviceClass.VOLUME: [{CONF_TYPE: CONF_IS_VOLUME}],
SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_IS_VOLUME}], SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_IS_VOLUME}],
@ -173,6 +177,7 @@ CONDITION_SCHEMA = vol.All(
CONF_IS_SULPHUR_DIOXIDE, CONF_IS_SULPHUR_DIOXIDE,
CONF_IS_TEMPERATURE, CONF_IS_TEMPERATURE,
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS, CONF_IS_VOLATILE_ORGANIC_COMPOUNDS,
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS,
CONF_IS_VOLTAGE, CONF_IS_VOLTAGE,
CONF_IS_VOLUME, CONF_IS_VOLUME,
CONF_IS_WATER, CONF_IS_WATER,

View file

@ -69,6 +69,7 @@ CONF_SULPHUR_DIOXIDE = "sulphur_dioxide"
CONF_TEMPERATURE = "temperature" CONF_TEMPERATURE = "temperature"
CONF_VALUE = "value" CONF_VALUE = "value"
CONF_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds" CONF_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds"
CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts"
CONF_VOLTAGE = "voltage" CONF_VOLTAGE = "voltage"
CONF_VOLUME = "volume" CONF_VOLUME = "volume"
CONF_WATER = "water" CONF_WATER = "water"
@ -119,6 +120,9 @@ ENTITY_TRIGGERS = {
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: [ SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: [
{CONF_TYPE: CONF_VOLATILE_ORGANIC_COMPOUNDS} {CONF_TYPE: CONF_VOLATILE_ORGANIC_COMPOUNDS}
], ],
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: [
{CONF_TYPE: CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS}
],
SensorDeviceClass.VOLTAGE: [{CONF_TYPE: CONF_VOLTAGE}], SensorDeviceClass.VOLTAGE: [{CONF_TYPE: CONF_VOLTAGE}],
SensorDeviceClass.VOLUME: [{CONF_TYPE: CONF_VOLUME}], SensorDeviceClass.VOLUME: [{CONF_TYPE: CONF_VOLUME}],
SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_VOLUME}], SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_VOLUME}],
@ -173,6 +177,7 @@ TRIGGER_SCHEMA = vol.All(
CONF_SULPHUR_DIOXIDE, CONF_SULPHUR_DIOXIDE,
CONF_TEMPERATURE, CONF_TEMPERATURE,
CONF_VOLATILE_ORGANIC_COMPOUNDS, CONF_VOLATILE_ORGANIC_COMPOUNDS,
CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS,
CONF_VOLTAGE, CONF_VOLTAGE,
CONF_VOLUME, CONF_VOLUME,
CONF_WATER, CONF_WATER,

View file

@ -41,6 +41,7 @@
"is_temperature": "Current {entity_name} temperature", "is_temperature": "Current {entity_name} temperature",
"is_value": "Current {entity_name} value", "is_value": "Current {entity_name} value",
"is_volatile_organic_compounds": "Current {entity_name} volatile organic compounds concentration level", "is_volatile_organic_compounds": "Current {entity_name} volatile organic compounds concentration level",
"is_volatile_organic_compounds_parts": "[%key:component::sensor::device_automation::condition_type::is_volatile_organic_compounds%]",
"is_voltage": "Current {entity_name} voltage", "is_voltage": "Current {entity_name} voltage",
"is_volume": "Current {entity_name} volume", "is_volume": "Current {entity_name} volume",
"is_water": "Current {entity_name} water", "is_water": "Current {entity_name} water",
@ -87,6 +88,7 @@
"temperature": "{entity_name} temperature changes", "temperature": "{entity_name} temperature changes",
"value": "{entity_name} value changes", "value": "{entity_name} value changes",
"volatile_organic_compounds": "{entity_name} volatile organic compounds concentration changes", "volatile_organic_compounds": "{entity_name} volatile organic compounds concentration changes",
"volatile_organic_compounds_parts": "[%key:component::sensor::device_automation::trigger_type::volatile_organic_compounds%]",
"voltage": "{entity_name} voltage changes", "voltage": "{entity_name} voltage changes",
"volume": "{entity_name} volume changes", "volume": "{entity_name} volume changes",
"water": "{entity_name} water changes", "water": "{entity_name} water changes",
@ -244,6 +246,9 @@
"volatile_organic_compounds": { "volatile_organic_compounds": {
"name": "VOCs" "name": "VOCs"
}, },
"volatile_organic_compounds_parts": {
"name": "[%key:component::sensor::entity_component::volatile_organic_compounds::name%]"
},
"voltage": { "voltage": {
"name": "Voltage" "name": "Voltage"
}, },

View file

@ -1758,6 +1758,7 @@ async def test_non_numeric_device_class_with_unit_of_measurement(
SensorDeviceClass.SULPHUR_DIOXIDE, SensorDeviceClass.SULPHUR_DIOXIDE,
SensorDeviceClass.TEMPERATURE, SensorDeviceClass.TEMPERATURE,
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS,
SensorDeviceClass.VOLTAGE, SensorDeviceClass.VOLTAGE,
SensorDeviceClass.VOLUME, SensorDeviceClass.VOLUME,
SensorDeviceClass.WATER, SensorDeviceClass.WATER,