mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Replace new PRECIPITATION_INTENSITY with enum (#80653)
This commit is contained in:
parent
727eccfec4
commit
7838bb3ebe
@ -21,11 +21,11 @@ from homeassistant.components.weather import (
|
|||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
DEGREE,
|
DEGREE,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
Platform,
|
Platform,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
|
|
||||||
ATTRIBUTION = "Powered by AEMET OpenData"
|
ATTRIBUTION = "Powered by AEMET OpenData"
|
||||||
@ -208,7 +208,7 @@ FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_FORECAST_PRECIPITATION,
|
key=ATTR_API_FORECAST_PRECIPITATION,
|
||||||
name="Precipitation",
|
name="Precipitation",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
|
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
|
||||||
@ -265,7 +265,7 @@ WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_RAIN,
|
key=ATTR_API_RAIN,
|
||||||
name="Rain",
|
name="Rain",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_RAIN_PROB,
|
key=ATTR_API_RAIN_PROB,
|
||||||
@ -276,7 +276,7 @@ WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_SNOW,
|
key=ATTR_API_SNOW,
|
||||||
name="Snow",
|
name="Snow",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_API_SNOW_PROB,
|
key=ATTR_API_SNOW_PROB,
|
||||||
|
@ -19,10 +19,10 @@ from homeassistant.const import (
|
|||||||
LIGHT_LUX,
|
LIGHT_LUX,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
PRECIPITATION_INCHES,
|
PRECIPITATION_INCHES,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRESSURE_INHG,
|
PRESSURE_INHG,
|
||||||
SPEED_MILES_PER_HOUR,
|
SPEED_MILES_PER_HOUR,
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity import EntityDescription
|
from homeassistant.helpers.entity import EntityDescription
|
||||||
@ -195,7 +195,7 @@ SENSOR_DESCRIPTIONS = (
|
|||||||
key=TYPE_HOURLYRAININ,
|
key=TYPE_HOURLYRAININ,
|
||||||
name="Hourly rain rate",
|
name="Hourly rain rate",
|
||||||
icon="mdi:water",
|
icon="mdi:water",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
|
@ -38,10 +38,10 @@ from homeassistant.const import (
|
|||||||
LENGTH_KILOMETERS,
|
LENGTH_KILOMETERS,
|
||||||
LENGTH_MILLIMETERS,
|
LENGTH_MILLIMETERS,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -183,7 +183,7 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key="precipitation",
|
key="precipitation",
|
||||||
name="Precipitation",
|
name="Precipitation",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
icon="mdi:weather-pouring",
|
icon="mdi:weather-pouring",
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
@ -197,7 +197,7 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
|
|||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key="precipitation_forecast_average",
|
key="precipitation_forecast_average",
|
||||||
name="Precipitation forecast average",
|
name="Precipitation forecast average",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
icon="mdi:weather-pouring",
|
icon="mdi:weather-pouring",
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
|
@ -27,8 +27,6 @@ from homeassistant.const import (
|
|||||||
LIGHT_LUX,
|
LIGHT_LUX,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
PRESSURE_INHG,
|
PRESSURE_INHG,
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
@ -36,6 +34,7 @@ from homeassistant.const import (
|
|||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
UV_INDEX,
|
UV_INDEX,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -157,12 +156,12 @@ ECOWITT_SENSORS_MAPPING: Final = {
|
|||||||
),
|
),
|
||||||
EcoWittSensorTypes.RAIN_RATE_MM: SensorEntityDescription(
|
EcoWittSensorTypes.RAIN_RATE_MM: SensorEntityDescription(
|
||||||
key="RAIN_RATE_MM",
|
key="RAIN_RATE_MM",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
EcoWittSensorTypes.RAIN_RATE_INCHES: SensorEntityDescription(
|
EcoWittSensorTypes.RAIN_RATE_INCHES: SensorEntityDescription(
|
||||||
key="RAIN_RATE_INCHES",
|
key="RAIN_RATE_INCHES",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
EcoWittSensorTypes.LIGHTNING_DISTANCE_KM: SensorEntityDescription(
|
EcoWittSensorTypes.LIGHTNING_DISTANCE_KM: SensorEntityDescription(
|
||||||
|
@ -37,10 +37,6 @@ from homeassistant.const import (
|
|||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_KILO_WATT,
|
POWER_KILO_WATT,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
PRESSURE_INHG,
|
PRESSURE_INHG,
|
||||||
PRESSURE_MBAR,
|
PRESSURE_MBAR,
|
||||||
@ -80,6 +76,7 @@ from homeassistant.const import (
|
|||||||
VOLUME_GALLONS,
|
VOLUME_GALLONS,
|
||||||
VOLUME_LITERS,
|
VOLUME_LITERS,
|
||||||
Platform,
|
Platform,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__package__)
|
_LOGGER = logging.getLogger(__package__)
|
||||||
@ -342,7 +339,7 @@ UOM_FRIENDLY_NAME = {
|
|||||||
"21": "%AH",
|
"21": "%AH",
|
||||||
"22": "%RH",
|
"22": "%RH",
|
||||||
"23": PRESSURE_INHG,
|
"23": PRESSURE_INHG,
|
||||||
"24": PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
"24": UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
UOM_INDEX: UOM_INDEX, # Index type. Use "node.formatted" for value
|
UOM_INDEX: UOM_INDEX, # Index type. Use "node.formatted" for value
|
||||||
"26": TEMP_KELVIN,
|
"26": TEMP_KELVIN,
|
||||||
"27": "keyword",
|
"27": "keyword",
|
||||||
@ -364,7 +361,7 @@ UOM_FRIENDLY_NAME = {
|
|||||||
"43": ELECTRIC_POTENTIAL_MILLIVOLT,
|
"43": ELECTRIC_POTENTIAL_MILLIVOLT,
|
||||||
"44": TIME_MINUTES,
|
"44": TIME_MINUTES,
|
||||||
"45": TIME_MINUTES,
|
"45": TIME_MINUTES,
|
||||||
"46": PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
"46": UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
"47": TIME_MONTHS,
|
"47": TIME_MONTHS,
|
||||||
"48": SPEED_MILES_PER_HOUR,
|
"48": SPEED_MILES_PER_HOUR,
|
||||||
"49": SPEED_METERS_PER_SECOND,
|
"49": SPEED_METERS_PER_SECOND,
|
||||||
@ -407,7 +404,7 @@ UOM_FRIENDLY_NAME = {
|
|||||||
"103": CURRENCY_DOLLAR,
|
"103": CURRENCY_DOLLAR,
|
||||||
"104": CURRENCY_CENT,
|
"104": CURRENCY_CENT,
|
||||||
"105": LENGTH_INCHES,
|
"105": LENGTH_INCHES,
|
||||||
"106": PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
"106": UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
"107": "", # raw 1-byte unsigned value
|
"107": "", # raw 1-byte unsigned value
|
||||||
"108": "", # raw 2-byte unsigned value
|
"108": "", # raw 2-byte unsigned value
|
||||||
"109": "", # raw 3-byte unsigned value
|
"109": "", # raw 3-byte unsigned value
|
||||||
@ -420,7 +417,7 @@ UOM_FRIENDLY_NAME = {
|
|||||||
"117": PRESSURE_MBAR,
|
"117": PRESSURE_MBAR,
|
||||||
"118": PRESSURE_HPA,
|
"118": PRESSURE_HPA,
|
||||||
"119": ENERGY_WATT_HOUR,
|
"119": ENERGY_WATT_HOUR,
|
||||||
"120": PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
"120": UnitOfVolumetricFlux.INCHES_PER_DAY,
|
||||||
}
|
}
|
||||||
|
|
||||||
UOM_TO_STATES = {
|
UOM_TO_STATES = {
|
||||||
|
@ -25,12 +25,12 @@ from homeassistant.const import (
|
|||||||
LENGTH_MILLIMETERS,
|
LENGTH_MILLIMETERS,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
|
SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
UV_INDEX,
|
UV_INDEX,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.entity import Entity, EntityCategory
|
from homeassistant.helpers.entity import Entity, EntityCategory
|
||||||
@ -172,7 +172,7 @@ SENSOR_TYPES = (
|
|||||||
key="Rain rate",
|
key="Rain rate",
|
||||||
name="Rain rate",
|
name="Rain rate",
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
),
|
),
|
||||||
RfxtrxSensorEntityDescription(
|
RfxtrxSensorEntityDescription(
|
||||||
key="Sound",
|
key="Sound",
|
||||||
|
@ -245,9 +245,9 @@ class SensorDeviceClass(StrEnum):
|
|||||||
PRECIPITATION_INTENSITY = "precipitation_intensity"
|
PRECIPITATION_INTENSITY = "precipitation_intensity"
|
||||||
"""Precipitation intensity.
|
"""Precipitation intensity.
|
||||||
|
|
||||||
Unit of measurement:
|
Unit of measurement: UnitOfVolumetricFlux
|
||||||
- `in/d`, `in/h`
|
- SI /metric: `mm/d`, `mm/h`
|
||||||
- `mm/d`, `mm/h`
|
- USCS / imperial: `in/d`, `in/h`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
PRESSURE = "pressure"
|
PRESSURE = "pressure"
|
||||||
@ -275,7 +275,7 @@ class SensorDeviceClass(StrEnum):
|
|||||||
SPEED = "speed"
|
SPEED = "speed"
|
||||||
"""Generic speed.
|
"""Generic speed.
|
||||||
|
|
||||||
Unit of measurement: `SPEED_*` or `PRECIPITATION_INTENSITY_*` units
|
Unit of measurement: `SPEED_*` units or `UnitOfVolumetricFlux`
|
||||||
- SI /metric: `mm/d`, `mm/h`, `m/s`, `km/h`
|
- SI /metric: `mm/d`, `mm/h`, `m/s`, `km/h`
|
||||||
- USCS / imperial: `in/d`, `in/h`, `ft/s`, `mph`
|
- USCS / imperial: `in/d`, `in/h`, `ft/s`, `mph`
|
||||||
- Nautical: `kn`
|
- Nautical: `kn`
|
||||||
|
@ -14,10 +14,10 @@ from homeassistant.const import (
|
|||||||
LIGHT_LUX,
|
LIGHT_LUX,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
UV_INDEX,
|
UV_INDEX,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
@ -57,7 +57,7 @@ SENSOR_TYPES: dict[str, SensorEntityDescription] = {
|
|||||||
SENSOR_TYPE_RAINRATE: SensorEntityDescription(
|
SENSOR_TYPE_RAINRATE: SensorEntityDescription(
|
||||||
key=SENSOR_TYPE_RAINRATE,
|
key=SENSOR_TYPE_RAINRATE,
|
||||||
name="Rain rate",
|
name="Rain rate",
|
||||||
native_unit_of_measurement=PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
icon="mdi:water",
|
icon="mdi:water",
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
|
@ -109,8 +109,6 @@ from homeassistant.const import (
|
|||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
POWER_BTU_PER_HOUR,
|
POWER_BTU_PER_HOUR,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_INHG,
|
PRESSURE_INHG,
|
||||||
PRESSURE_MMHG,
|
PRESSURE_MMHG,
|
||||||
PRESSURE_PSI,
|
PRESSURE_PSI,
|
||||||
@ -127,6 +125,7 @@ from homeassistant.const import (
|
|||||||
VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
|
VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
|
||||||
VOLUME_GALLONS,
|
VOLUME_GALLONS,
|
||||||
VOLUME_LITERS,
|
VOLUME_LITERS,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -201,14 +200,14 @@ MULTILEVEL_SENSOR_UNIT_MAP: dict[str, set[MultilevelSensorScaleType]] = {
|
|||||||
VOLUME_GALLONS: UNIT_GALLONS,
|
VOLUME_GALLONS: UNIT_GALLONS,
|
||||||
FREQUENCY_HERTZ: UNIT_HERTZ,
|
FREQUENCY_HERTZ: UNIT_HERTZ,
|
||||||
PRESSURE_INHG: UNIT_INCHES_OF_MERCURY,
|
PRESSURE_INHG: UNIT_INCHES_OF_MERCURY,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR: UNIT_INCHES_PER_HOUR,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR: UNIT_INCHES_PER_HOUR,
|
||||||
MASS_KILOGRAMS: UNIT_KILOGRAM,
|
MASS_KILOGRAMS: UNIT_KILOGRAM,
|
||||||
FREQUENCY_KILOHERTZ: UNIT_KILOHERTZ,
|
FREQUENCY_KILOHERTZ: UNIT_KILOHERTZ,
|
||||||
VOLUME_LITERS: UNIT_LITER,
|
VOLUME_LITERS: UNIT_LITER,
|
||||||
LIGHT_LUX: UNIT_LUX,
|
LIGHT_LUX: UNIT_LUX,
|
||||||
LENGTH_METERS: UNIT_METER,
|
LENGTH_METERS: UNIT_METER,
|
||||||
ELECTRIC_CURRENT_MILLIAMPERE: UNIT_MILLIAMPERE,
|
ELECTRIC_CURRENT_MILLIAMPERE: UNIT_MILLIAMPERE,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR: UNIT_MILLIMETER_HOUR,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR: UNIT_MILLIMETER_HOUR,
|
||||||
ELECTRIC_POTENTIAL_MILLIVOLT: UNIT_MILLIVOLT,
|
ELECTRIC_POTENTIAL_MILLIVOLT: UNIT_MILLIVOLT,
|
||||||
SPEED_MILES_PER_HOUR: UNIT_MPH,
|
SPEED_MILES_PER_HOUR: UNIT_MPH,
|
||||||
SPEED_METERS_PER_SECOND: UNIT_M_S,
|
SPEED_METERS_PER_SECOND: UNIT_M_S,
|
||||||
|
@ -603,13 +603,26 @@ REVOLUTIONS_PER_MINUTE: Final = "rpm"
|
|||||||
IRRADIATION_WATTS_PER_SQUARE_METER: Final = "W/m²"
|
IRRADIATION_WATTS_PER_SQUARE_METER: Final = "W/m²"
|
||||||
IRRADIATION_BTUS_PER_HOUR_SQUARE_FOOT: Final = "BTU/(h×ft²)"
|
IRRADIATION_BTUS_PER_HOUR_SQUARE_FOOT: Final = "BTU/(h×ft²)"
|
||||||
|
|
||||||
# Precipitation intensity units
|
|
||||||
# The derivation of these units is a volume of rain amassing in a container
|
class UnitOfVolumetricFlux(StrEnum):
|
||||||
# with constant cross section in a given time
|
"""Volumetric flux, commonly used for precipitation intensity.
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY: Final = "in/d"
|
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR: Final = "in/h"
|
The derivation of these units is a volume of rain amassing in a container
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY: Final = "mm/d"
|
with constant cross section in a given time
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
"""
|
||||||
|
|
||||||
|
INCHES_PER_DAY = "in/d"
|
||||||
|
"""Derived from in³/(in².d)"""
|
||||||
|
|
||||||
|
INCHES_PER_HOUR = "in/h"
|
||||||
|
"""Derived from in³/(in².h)"""
|
||||||
|
|
||||||
|
MILLIMETERS_PER_DAY = "mm/d"
|
||||||
|
"""Derived from mm³/(mm².d)"""
|
||||||
|
|
||||||
|
MILLIMETERS_PER_HOUR = "mm/h"
|
||||||
|
"""Derived from mm³/(mm².h)"""
|
||||||
|
|
||||||
|
|
||||||
# Precipitation units
|
# Precipitation units
|
||||||
# The derivation of these units is a volume of rain amassing in a container
|
# The derivation of these units is a volume of rain amassing in a container
|
||||||
@ -618,10 +631,10 @@ PRECIPITATION_INCHES: Final = "in"
|
|||||||
PRECIPITATION_MILLIMETERS: Final = "mm"
|
PRECIPITATION_MILLIMETERS: Final = "mm"
|
||||||
|
|
||||||
PRECIPITATION_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
PRECIPITATION_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
||||||
"""Deprecated: please use PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR"""
|
"""Deprecated: please use UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR"""
|
||||||
|
|
||||||
PRECIPITATION_INCHES_PER_HOUR: Final = "in/h"
|
PRECIPITATION_INCHES_PER_HOUR: Final = "in/h"
|
||||||
"""Deprecated: please use PRECIPITATION_INTENSITY_INCHES_PER_HOUR"""
|
"""Deprecated: please use UnitOfVolumetricFlux.INCHES_PER_HOUR"""
|
||||||
|
|
||||||
# Concentration units
|
# Concentration units
|
||||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "µg/m³"
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "µg/m³"
|
||||||
@ -639,13 +652,13 @@ SPEED_KNOTS: Final = "kn"
|
|||||||
SPEED_MILES_PER_HOUR: Final = "mph"
|
SPEED_MILES_PER_HOUR: Final = "mph"
|
||||||
|
|
||||||
SPEED_MILLIMETERS_PER_DAY: Final = "mm/d"
|
SPEED_MILLIMETERS_PER_DAY: Final = "mm/d"
|
||||||
"""Deprecated: please use PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY"""
|
"""Deprecated: please use UnitOfVolumetricFlux.MILLIMETERS_PER_DAY"""
|
||||||
|
|
||||||
SPEED_INCHES_PER_DAY: Final = "in/d"
|
SPEED_INCHES_PER_DAY: Final = "in/d"
|
||||||
"""Deprecated: please use PRECIPITATION_INTENSITY_INCHES_PER_DAY"""
|
"""Deprecated: please use UnitOfVolumetricFlux.INCHES_PER_DAY"""
|
||||||
|
|
||||||
SPEED_INCHES_PER_HOUR: Final = "in/h"
|
SPEED_INCHES_PER_HOUR: Final = "in/h"
|
||||||
"""Deprecated: please use PRECIPITATION_INTENSITY_INCHES_PER_HOUR"""
|
"""Deprecated: please use UnitOfVolumetricFlux.INCHES_PER_HOUR"""
|
||||||
|
|
||||||
|
|
||||||
# Signal_strength units
|
# Signal_strength units
|
||||||
|
@ -22,10 +22,6 @@ from homeassistant.const import (
|
|||||||
MASS_POUNDS,
|
MASS_POUNDS,
|
||||||
POWER_KILO_WATT,
|
POWER_KILO_WATT,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_BAR,
|
PRESSURE_BAR,
|
||||||
PRESSURE_CBAR,
|
PRESSURE_CBAR,
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
@ -50,6 +46,7 @@ from homeassistant.const import (
|
|||||||
VOLUME_GALLONS,
|
VOLUME_GALLONS,
|
||||||
VOLUME_LITERS,
|
VOLUME_LITERS,
|
||||||
VOLUME_MILLILITERS,
|
VOLUME_MILLILITERS,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
|
||||||
@ -242,10 +239,10 @@ class SpeedConverter(BaseUnitConverter):
|
|||||||
UNIT_CLASS = "speed"
|
UNIT_CLASS = "speed"
|
||||||
NORMALIZED_UNIT = SPEED_METERS_PER_SECOND
|
NORMALIZED_UNIT = SPEED_METERS_PER_SECOND
|
||||||
_UNIT_CONVERSION: dict[str, float] = {
|
_UNIT_CONVERSION: dict[str, float] = {
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY: _DAYS_TO_SECS / _IN_TO_M,
|
UnitOfVolumetricFlux.INCHES_PER_DAY: _DAYS_TO_SECS / _IN_TO_M,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR: _HRS_TO_SECS / _IN_TO_M,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR: _HRS_TO_SECS / _IN_TO_M,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY: _DAYS_TO_SECS / _MM_TO_M,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY: _DAYS_TO_SECS / _MM_TO_M,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR: _HRS_TO_SECS / _MM_TO_M,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR: _HRS_TO_SECS / _MM_TO_M,
|
||||||
SPEED_FEET_PER_SECOND: 1 / _FOOT_TO_M,
|
SPEED_FEET_PER_SECOND: 1 / _FOOT_TO_M,
|
||||||
SPEED_KILOMETERS_PER_HOUR: _HRS_TO_SECS / _KM_TO_M,
|
SPEED_KILOMETERS_PER_HOUR: _HRS_TO_SECS / _KM_TO_M,
|
||||||
SPEED_KNOTS: _HRS_TO_SECS / _NAUTICAL_MILE_TO_M,
|
SPEED_KNOTS: _HRS_TO_SECS / _NAUTICAL_MILE_TO_M,
|
||||||
@ -253,10 +250,10 @@ class SpeedConverter(BaseUnitConverter):
|
|||||||
SPEED_MILES_PER_HOUR: _HRS_TO_SECS / _MILE_TO_M,
|
SPEED_MILES_PER_HOUR: _HRS_TO_SECS / _MILE_TO_M,
|
||||||
}
|
}
|
||||||
VALID_UNITS = {
|
VALID_UNITS = {
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
UnitOfVolumetricFlux.INCHES_PER_DAY,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
SPEED_FEET_PER_SECOND,
|
SPEED_FEET_PER_SECOND,
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
SPEED_KNOTS,
|
SPEED_KNOTS,
|
||||||
|
@ -22,10 +22,6 @@ from homeassistant.const import (
|
|||||||
MASS_POUNDS,
|
MASS_POUNDS,
|
||||||
POWER_KILO_WATT,
|
POWER_KILO_WATT,
|
||||||
POWER_WATT,
|
POWER_WATT,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
|
||||||
PRESSURE_CBAR,
|
PRESSURE_CBAR,
|
||||||
PRESSURE_HPA,
|
PRESSURE_HPA,
|
||||||
PRESSURE_INHG,
|
PRESSURE_INHG,
|
||||||
@ -48,6 +44,7 @@ from homeassistant.const import (
|
|||||||
VOLUME_GALLONS,
|
VOLUME_GALLONS,
|
||||||
VOLUME_LITERS,
|
VOLUME_LITERS,
|
||||||
VOLUME_MILLILITERS,
|
VOLUME_MILLILITERS,
|
||||||
|
UnitOfVolumetricFlux,
|
||||||
)
|
)
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.util.unit_conversion import (
|
from homeassistant.util.unit_conversion import (
|
||||||
@ -96,10 +93,10 @@ INVALID_SYMBOL = "bob"
|
|||||||
(PressureConverter, PRESSURE_CBAR),
|
(PressureConverter, PRESSURE_CBAR),
|
||||||
(PressureConverter, PRESSURE_MMHG),
|
(PressureConverter, PRESSURE_MMHG),
|
||||||
(PressureConverter, PRESSURE_PSI),
|
(PressureConverter, PRESSURE_PSI),
|
||||||
(SpeedConverter, PRECIPITATION_INTENSITY_INCHES_PER_DAY),
|
(SpeedConverter, UnitOfVolumetricFlux.INCHES_PER_DAY),
|
||||||
(SpeedConverter, PRECIPITATION_INTENSITY_INCHES_PER_HOUR),
|
(SpeedConverter, UnitOfVolumetricFlux.INCHES_PER_HOUR),
|
||||||
(SpeedConverter, PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY),
|
(SpeedConverter, UnitOfVolumetricFlux.MILLIMETERS_PER_DAY),
|
||||||
(SpeedConverter, PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR),
|
(SpeedConverter, UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR),
|
||||||
(SpeedConverter, SPEED_FEET_PER_SECOND),
|
(SpeedConverter, SPEED_FEET_PER_SECOND),
|
||||||
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR),
|
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR),
|
||||||
(SpeedConverter, SPEED_KNOTS),
|
(SpeedConverter, SPEED_KNOTS),
|
||||||
@ -397,42 +394,42 @@ def test_pressure_convert(
|
|||||||
# 5 in/day * 25.4 mm/in = 127 mm/day
|
# 5 in/day * 25.4 mm/in = 127 mm/day
|
||||||
(
|
(
|
||||||
5,
|
5,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
UnitOfVolumetricFlux.INCHES_PER_DAY,
|
||||||
127,
|
127,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
),
|
),
|
||||||
# 5 mm/day / 25.4 mm/in = 0.19685 in/day
|
# 5 mm/day / 25.4 mm/in = 0.19685 in/day
|
||||||
(
|
(
|
||||||
5,
|
5,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
pytest.approx(0.1968504),
|
pytest.approx(0.1968504),
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
UnitOfVolumetricFlux.INCHES_PER_DAY,
|
||||||
),
|
),
|
||||||
# 48 mm/day = 2 mm/h
|
# 48 mm/day = 2 mm/h
|
||||||
(
|
(
|
||||||
48,
|
48,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
pytest.approx(2),
|
pytest.approx(2),
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
|
||||||
),
|
),
|
||||||
# 5 in/hr * 24 hr/day = 3048 mm/day
|
# 5 in/hr * 24 hr/day = 3048 mm/day
|
||||||
(
|
(
|
||||||
5,
|
5,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
3048,
|
3048,
|
||||||
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,
|
||||||
),
|
),
|
||||||
# 5 m/s * 39.3701 in/m * 3600 s/hr = 708661
|
# 5 m/s * 39.3701 in/m * 3600 s/hr = 708661
|
||||||
(
|
(
|
||||||
5,
|
5,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
pytest.approx(708661.42),
|
pytest.approx(708661.42),
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
),
|
),
|
||||||
# 5000 in/h / 39.3701 in/m / 3600 s/h = 0.03528 m/s
|
# 5000 in/h / 39.3701 in/m / 3600 s/h = 0.03528 m/s
|
||||||
(
|
(
|
||||||
5000,
|
5000,
|
||||||
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
UnitOfVolumetricFlux.INCHES_PER_HOUR,
|
||||||
pytest.approx(0.0352778),
|
pytest.approx(0.0352778),
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user