Teach UnitlessRatioConverter about ppm and ppb (#92989)

This commit is contained in:
Erik Montnemery 2023-05-12 16:46:37 +02:00 committed by GitHub
parent 7807df4426
commit 9a70f47049
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 0 deletions

View File

@ -466,6 +466,7 @@ UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] =
SensorDeviceClass.PRESSURE: PressureConverter, SensorDeviceClass.PRESSURE: PressureConverter,
SensorDeviceClass.SPEED: SpeedConverter, SensorDeviceClass.SPEED: SpeedConverter,
SensorDeviceClass.TEMPERATURE: TemperatureConverter, SensorDeviceClass.TEMPERATURE: TemperatureConverter,
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS: UnitlessRatioConverter,
SensorDeviceClass.VOLTAGE: ElectricPotentialConverter, SensorDeviceClass.VOLTAGE: ElectricPotentialConverter,
SensorDeviceClass.VOLUME: VolumeConverter, SensorDeviceClass.VOLUME: VolumeConverter,
SensorDeviceClass.VOLUME_STORAGE: VolumeConverter, SensorDeviceClass.VOLUME_STORAGE: VolumeConverter,

View File

@ -2,6 +2,8 @@
from __future__ import annotations from __future__ import annotations
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
PERCENTAGE, PERCENTAGE,
UNIT_NOT_RECOGNIZED_TEMPLATE, UNIT_NOT_RECOGNIZED_TEMPLATE,
UnitOfDataRate, UnitOfDataRate,
@ -421,6 +423,8 @@ class UnitlessRatioConverter(BaseUnitConverter):
NORMALIZED_UNIT = None NORMALIZED_UNIT = None
_UNIT_CONVERSION: dict[str | None, float] = { _UNIT_CONVERSION: dict[str | None, float] = {
None: 1, None: 1,
CONCENTRATION_PARTS_PER_BILLION: 1000000000,
CONCENTRATION_PARTS_PER_MILLION: 1000000,
PERCENTAGE: 100, PERCENTAGE: 100,
} }
VALID_UNITS = { VALID_UNITS = {

View File

@ -6,6 +6,8 @@ import inspect
import pytest import pytest
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
PERCENTAGE, PERCENTAGE,
UnitOfDataRate, UnitOfDataRate,
UnitOfElectricCurrent, UnitOfElectricCurrent,
@ -365,6 +367,8 @@ _CONVERTED_VALUE: dict[
], ],
UnitlessRatioConverter: [ UnitlessRatioConverter: [
(5, None, 500, PERCENTAGE), (5, None, 500, PERCENTAGE),
(5, None, 5000000000, CONCENTRATION_PARTS_PER_BILLION),
(5, None, 5000000, CONCENTRATION_PARTS_PER_MILLION),
(5, PERCENTAGE, 0.05, None), (5, PERCENTAGE, 0.05, None),
], ],
VolumeConverter: [ VolumeConverter: [