diff --git a/homeassistant/components/number/__init__.py b/homeassistant/components/number/__init__.py index 5a48d00d4da..523cd50a6ed 100644 --- a/homeassistant/components/number/__init__.py +++ b/homeassistant/components/number/__init__.py @@ -296,7 +296,7 @@ class NumberDeviceClass(StrEnum): VOLTAGE = "voltage" """Voltage. - Unit of measurement: `V` + Unit of measurement: `V`, `mV` """ VOLUME = "volume" diff --git a/homeassistant/components/sensor/__init__.py b/homeassistant/components/sensor/__init__.py index 12f49766834..e893c0f9e79 100644 --- a/homeassistant/components/sensor/__init__.py +++ b/homeassistant/components/sensor/__init__.py @@ -88,6 +88,7 @@ from homeassistant.util.unit_conversion import ( BaseUnitConverter, DataRateConverter, DistanceConverter, + ElectricPotentialConverter, InformationConverter, MassConverter, PressureConverter, @@ -390,7 +391,7 @@ class SensorDeviceClass(StrEnum): VOLTAGE = "voltage" """Voltage. - Unit of measurement: `V` + Unit of measurement: `V`, `mV` """ VOLUME = "volume" @@ -476,6 +477,7 @@ UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] = SensorDeviceClass.PRESSURE: PressureConverter, SensorDeviceClass.SPEED: SpeedConverter, SensorDeviceClass.TEMPERATURE: TemperatureConverter, + SensorDeviceClass.VOLTAGE: ElectricPotentialConverter, SensorDeviceClass.VOLUME: VolumeConverter, SensorDeviceClass.WATER: VolumeConverter, SensorDeviceClass.WEIGHT: MassConverter, @@ -537,7 +539,7 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = { SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: { CONCENTRATION_MICROGRAMS_PER_CUBIC_METER }, - SensorDeviceClass.VOLTAGE: {UnitOfElectricPotential.VOLT}, + SensorDeviceClass.VOLTAGE: set(UnitOfElectricPotential), SensorDeviceClass.VOLUME: set(UnitOfVolume), SensorDeviceClass.WATER: { UnitOfVolume.CENTUM_CUBIC_FEET, diff --git a/homeassistant/util/unit_conversion.py b/homeassistant/util/unit_conversion.py index 623b70da1a8..fc58014c143 100644 --- a/homeassistant/util/unit_conversion.py +++ b/homeassistant/util/unit_conversion.py @@ -4,6 +4,7 @@ from __future__ import annotations from homeassistant.const import ( UNIT_NOT_RECOGNIZED_TEMPLATE, UnitOfDataRate, + UnitOfElectricPotential, UnitOfEnergy, UnitOfInformation, UnitOfLength, @@ -137,6 +138,21 @@ class DistanceConverter(BaseUnitConverter): } +class ElectricPotentialConverter(BaseUnitConverter): + """Utility to convert electric potential values.""" + + UNIT_CLASS = "voltage" + NORMALIZED_UNIT = UnitOfElectricPotential.VOLT + _UNIT_CONVERSION: dict[str, float] = { + UnitOfElectricPotential.VOLT: 1, + UnitOfElectricPotential.MILLIVOLT: 1e3, + } + VALID_UNITS = { + UnitOfElectricPotential.VOLT, + UnitOfElectricPotential.MILLIVOLT, + } + + class EnergyConverter(BaseUnitConverter): """Utility to convert energy values."""