mirror of
https://github.com/home-assistant/core.git
synced 2025-07-08 13:57:10 +00:00
Allow liter for gas sensor device class (#141518)
This commit is contained in:
parent
f3371bcf39
commit
babc183834
@ -52,6 +52,7 @@ VALID_ENERGY_UNITS_GAS = {
|
|||||||
UnitOfVolume.CENTUM_CUBIC_FEET,
|
UnitOfVolume.CENTUM_CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_FEET,
|
UnitOfVolume.CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_METERS,
|
UnitOfVolume.CUBIC_METERS,
|
||||||
|
UnitOfVolume.LITERS,
|
||||||
*VALID_ENERGY_UNITS,
|
*VALID_ENERGY_UNITS,
|
||||||
}
|
}
|
||||||
VALID_VOLUME_UNITS_WATER: set[str] = {
|
VALID_VOLUME_UNITS_WATER: set[str] = {
|
||||||
|
@ -50,6 +50,7 @@ GAS_USAGE_UNITS: dict[str, tuple[UnitOfEnergy | UnitOfVolume, ...]] = {
|
|||||||
UnitOfVolume.CENTUM_CUBIC_FEET,
|
UnitOfVolume.CENTUM_CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_FEET,
|
UnitOfVolume.CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_METERS,
|
UnitOfVolume.CUBIC_METERS,
|
||||||
|
UnitOfVolume.LITERS,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
GAS_PRICE_UNITS = tuple(
|
GAS_PRICE_UNITS = tuple(
|
||||||
|
@ -196,7 +196,7 @@ class NumberDeviceClass(StrEnum):
|
|||||||
"""Gas.
|
"""Gas.
|
||||||
|
|
||||||
Unit of measurement:
|
Unit of measurement:
|
||||||
- SI / metric: `m³`
|
- SI / metric: `L`, `m³`
|
||||||
- USCS / imperial: `ft³`, `CCF`
|
- USCS / imperial: `ft³`, `CCF`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -472,6 +472,7 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = {
|
|||||||
UnitOfVolume.CENTUM_CUBIC_FEET,
|
UnitOfVolume.CENTUM_CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_FEET,
|
UnitOfVolume.CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_METERS,
|
UnitOfVolume.CUBIC_METERS,
|
||||||
|
UnitOfVolume.LITERS,
|
||||||
},
|
},
|
||||||
NumberDeviceClass.HUMIDITY: {PERCENTAGE},
|
NumberDeviceClass.HUMIDITY: {PERCENTAGE},
|
||||||
NumberDeviceClass.ILLUMINANCE: {LIGHT_LUX},
|
NumberDeviceClass.ILLUMINANCE: {LIGHT_LUX},
|
||||||
|
@ -225,7 +225,7 @@ class SensorDeviceClass(StrEnum):
|
|||||||
"""Gas.
|
"""Gas.
|
||||||
|
|
||||||
Unit of measurement:
|
Unit of measurement:
|
||||||
- SI / metric: `m³`
|
- SI / metric: `L`, `m³`
|
||||||
- USCS / imperial: `ft³`, `CCF`
|
- USCS / imperial: `ft³`, `CCF`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -571,6 +571,7 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
|
|||||||
UnitOfVolume.CENTUM_CUBIC_FEET,
|
UnitOfVolume.CENTUM_CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_FEET,
|
UnitOfVolume.CUBIC_FEET,
|
||||||
UnitOfVolume.CUBIC_METERS,
|
UnitOfVolume.CUBIC_METERS,
|
||||||
|
UnitOfVolume.LITERS,
|
||||||
},
|
},
|
||||||
SensorDeviceClass.HUMIDITY: {PERCENTAGE},
|
SensorDeviceClass.HUMIDITY: {PERCENTAGE},
|
||||||
SensorDeviceClass.ILLUMINANCE: {LIGHT_LUX},
|
SensorDeviceClass.ILLUMINANCE: {LIGHT_LUX},
|
||||||
|
@ -355,6 +355,7 @@ US_CUSTOMARY_SYSTEM = UnitSystem(
|
|||||||
("distance", UnitOfLength.MILLIMETERS): UnitOfLength.INCHES,
|
("distance", UnitOfLength.MILLIMETERS): UnitOfLength.INCHES,
|
||||||
# Convert non-USCS volumes of gas meters
|
# Convert non-USCS volumes of gas meters
|
||||||
("gas", UnitOfVolume.CUBIC_METERS): UnitOfVolume.CUBIC_FEET,
|
("gas", UnitOfVolume.CUBIC_METERS): UnitOfVolume.CUBIC_FEET,
|
||||||
|
("gas", UnitOfVolume.LITERS): UnitOfVolume.CUBIC_FEET,
|
||||||
# Convert non-USCS precipitation
|
# Convert non-USCS precipitation
|
||||||
("precipitation", UnitOfLength.CENTIMETERS): UnitOfLength.INCHES,
|
("precipitation", UnitOfLength.CENTIMETERS): UnitOfLength.INCHES,
|
||||||
("precipitation", UnitOfLength.MILLIMETERS): UnitOfLength.INCHES,
|
("precipitation", UnitOfLength.MILLIMETERS): UnitOfLength.INCHES,
|
||||||
|
@ -994,7 +994,7 @@ async def test_cost_sensor_handle_late_price_sensor(
|
|||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"unit",
|
"unit",
|
||||||
[UnitOfVolume.CUBIC_FEET, UnitOfVolume.CUBIC_METERS],
|
[UnitOfVolume.CUBIC_FEET, UnitOfVolume.CUBIC_METERS, UnitOfVolume.LITERS],
|
||||||
)
|
)
|
||||||
async def test_cost_sensor_handle_gas(
|
async def test_cost_sensor_handle_gas(
|
||||||
setup_integration, hass: HomeAssistant, hass_storage: dict[str, Any], unit
|
setup_integration, hass: HomeAssistant, hass_storage: dict[str, Any], unit
|
||||||
|
@ -856,7 +856,7 @@ async def test_validation_gas(
|
|||||||
"affected_entities": {("sensor.gas_consumption_1", "beers")},
|
"affected_entities": {("sensor.gas_consumption_1", "beers")},
|
||||||
"translation_placeholders": {
|
"translation_placeholders": {
|
||||||
"energy_units": "GJ, kWh, MJ, MWh, Wh",
|
"energy_units": "GJ, kWh, MJ, MWh, Wh",
|
||||||
"gas_units": "CCF, ft³, m³",
|
"gas_units": "CCF, ft³, m³, L",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -885,7 +885,7 @@ async def test_validation_gas(
|
|||||||
"affected_entities": {("sensor.gas_price_2", "EUR/invalid")},
|
"affected_entities": {("sensor.gas_price_2", "EUR/invalid")},
|
||||||
"translation_placeholders": {
|
"translation_placeholders": {
|
||||||
"price_units": (
|
"price_units": (
|
||||||
"EUR/GJ, EUR/kWh, EUR/MJ, EUR/MWh, EUR/Wh, EUR/CCF, EUR/ft³, EUR/m³"
|
"EUR/GJ, EUR/kWh, EUR/MJ, EUR/MWh, EUR/Wh, EUR/CCF, EUR/ft³, EUR/m³, EUR/L"
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -434,6 +434,7 @@ def test_get_unit_system_invalid(key: str) -> None:
|
|||||||
UnitOfVolume.CUBIC_METERS,
|
UnitOfVolume.CUBIC_METERS,
|
||||||
),
|
),
|
||||||
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_FEET, UnitOfVolume.CUBIC_METERS),
|
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_FEET, UnitOfVolume.CUBIC_METERS),
|
||||||
|
(SensorDeviceClass.GAS, UnitOfVolume.LITERS, None),
|
||||||
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_METERS, None),
|
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_METERS, None),
|
||||||
(SensorDeviceClass.GAS, "very_much", None),
|
(SensorDeviceClass.GAS, "very_much", None),
|
||||||
# Test precipitation conversion
|
# Test precipitation conversion
|
||||||
@ -573,7 +574,10 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = {
|
|||||||
UnitOfLength.METERS,
|
UnitOfLength.METERS,
|
||||||
UnitOfLength.MILLIMETERS,
|
UnitOfLength.MILLIMETERS,
|
||||||
),
|
),
|
||||||
SensorDeviceClass.GAS: (UnitOfVolume.CUBIC_METERS,),
|
SensorDeviceClass.GAS: (
|
||||||
|
UnitOfVolume.CUBIC_METERS,
|
||||||
|
UnitOfVolume.LITERS,
|
||||||
|
),
|
||||||
SensorDeviceClass.PRECIPITATION: (
|
SensorDeviceClass.PRECIPITATION: (
|
||||||
UnitOfLength.CENTIMETERS,
|
UnitOfLength.CENTIMETERS,
|
||||||
UnitOfLength.MILLIMETERS,
|
UnitOfLength.MILLIMETERS,
|
||||||
@ -687,6 +691,7 @@ def test_metric_converted_units(device_class: SensorDeviceClass) -> None:
|
|||||||
# Test gas meter conversion
|
# Test gas meter conversion
|
||||||
(SensorDeviceClass.GAS, UnitOfVolume.CENTUM_CUBIC_FEET, None),
|
(SensorDeviceClass.GAS, UnitOfVolume.CENTUM_CUBIC_FEET, None),
|
||||||
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_METERS, UnitOfVolume.CUBIC_FEET),
|
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_METERS, UnitOfVolume.CUBIC_FEET),
|
||||||
|
(SensorDeviceClass.GAS, UnitOfVolume.LITERS, UnitOfVolume.CUBIC_FEET),
|
||||||
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_FEET, None),
|
(SensorDeviceClass.GAS, UnitOfVolume.CUBIC_FEET, None),
|
||||||
(SensorDeviceClass.GAS, "very_much", None),
|
(SensorDeviceClass.GAS, "very_much", None),
|
||||||
# Test precipitation conversion
|
# Test precipitation conversion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user