mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Support knots and ft/s in weather wind speed (#74175)
This commit is contained in:
parent
e6d115e765
commit
d3f4108a91
@ -22,7 +22,9 @@ from homeassistant.const import (
|
||||
PRESSURE_INHG,
|
||||
PRESSURE_MBAR,
|
||||
PRESSURE_MMHG,
|
||||
SPEED_FEET_PER_SECOND,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_KNOTS,
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
TEMP_CELSIUS,
|
||||
@ -118,8 +120,10 @@ VALID_UNITS_VISIBILITY: tuple[str, ...] = (
|
||||
LENGTH_MILES,
|
||||
)
|
||||
VALID_UNITS_WIND_SPEED: tuple[str, ...] = (
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_FEET_PER_SECOND,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_KNOTS,
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
)
|
||||
|
||||
|
@ -608,10 +608,12 @@ CONCENTRATION_PARTS_PER_BILLION: Final = "ppb"
|
||||
|
||||
# Speed units
|
||||
SPEED_MILLIMETERS_PER_DAY: Final = "mm/d"
|
||||
SPEED_FEET_PER_SECOND: Final = "ft/s"
|
||||
SPEED_INCHES_PER_DAY: Final = "in/d"
|
||||
SPEED_METERS_PER_SECOND: Final = "m/s"
|
||||
SPEED_INCHES_PER_HOUR: Final = "in/h"
|
||||
SPEED_KILOMETERS_PER_HOUR: Final = "km/h"
|
||||
SPEED_KNOTS: Final = "kn"
|
||||
SPEED_MILES_PER_HOUR: Final = "mph"
|
||||
|
||||
# Signal_strength units
|
||||
|
@ -5,9 +5,11 @@ from numbers import Number
|
||||
|
||||
from homeassistant.const import (
|
||||
SPEED,
|
||||
SPEED_FEET_PER_SECOND,
|
||||
SPEED_INCHES_PER_DAY,
|
||||
SPEED_INCHES_PER_HOUR,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_KNOTS,
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
SPEED_MILLIMETERS_PER_DAY,
|
||||
@ -15,24 +17,30 @@ from homeassistant.const import (
|
||||
)
|
||||
|
||||
VALID_UNITS: tuple[str, ...] = (
|
||||
SPEED_FEET_PER_SECOND,
|
||||
SPEED_INCHES_PER_DAY,
|
||||
SPEED_INCHES_PER_HOUR,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_KNOTS,
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
SPEED_MILLIMETERS_PER_DAY,
|
||||
)
|
||||
|
||||
FOOT_TO_M = 0.3048
|
||||
HRS_TO_SECS = 60 * 60 # 1 hr = 3600 seconds
|
||||
IN_TO_M = 0.0254
|
||||
KM_TO_M = 1000 # 1 km = 1000 m
|
||||
MILE_TO_M = 1609.344
|
||||
NAUTICAL_MILE_TO_M = 1852 # 1 nautical mile = 1852 m
|
||||
|
||||
# Units in terms of m/s
|
||||
UNIT_CONVERSION: dict[str, float] = {
|
||||
SPEED_FEET_PER_SECOND: 1 / FOOT_TO_M,
|
||||
SPEED_INCHES_PER_DAY: (24 * HRS_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_KNOTS: HRS_TO_SECS / NAUTICAL_MILE_TO_M,
|
||||
SPEED_METERS_PER_SECOND: 1,
|
||||
SPEED_MILES_PER_HOUR: HRS_TO_SECS / MILE_TO_M,
|
||||
SPEED_MILLIMETERS_PER_DAY: (24 * HRS_TO_SECS) * 1000,
|
||||
|
@ -2,9 +2,11 @@
|
||||
import pytest
|
||||
|
||||
from homeassistant.const import (
|
||||
SPEED_FEET_PER_SECOND,
|
||||
SPEED_INCHES_PER_DAY,
|
||||
SPEED_INCHES_PER_HOUR,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_KNOTS,
|
||||
SPEED_METERS_PER_SECOND,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
SPEED_MILLIMETERS_PER_DAY,
|
||||
@ -61,6 +63,10 @@ def test_convert_nonnumeric_value():
|
||||
(5, SPEED_METERS_PER_SECOND, 708661, SPEED_INCHES_PER_HOUR),
|
||||
# 5000 in/h / 39.3701 in/m / 3600 s/h = 0.03528 m/s
|
||||
(5000, SPEED_INCHES_PER_HOUR, 0.03528, SPEED_METERS_PER_SECOND),
|
||||
# 5 kt * 1852 m/nmi / 3600 s/h = 2.5722 m/s
|
||||
(5, SPEED_KNOTS, 2.5722, SPEED_METERS_PER_SECOND),
|
||||
# 5 ft/s * 0.3048 m/ft = 1.524 m/s
|
||||
(5, SPEED_FEET_PER_SECOND, 1.524, SPEED_METERS_PER_SECOND),
|
||||
],
|
||||
)
|
||||
def test_convert_different_units(from_value, from_unit, expected, to_unit):
|
||||
|
Loading…
x
Reference in New Issue
Block a user