From 5a7c3aaa2ded2db7457855d726adbec1390949e6 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 12 May 2023 14:37:54 +0200 Subject: [PATCH] Add sensor device class volatile_organic_compounds_parts (#92973) --- homeassistant/components/number/const.py | 11 +++++++++++ homeassistant/components/sensor/const.py | 12 ++++++++++++ homeassistant/components/sensor/device_condition.py | 5 +++++ homeassistant/components/sensor/device_trigger.py | 5 +++++ homeassistant/components/sensor/strings.json | 5 +++++ tests/components/sensor/test_init.py | 1 + 6 files changed, 39 insertions(+) diff --git a/homeassistant/components/number/const.py b/homeassistant/components/number/const.py index 48cd04dc26e81c..b0542aa588a8d0 100644 --- a/homeassistant/components/number/const.py +++ b/homeassistant/components/number/const.py @@ -8,6 +8,7 @@ from homeassistant.backports.enum import StrEnum from homeassistant.const import ( CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION, LIGHT_LUX, PERCENTAGE, @@ -309,6 +310,12 @@ class NumberDeviceClass(StrEnum): Unit of measurement: `µg/m³` """ + VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts" + """Ratio of VOC. + + Unit of measurement: `ppm`, `ppb` + """ + VOLTAGE = "voltage" """Voltage. @@ -421,6 +428,10 @@ class NumberMode(StrEnum): NumberDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: { CONCENTRATION_MICROGRAMS_PER_CUBIC_METER }, + NumberDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: { + CONCENTRATION_PARTS_PER_BILLION, + CONCENTRATION_PARTS_PER_MILLION, + }, NumberDeviceClass.VOLTAGE: set(UnitOfElectricPotential), NumberDeviceClass.VOLUME: set(UnitOfVolume), NumberDeviceClass.VOLUME_STORAGE: set(UnitOfVolume), diff --git a/homeassistant/components/sensor/const.py b/homeassistant/components/sensor/const.py index 4764de527502dc..8ab90f03c01442 100644 --- a/homeassistant/components/sensor/const.py +++ b/homeassistant/components/sensor/const.py @@ -8,6 +8,7 @@ from homeassistant.backports.enum import StrEnum from homeassistant.const import ( CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION, LIGHT_LUX, PERCENTAGE, @@ -347,6 +348,12 @@ class SensorDeviceClass(StrEnum): Unit of measurement: `µg/m³` """ + VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts" + """Ratio of VOC. + + Unit of measurement: `ppm`, `ppb` + """ + VOLTAGE = "voltage" """Voltage. @@ -521,6 +528,10 @@ class SensorStateClass(StrEnum): SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: { CONCENTRATION_MICROGRAMS_PER_CUBIC_METER }, + SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: { + CONCENTRATION_PARTS_PER_BILLION, + CONCENTRATION_PARTS_PER_MILLION, + }, SensorDeviceClass.VOLTAGE: set(UnitOfElectricPotential), SensorDeviceClass.VOLUME: set(UnitOfVolume), SensorDeviceClass.WATER: { @@ -580,6 +591,7 @@ class SensorStateClass(StrEnum): SensorDeviceClass.TEMPERATURE: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.TIMESTAMP: set(), SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {SensorStateClass.MEASUREMENT}, + SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.VOLTAGE: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.VOLUME: { SensorStateClass.TOTAL, diff --git a/homeassistant/components/sensor/device_condition.py b/homeassistant/components/sensor/device_condition.py index 8547827d7488c0..c52e076e51ea5a 100644 --- a/homeassistant/components/sensor/device_condition.py +++ b/homeassistant/components/sensor/device_condition.py @@ -70,6 +70,7 @@ CONF_IS_TEMPERATURE = "is_temperature" CONF_IS_VALUE = "is_value" 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_VOLUME = "is_volume" CONF_IS_WATER = "is_water" @@ -120,6 +121,9 @@ SensorDeviceClass.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.VOLUME: [{CONF_TYPE: CONF_IS_VOLUME}], SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_IS_VOLUME}], @@ -173,6 +177,7 @@ CONF_IS_SULPHUR_DIOXIDE, CONF_IS_TEMPERATURE, CONF_IS_VOLATILE_ORGANIC_COMPOUNDS, + CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS, CONF_IS_VOLTAGE, CONF_IS_VOLUME, CONF_IS_WATER, diff --git a/homeassistant/components/sensor/device_trigger.py b/homeassistant/components/sensor/device_trigger.py index 3b2a0485554a84..0d594e1b7c3a57 100644 --- a/homeassistant/components/sensor/device_trigger.py +++ b/homeassistant/components/sensor/device_trigger.py @@ -69,6 +69,7 @@ CONF_TEMPERATURE = "temperature" CONF_VALUE = "value" CONF_VOLATILE_ORGANIC_COMPOUNDS = "volatile_organic_compounds" +CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS = "volatile_organic_compounds_parts" CONF_VOLTAGE = "voltage" CONF_VOLUME = "volume" CONF_WATER = "water" @@ -119,6 +120,9 @@ SensorDeviceClass.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.VOLUME: [{CONF_TYPE: CONF_VOLUME}], SensorDeviceClass.VOLUME_STORAGE: [{CONF_TYPE: CONF_VOLUME}], @@ -173,6 +177,7 @@ CONF_SULPHUR_DIOXIDE, CONF_TEMPERATURE, CONF_VOLATILE_ORGANIC_COMPOUNDS, + CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS, CONF_VOLTAGE, CONF_VOLUME, CONF_WATER, diff --git a/homeassistant/components/sensor/strings.json b/homeassistant/components/sensor/strings.json index 52792e1d1f2838..c4c1f81109d49a 100644 --- a/homeassistant/components/sensor/strings.json +++ b/homeassistant/components/sensor/strings.json @@ -41,6 +41,7 @@ "is_temperature": "Current {entity_name} temperature", "is_value": "Current {entity_name} value", "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_volume": "Current {entity_name} volume", "is_water": "Current {entity_name} water", @@ -87,6 +88,7 @@ "temperature": "{entity_name} temperature changes", "value": "{entity_name} value 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", "volume": "{entity_name} volume changes", "water": "{entity_name} water changes", @@ -244,6 +246,9 @@ "volatile_organic_compounds": { "name": "VOCs" }, + "volatile_organic_compounds_parts": { + "name": "[%key:component::sensor::entity_component::volatile_organic_compounds::name%]" + }, "voltage": { "name": "Voltage" }, diff --git a/tests/components/sensor/test_init.py b/tests/components/sensor/test_init.py index 82ea25b5a11c2d..7c637b0a6f2bd1 100644 --- a/tests/components/sensor/test_init.py +++ b/tests/components/sensor/test_init.py @@ -1758,6 +1758,7 @@ async def test_non_numeric_device_class_with_unit_of_measurement( SensorDeviceClass.SULPHUR_DIOXIDE, SensorDeviceClass.TEMPERATURE, SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS, + SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS, SensorDeviceClass.VOLTAGE, SensorDeviceClass.VOLUME, SensorDeviceClass.WATER,