diff --git a/custom_components/yandex_smart_home/unit_conversion.py b/custom_components/yandex_smart_home/unit_conversion.py index 111c74aa..a29cb6b3 100644 --- a/custom_components/yandex_smart_home/unit_conversion.py +++ b/custom_components/yandex_smart_home/unit_conversion.py @@ -19,6 +19,9 @@ from .schema import PressureUnit, TemperatureUnit +# EFEKTA iAQ3 (#570) +UNIT_OF_MEASUREMENT_VOC_INDEX_POINT = "VOC Index points" + class TVOCConcentrationConverter(BaseUnitConverter): """Utility to convert TVOC concentration values.""" @@ -31,6 +34,7 @@ class TVOCConcentrationConverter(BaseUnitConverter): CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_BILLION, + UNIT_OF_MEASUREMENT_VOC_INDEX_POINT, } # average molecular weight of tVOC = 110 g/mol @@ -40,6 +44,7 @@ class TVOCConcentrationConverter(BaseUnitConverter): CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: 1 / 1000, CONCENTRATION_PARTS_PER_MILLION: 1 / 4496.29381184, CONCENTRATION_PARTS_PER_BILLION: 1 / 4.49629381184, + UNIT_OF_MEASUREMENT_VOC_INDEX_POINT: 1, } diff --git a/docs/devices/sensor/float.md b/docs/devices/sensor/float.md index 0d2d5e8d..47e8af9a 100644 --- a/docs/devices/sensor/float.md +++ b/docs/devices/sensor/float.md @@ -180,6 +180,8 @@ Если в HA используется значение в единцах, поддерживаемых УДЯ - конвертация выполнена не будет (например если в HA давление в барах, то и в УДЯ оно будет передано в барах). +Значения некоторых датчиков отдаются "как есть", несмотря на несоответствие единиц измерения между HA и УДЯ (например VOC Index в датчике EFEKTA iAQ3). + ### Изменение единиц измерения { id=select-unit-of-measurement } В некоторых случаях компонент не может сам определить, в каких единицах измерения находится значение датчика. В этом случае значение может быть сконвертировано неверно. diff --git a/tests/test_property_float.py b/tests/test_property_float.py index df705a97..e56eb54a 100644 --- a/tests/test_property_float.py +++ b/tests/test_property_float.py @@ -515,6 +515,7 @@ async def test_property_float_pm_density( ("µg/m³", "30", 30), ("mg/m³", "30", 30000), ("μg/ft³", "30", 1059.44), + ("VOC Index points", "30", 30), (None, "30", 30), (None, "-5", 0), (None, "None", None),