diff --git a/homeassistant/const.py b/homeassistant/const.py index 3c9de2af87c..3934b810db5 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -898,6 +898,7 @@ class UnitOfSpeed(StrEnum): BEAUFORT = "Beaufort" FEET_PER_SECOND = "ft/s" INCHES_PER_SECOND = "in/s" + METERS_PER_MINUTE = "m/min" METERS_PER_SECOND = "m/s" KILOMETERS_PER_HOUR = "km/h" KNOTS = "kn" diff --git a/homeassistant/util/unit_conversion.py b/homeassistant/util/unit_conversion.py index 493de266080..f969a613a47 100644 --- a/homeassistant/util/unit_conversion.py +++ b/homeassistant/util/unit_conversion.py @@ -497,6 +497,7 @@ class SpeedConverter(BaseUnitConverter): UnitOfSpeed.INCHES_PER_SECOND: 1 / _IN_TO_M, UnitOfSpeed.KILOMETERS_PER_HOUR: _HRS_TO_SECS / _KM_TO_M, UnitOfSpeed.KNOTS: _HRS_TO_SECS / _NAUTICAL_MILE_TO_M, + UnitOfSpeed.METERS_PER_MINUTE: _MIN_TO_SEC, UnitOfSpeed.METERS_PER_SECOND: 1, UnitOfSpeed.MILLIMETERS_PER_SECOND: 1 / _MM_TO_M, UnitOfSpeed.MILES_PER_HOUR: _HRS_TO_SECS / _MILE_TO_M, @@ -511,6 +512,7 @@ class SpeedConverter(BaseUnitConverter): UnitOfSpeed.FEET_PER_SECOND, UnitOfSpeed.KILOMETERS_PER_HOUR, UnitOfSpeed.KNOTS, + UnitOfSpeed.METERS_PER_MINUTE, UnitOfSpeed.METERS_PER_SECOND, UnitOfSpeed.MILES_PER_HOUR, UnitOfSpeed.MILLIMETERS_PER_SECOND, diff --git a/homeassistant/util/unit_system.py b/homeassistant/util/unit_system.py index d86beb8b7e7..3268520e3f6 100644 --- a/homeassistant/util/unit_system.py +++ b/homeassistant/util/unit_system.py @@ -382,6 +382,7 @@ US_CUSTOMARY_SYSTEM = UnitSystem( ("pressure", UnitOfPressure.MMHG): UnitOfPressure.INHG, ("pressure", UnitOfPressure.INH2O): UnitOfPressure.PSI, # Convert non-USCS speeds, except knots, to mph + ("speed", UnitOfSpeed.METERS_PER_MINUTE): UnitOfSpeed.INCHES_PER_SECOND, ("speed", UnitOfSpeed.METERS_PER_SECOND): UnitOfSpeed.MILES_PER_HOUR, ("speed", UnitOfSpeed.MILLIMETERS_PER_SECOND): UnitOfSpeed.INCHES_PER_SECOND, ("speed", UnitOfSpeed.KILOMETERS_PER_HOUR): UnitOfSpeed.MILES_PER_HOUR, diff --git a/tests/components/sensor/test_websocket_api.py b/tests/components/sensor/test_websocket_api.py index b1dafa04c94..f0bb8f6c71f 100644 --- a/tests/components/sensor/test_websocket_api.py +++ b/tests/components/sensor/test_websocket_api.py @@ -39,6 +39,7 @@ async def test_device_class_units( "in/s", "km/h", "kn", + "m/min", "m/s", "mm/d", "mm/h", diff --git a/tests/util/test_unit_conversion.py b/tests/util/test_unit_conversion.py index 2938db4732e..d9377779b68 100644 --- a/tests/util/test_unit_conversion.py +++ b/tests/util/test_unit_conversion.py @@ -751,6 +751,20 @@ _CONVERTED_VALUE: dict[ (5, UnitOfSpeed.KILOMETERS_PER_HOUR, 3.106856, UnitOfSpeed.MILES_PER_HOUR), # 5 mi/h * 1.609 km/mi = 8.04672 km/h (5, UnitOfSpeed.MILES_PER_HOUR, 8.04672, UnitOfSpeed.KILOMETERS_PER_HOUR), + # 300 m/min / 60 s/min = 5 m/s + ( + 300, + UnitOfSpeed.METERS_PER_MINUTE, + 5, + UnitOfSpeed.METERS_PER_SECOND, + ), + # 5 m/s * 60 s/min = 300 m/min + ( + 5, + UnitOfSpeed.METERS_PER_SECOND, + 300, + UnitOfSpeed.METERS_PER_MINUTE, + ), # 5 in/day * 25.4 mm/in = 127 mm/day ( 5, diff --git a/tests/util/test_unit_system.py b/tests/util/test_unit_system.py index e8da55358a3..54e9d4080e3 100644 --- a/tests/util/test_unit_system.py +++ b/tests/util/test_unit_system.py @@ -614,6 +614,7 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = { UnitOfSpeed.BEAUFORT, UnitOfSpeed.KILOMETERS_PER_HOUR, UnitOfSpeed.KNOTS, + UnitOfSpeed.METERS_PER_MINUTE, UnitOfSpeed.METERS_PER_SECOND, UnitOfSpeed.MILLIMETERS_PER_SECOND, UnitOfVolumetricFlux.MILLIMETERS_PER_DAY,