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:
Tim Rightnour 2021-11-10 01:44:05 -07:00 committed by GitHub
parent eec84ad71e
commit 93395f9b68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 4 deletions

View file

@ -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"

View file

@ -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,
)

View file

@ -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"

View file

@ -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,

View file

@ -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,

View file

@ -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
)