Add support for PRESSURE_CBAR (centibars) (#58762)
* Add support for PRESSURE_CBAR (centibars). This is the standard UOM for tensiometers. While the data could be converted into something like MBAR, and displayed like that, the correct UOM for this type of sensor is CBAR. Displaying it as MBAR would be the same as displaying air pressure as feet of Hg, while technically correct, it's hard to understand when reading. Adding support for this UOM will fix errors in the UI(statistics) about the unit not matching a unit of the device_class. * Add tests for PRESSURE_CBAR
This commit is contained in:
parent
eec84ad71e
commit
93395f9b68
6 changed files with 17 additions and 4 deletions
|
@ -43,8 +43,6 @@ MANUFACTURER_MAXIM = "Maxim Integrated"
|
|||
MANUFACTURER_HOBBYBOARDS = "Hobby Boards"
|
||||
MANUFACTURER_EDS = "Embedded Data Systems"
|
||||
|
||||
PRESSURE_CBAR = "cbar"
|
||||
|
||||
READ_MODE_BOOL = "bool"
|
||||
READ_MODE_FLOAT = "float"
|
||||
READ_MODE_INT = "int"
|
||||
|
|
|
@ -34,6 +34,7 @@ from homeassistant.const import (
|
|||
ELECTRIC_POTENTIAL_VOLT,
|
||||
LIGHT_LUX,
|
||||
PERCENTAGE,
|
||||
PRESSURE_CBAR,
|
||||
PRESSURE_MBAR,
|
||||
TEMP_CELSIUS,
|
||||
)
|
||||
|
@ -47,7 +48,6 @@ from .const import (
|
|||
CONF_TYPE_OWSERVER,
|
||||
CONF_TYPE_SYSBUS,
|
||||
DOMAIN,
|
||||
PRESSURE_CBAR,
|
||||
READ_MODE_FLOAT,
|
||||
READ_MODE_INT,
|
||||
)
|
||||
|
|
|
@ -479,6 +479,7 @@ PRESSURE_PA: Final = "Pa"
|
|||
PRESSURE_HPA: Final = "hPa"
|
||||
PRESSURE_KPA: Final = "kPa"
|
||||
PRESSURE_BAR: Final = "bar"
|
||||
PRESSURE_CBAR: Final = "cbar"
|
||||
PRESSURE_MBAR: Final = "mbar"
|
||||
PRESSURE_INHG: Final = "inHg"
|
||||
PRESSURE_PSI: Final = "psi"
|
||||
|
|
|
@ -6,6 +6,7 @@ from numbers import Number
|
|||
from homeassistant.const import (
|
||||
PRESSURE,
|
||||
PRESSURE_BAR,
|
||||
PRESSURE_CBAR,
|
||||
PRESSURE_HPA,
|
||||
PRESSURE_INHG,
|
||||
PRESSURE_KPA,
|
||||
|
@ -20,6 +21,7 @@ VALID_UNITS: tuple[str, ...] = (
|
|||
PRESSURE_HPA,
|
||||
PRESSURE_KPA,
|
||||
PRESSURE_BAR,
|
||||
PRESSURE_CBAR,
|
||||
PRESSURE_MBAR,
|
||||
PRESSURE_INHG,
|
||||
PRESSURE_PSI,
|
||||
|
@ -30,6 +32,7 @@ UNIT_CONVERSION: dict[str, float] = {
|
|||
PRESSURE_HPA: 1 / 100,
|
||||
PRESSURE_KPA: 1 / 1000,
|
||||
PRESSURE_BAR: 1 / 100000,
|
||||
PRESSURE_CBAR: 1 / 1000,
|
||||
PRESSURE_MBAR: 1 / 100,
|
||||
PRESSURE_INHG: 1 / 3386.389,
|
||||
PRESSURE_PSI: 1 / 6894.757,
|
||||
|
|
|
@ -8,7 +8,6 @@ from homeassistant.components.onewire.const import (
|
|||
MANUFACTURER_EDS,
|
||||
MANUFACTURER_HOBBYBOARDS,
|
||||
MANUFACTURER_MAXIM,
|
||||
PRESSURE_CBAR,
|
||||
)
|
||||
from homeassistant.components.sensor import (
|
||||
ATTR_STATE_CLASS,
|
||||
|
@ -37,6 +36,7 @@ from homeassistant.const import (
|
|||
ELECTRIC_POTENTIAL_VOLT,
|
||||
LIGHT_LUX,
|
||||
PERCENTAGE,
|
||||
PRESSURE_CBAR,
|
||||
PRESSURE_MBAR,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import pytest
|
||||
|
||||
from homeassistant.const import (
|
||||
PRESSURE_CBAR,
|
||||
PRESSURE_HPA,
|
||||
PRESSURE_INHG,
|
||||
PRESSURE_KPA,
|
||||
|
@ -22,6 +23,7 @@ def test_convert_same_unit():
|
|||
assert pressure_util.convert(4, PRESSURE_MBAR, PRESSURE_MBAR) == 4
|
||||
assert pressure_util.convert(5, PRESSURE_INHG, PRESSURE_INHG) == 5
|
||||
assert pressure_util.convert(6, PRESSURE_KPA, PRESSURE_KPA) == 6
|
||||
assert pressure_util.convert(7, PRESSURE_CBAR, PRESSURE_CBAR) == 7
|
||||
|
||||
|
||||
def test_convert_invalid_unit():
|
||||
|
@ -57,6 +59,9 @@ def test_convert_from_hpascals():
|
|||
assert pressure_util.convert(
|
||||
hpascals, PRESSURE_HPA, PRESSURE_MBAR
|
||||
) == pytest.approx(1000)
|
||||
assert pressure_util.convert(
|
||||
hpascals, PRESSURE_HPA, PRESSURE_CBAR
|
||||
) == pytest.approx(100)
|
||||
|
||||
|
||||
def test_convert_from_kpascals():
|
||||
|
@ -77,6 +82,9 @@ def test_convert_from_kpascals():
|
|||
assert pressure_util.convert(
|
||||
kpascals, PRESSURE_KPA, PRESSURE_MBAR
|
||||
) == pytest.approx(1000)
|
||||
assert pressure_util.convert(
|
||||
kpascals, PRESSURE_KPA, PRESSURE_CBAR
|
||||
) == pytest.approx(100)
|
||||
|
||||
|
||||
def test_convert_from_inhg():
|
||||
|
@ -97,3 +105,6 @@ def test_convert_from_inhg():
|
|||
assert pressure_util.convert(inhg, PRESSURE_INHG, PRESSURE_MBAR) == pytest.approx(
|
||||
1015.9167
|
||||
)
|
||||
assert pressure_util.convert(inhg, PRESSURE_INHG, PRESSURE_CBAR) == pytest.approx(
|
||||
101.59167
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue