Adjust precipitation units (#79780)
* Adjust precipitation units * Use PRECIPITATION_INTENSITY * Revert isy994 * Adjust SensorDeviceClass docstring * Adjust comment
This commit is contained in:
parent
a70f9b8995
commit
9afb4c6c9e
4 changed files with 83 additions and 25 deletions
|
@ -266,7 +266,7 @@ class SensorDeviceClass(StrEnum):
|
||||||
SPEED = "speed"
|
SPEED = "speed"
|
||||||
"""Generic speed.
|
"""Generic speed.
|
||||||
|
|
||||||
Unit of measurement: `SPEED_*` units
|
Unit of measurement: `SPEED_*` or `PRECIPITATION_INTENSITY_*` units
|
||||||
- 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`
|
||||||
|
|
|
@ -525,11 +525,15 @@ TIME_YEARS: Final = "y"
|
||||||
|
|
||||||
# Length units
|
# Length units
|
||||||
LENGTH_MILLIMETERS: Final = "mm"
|
LENGTH_MILLIMETERS: Final = "mm"
|
||||||
|
"""Note: for precipitation, please use PRECIPITATION_MILLIMETERS"""
|
||||||
|
|
||||||
LENGTH_CENTIMETERS: Final = "cm"
|
LENGTH_CENTIMETERS: Final = "cm"
|
||||||
LENGTH_METERS: Final = "m"
|
LENGTH_METERS: Final = "m"
|
||||||
LENGTH_KILOMETERS: Final = "km"
|
LENGTH_KILOMETERS: Final = "km"
|
||||||
|
|
||||||
LENGTH_INCHES: Final = "in"
|
LENGTH_INCHES: Final = "in"
|
||||||
|
"""Note: for precipitation, please use PRECIPITATION_INCHES"""
|
||||||
|
|
||||||
LENGTH_FEET: Final = "ft"
|
LENGTH_FEET: Final = "ft"
|
||||||
LENGTH_YARD: Final = "yd"
|
LENGTH_YARD: Final = "yd"
|
||||||
LENGTH_MILES: Final = "mi"
|
LENGTH_MILES: Final = "mi"
|
||||||
|
@ -602,10 +606,25 @@ 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
|
||||||
|
# with constant cross section in a given time
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_DAY: Final = "in/d"
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_HOUR: Final = "in/h"
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY: Final = "mm/d"
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
||||||
|
|
||||||
# Precipitation units
|
# Precipitation units
|
||||||
PRECIPITATION_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
# The derivation of these units is a volume of rain amassing in a container
|
||||||
|
# with constant cross section
|
||||||
PRECIPITATION_INCHES: Final = "in"
|
PRECIPITATION_INCHES: Final = "in"
|
||||||
|
PRECIPITATION_MILLIMETERS: Final = "mm"
|
||||||
|
|
||||||
|
PRECIPITATION_MILLIMETERS_PER_HOUR: Final = "mm/h"
|
||||||
|
"""Deprecated: please use PRECIPITATION_INTENSITY_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"""
|
||||||
|
|
||||||
# Concentration units
|
# Concentration units
|
||||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "µg/m³"
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "µg/m³"
|
||||||
|
@ -616,15 +635,22 @@ CONCENTRATION_PARTS_PER_MILLION: Final = "ppm"
|
||||||
CONCENTRATION_PARTS_PER_BILLION: Final = "ppb"
|
CONCENTRATION_PARTS_PER_BILLION: Final = "ppb"
|
||||||
|
|
||||||
# Speed units
|
# Speed units
|
||||||
SPEED_MILLIMETERS_PER_DAY: Final = "mm/d"
|
|
||||||
SPEED_FEET_PER_SECOND: Final = "ft/s"
|
SPEED_FEET_PER_SECOND: Final = "ft/s"
|
||||||
SPEED_INCHES_PER_DAY: Final = "in/d"
|
|
||||||
SPEED_METERS_PER_SECOND: Final = "m/s"
|
SPEED_METERS_PER_SECOND: Final = "m/s"
|
||||||
SPEED_INCHES_PER_HOUR: Final = "in/h"
|
|
||||||
SPEED_KILOMETERS_PER_HOUR: Final = "km/h"
|
SPEED_KILOMETERS_PER_HOUR: Final = "km/h"
|
||||||
SPEED_KNOTS: Final = "kn"
|
SPEED_KNOTS: Final = "kn"
|
||||||
SPEED_MILES_PER_HOUR: Final = "mph"
|
SPEED_MILES_PER_HOUR: Final = "mph"
|
||||||
|
|
||||||
|
SPEED_MILLIMETERS_PER_DAY: Final = "mm/d"
|
||||||
|
"""Deprecated: please use PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY"""
|
||||||
|
|
||||||
|
SPEED_INCHES_PER_DAY: Final = "in/d"
|
||||||
|
"""Deprecated: please use PRECIPITATION_INTENSITY_INCHES_PER_DAY"""
|
||||||
|
|
||||||
|
SPEED_INCHES_PER_HOUR: Final = "in/h"
|
||||||
|
"""Deprecated: please use PRECIPITATION_INTENSITY_INCHES_PER_HOUR"""
|
||||||
|
|
||||||
|
|
||||||
# Signal_strength units
|
# Signal_strength units
|
||||||
SIGNAL_STRENGTH_DECIBELS: Final = "dB"
|
SIGNAL_STRENGTH_DECIBELS: Final = "dB"
|
||||||
SIGNAL_STRENGTH_DECIBELS_MILLIWATT: Final = "dBm"
|
SIGNAL_STRENGTH_DECIBELS_MILLIWATT: Final = "dBm"
|
||||||
|
|
|
@ -21,6 +21,10 @@ 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,
|
||||||
|
@ -31,13 +35,10 @@ from homeassistant.const import (
|
||||||
PRESSURE_PA,
|
PRESSURE_PA,
|
||||||
PRESSURE_PSI,
|
PRESSURE_PSI,
|
||||||
SPEED_FEET_PER_SECOND,
|
SPEED_FEET_PER_SECOND,
|
||||||
SPEED_INCHES_PER_DAY,
|
|
||||||
SPEED_INCHES_PER_HOUR,
|
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
SPEED_KNOTS,
|
SPEED_KNOTS,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
SPEED_MILES_PER_HOUR,
|
SPEED_MILES_PER_HOUR,
|
||||||
SPEED_MILLIMETERS_PER_DAY,
|
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
TEMP_KELVIN,
|
TEMP_KELVIN,
|
||||||
|
@ -238,24 +239,26 @@ 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,
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_HOUR: _HRS_TO_SECS / _IN_TO_M,
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY: _DAYS_TO_SECS / _MM_TO_M,
|
||||||
|
PRECIPITATION_INTENSITY_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_INCHES_PER_DAY: _DAYS_TO_SECS / _IN_TO_M,
|
|
||||||
SPEED_INCHES_PER_HOUR: _HRS_TO_SECS / _IN_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,
|
||||||
SPEED_METERS_PER_SECOND: 1,
|
SPEED_METERS_PER_SECOND: 1,
|
||||||
SPEED_MILES_PER_HOUR: _HRS_TO_SECS / _MILE_TO_M,
|
SPEED_MILES_PER_HOUR: _HRS_TO_SECS / _MILE_TO_M,
|
||||||
SPEED_MILLIMETERS_PER_DAY: _DAYS_TO_SECS / _MM_TO_M,
|
|
||||||
}
|
}
|
||||||
VALID_UNITS = {
|
VALID_UNITS = {
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
||||||
SPEED_FEET_PER_SECOND,
|
SPEED_FEET_PER_SECOND,
|
||||||
SPEED_INCHES_PER_DAY,
|
|
||||||
SPEED_INCHES_PER_HOUR,
|
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
SPEED_KNOTS,
|
SPEED_KNOTS,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
SPEED_MILES_PER_HOUR,
|
SPEED_MILES_PER_HOUR,
|
||||||
SPEED_MILLIMETERS_PER_DAY,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,10 @@ 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,
|
||||||
|
@ -30,13 +34,10 @@ from homeassistant.const import (
|
||||||
PRESSURE_PA,
|
PRESSURE_PA,
|
||||||
PRESSURE_PSI,
|
PRESSURE_PSI,
|
||||||
SPEED_FEET_PER_SECOND,
|
SPEED_FEET_PER_SECOND,
|
||||||
SPEED_INCHES_PER_DAY,
|
|
||||||
SPEED_INCHES_PER_HOUR,
|
|
||||||
SPEED_KILOMETERS_PER_HOUR,
|
SPEED_KILOMETERS_PER_HOUR,
|
||||||
SPEED_KNOTS,
|
SPEED_KNOTS,
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
SPEED_MILES_PER_HOUR,
|
SPEED_MILES_PER_HOUR,
|
||||||
SPEED_MILLIMETERS_PER_DAY,
|
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
TEMP_FAHRENHEIT,
|
TEMP_FAHRENHEIT,
|
||||||
TEMP_KELVIN,
|
TEMP_KELVIN,
|
||||||
|
@ -93,14 +94,15 @@ 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, PRECIPITATION_INTENSITY_INCHES_PER_HOUR),
|
||||||
|
(SpeedConverter, PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY),
|
||||||
|
(SpeedConverter, PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR),
|
||||||
(SpeedConverter, SPEED_FEET_PER_SECOND),
|
(SpeedConverter, SPEED_FEET_PER_SECOND),
|
||||||
(SpeedConverter, SPEED_INCHES_PER_DAY),
|
|
||||||
(SpeedConverter, SPEED_INCHES_PER_HOUR),
|
|
||||||
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR),
|
(SpeedConverter, SPEED_KILOMETERS_PER_HOUR),
|
||||||
(SpeedConverter, SPEED_KNOTS),
|
(SpeedConverter, SPEED_KNOTS),
|
||||||
(SpeedConverter, SPEED_METERS_PER_SECOND),
|
(SpeedConverter, SPEED_METERS_PER_SECOND),
|
||||||
(SpeedConverter, SPEED_MILES_PER_HOUR),
|
(SpeedConverter, SPEED_MILES_PER_HOUR),
|
||||||
(SpeedConverter, SPEED_MILLIMETERS_PER_DAY),
|
|
||||||
(TemperatureConverter, TEMP_CELSIUS),
|
(TemperatureConverter, TEMP_CELSIUS),
|
||||||
(TemperatureConverter, TEMP_FAHRENHEIT),
|
(TemperatureConverter, TEMP_FAHRENHEIT),
|
||||||
(TemperatureConverter, TEMP_KELVIN),
|
(TemperatureConverter, TEMP_KELVIN),
|
||||||
|
@ -389,17 +391,44 @@ def test_pressure_convert(
|
||||||
# 5 mi/h * 1.609 km/mi = 8.04672 km/h
|
# 5 mi/h * 1.609 km/mi = 8.04672 km/h
|
||||||
(5, SPEED_MILES_PER_HOUR, 8.04672, SPEED_KILOMETERS_PER_HOUR),
|
(5, SPEED_MILES_PER_HOUR, 8.04672, SPEED_KILOMETERS_PER_HOUR),
|
||||||
# 5 in/day * 25.4 mm/in = 127 mm/day
|
# 5 in/day * 25.4 mm/in = 127 mm/day
|
||||||
(5, SPEED_INCHES_PER_DAY, 127, SPEED_MILLIMETERS_PER_DAY),
|
(
|
||||||
|
5,
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
||||||
|
127,
|
||||||
|
PRECIPITATION_INTENSITY_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, SPEED_MILLIMETERS_PER_DAY, pytest.approx(0.1968504), SPEED_INCHES_PER_DAY),
|
(
|
||||||
|
5,
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
||||||
|
pytest.approx(0.1968504),
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_DAY,
|
||||||
|
),
|
||||||
|
# 48 mm/day = 2 mm/h
|
||||||
|
(
|
||||||
|
48,
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_DAY,
|
||||||
|
pytest.approx(2),
|
||||||
|
PRECIPITATION_INTENSITY_MILLIMETERS_PER_HOUR,
|
||||||
|
),
|
||||||
# 5 in/hr * 24 hr/day = 3048 mm/day
|
# 5 in/hr * 24 hr/day = 3048 mm/day
|
||||||
(5, SPEED_INCHES_PER_HOUR, 3048, SPEED_MILLIMETERS_PER_DAY),
|
(
|
||||||
|
5,
|
||||||
|
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
||||||
|
3048,
|
||||||
|
PRECIPITATION_INTENSITY_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, SPEED_METERS_PER_SECOND, pytest.approx(708661.42), SPEED_INCHES_PER_HOUR),
|
(
|
||||||
|
5,
|
||||||
|
SPEED_METERS_PER_SECOND,
|
||||||
|
pytest.approx(708661.42),
|
||||||
|
PRECIPITATION_INTENSITY_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,
|
||||||
SPEED_INCHES_PER_HOUR,
|
PRECIPITATION_INTENSITY_INCHES_PER_HOUR,
|
||||||
pytest.approx(0.0352778),
|
pytest.approx(0.0352778),
|
||||||
SPEED_METERS_PER_SECOND,
|
SPEED_METERS_PER_SECOND,
|
||||||
),
|
),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue