1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Add support for PMSx003 sensors in NAM integration (#81289)

* Add support for PMSx003

* Organize the order of tests
This commit is contained in:
Maciej Bieniek
2022-10-31 10:22:45 +01:00
committed by GitHub
parent 47a0f89ada
commit ae2419b569
3 changed files with 137 additions and 27 deletions

View File

@@ -228,6 +228,73 @@ async def test_sensor(hass):
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-uptime"
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
assert state
assert state.state == "very low"
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_caqi_level"
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi")
assert state
assert state.state == "19"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_pmsx003_caqi")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_caqi"
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_particulate_matter_10")
assert state
assert state.state == "10"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PM10
assert state.attributes.get(ATTR_STATE_CLASS) is SensorStateClass.MEASUREMENT
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
)
entry = registry.async_get(
"sensor.nettigo_air_monitor_pmsx003_particulate_matter_10"
)
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_p1"
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_particulate_matter_2_5")
assert state
assert state.state == "11"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PM25
assert state.attributes.get(ATTR_STATE_CLASS) is SensorStateClass.MEASUREMENT
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
)
entry = registry.async_get(
"sensor.nettigo_air_monitor_pmsx003_particulate_matter_2_5"
)
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_p2"
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_particulate_matter_1_0")
assert state
assert state.state == "6"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PM1
assert state.attributes.get(ATTR_STATE_CLASS) is SensorStateClass.MEASUREMENT
assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
)
entry = registry.async_get(
"sensor.nettigo_air_monitor_pmsx003_particulate_matter_1_0"
)
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_p0"
state = hass.states.get("sensor.nettigo_air_monitor_sds011_particulate_matter_10")
assert state
assert state.state == "19"
@@ -238,18 +305,20 @@ async def test_sensor(hass):
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
)
entry = registry.async_get("sensor.nettigo_air_monitor_sds011_caqi")
entry = registry.async_get(
"sensor.nettigo_air_monitor_sds011_particulate_matter_10"
)
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_caqi"
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_p1"
state = hass.states.get("sensor.nettigo_air_monitor_sds011_caqi")
assert state
assert state.state == "19"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_sds011_caqi_level")
entry = registry.async_get("sensor.nettigo_air_monitor_sds011_caqi")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_caqi_level"
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_caqi"
state = hass.states.get("sensor.nettigo_air_monitor_sds011_caqi_level")
assert state
@@ -257,11 +326,9 @@ async def test_sensor(hass):
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get(
"sensor.nettigo_air_monitor_sds011_particulate_matter_10"
)
entry = registry.async_get("sensor.nettigo_air_monitor_sds011_caqi_level")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_p1"
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_caqi_level"
state = hass.states.get("sensor.nettigo_air_monitor_sds011_particulate_matter_2_5")
assert state
@@ -279,6 +346,25 @@ async def test_sensor(hass):
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sds011_p2"
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi")
assert state
assert state.state == "54"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi"
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi_level")
assert state
assert state.state == "medium"
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi_level")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi_level"
state = hass.states.get("sensor.nettigo_air_monitor_sps30_particulate_matter_1_0")
assert state
assert state.state == "31"
@@ -289,25 +375,6 @@ async def test_sensor(hass):
== CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
)
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi"
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi")
assert state
assert state.state == "54"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi_level")
assert entry
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi_level"
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi_level")
assert state
assert state.state == "medium"
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
entry = registry.async_get(
"sensor.nettigo_air_monitor_sps30_particulate_matter_1_0"
)