Use enum sensor device class in Nettigo Air Monitor (#83314)
This commit is contained in:
parent
1ca9824191
commit
1f7a7d5cb5
5 changed files with 63 additions and 17 deletions
|
@ -150,7 +150,9 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
key=ATTR_PMSX003_CAQI_LEVEL,
|
key=ATTR_PMSX003_CAQI_LEVEL,
|
||||||
name="PMSx003 CAQI level",
|
name="PMSx003 CAQI level",
|
||||||
icon="mdi:air-filter",
|
icon="mdi:air-filter",
|
||||||
device_class="nam__caqi_level",
|
device_class=SensorDeviceClass.ENUM,
|
||||||
|
options=["very low", "low", "medium", "high", "very high"],
|
||||||
|
translation_key="caqi_level",
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_PMSX003_P0,
|
key=ATTR_PMSX003_P0,
|
||||||
|
@ -182,7 +184,9 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
key=ATTR_SDS011_CAQI_LEVEL,
|
key=ATTR_SDS011_CAQI_LEVEL,
|
||||||
name="SDS011 CAQI level",
|
name="SDS011 CAQI level",
|
||||||
icon="mdi:air-filter",
|
icon="mdi:air-filter",
|
||||||
device_class="nam__caqi_level",
|
device_class=SensorDeviceClass.ENUM,
|
||||||
|
options=["very low", "low", "medium", "high", "very high"],
|
||||||
|
translation_key="caqi_level",
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_SDS011_P1,
|
key=ATTR_SDS011_P1,
|
||||||
|
@ -221,7 +225,9 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
key=ATTR_SPS30_CAQI_LEVEL,
|
key=ATTR_SPS30_CAQI_LEVEL,
|
||||||
name="SPS30 CAQI level",
|
name="SPS30 CAQI level",
|
||||||
icon="mdi:air-filter",
|
icon="mdi:air-filter",
|
||||||
device_class="nam__caqi_level",
|
device_class=SensorDeviceClass.ENUM,
|
||||||
|
options=["very low", "low", "medium", "high", "very high"],
|
||||||
|
translation_key="caqi_level",
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
SensorEntityDescription(
|
||||||
key=ATTR_SPS30_P0,
|
key=ATTR_SPS30_P0,
|
||||||
|
|
|
@ -37,5 +37,18 @@
|
||||||
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]",
|
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]",
|
||||||
"reauth_unsuccessful": "Re-authentication was unsuccessful, please remove the integration and set it up again."
|
"reauth_unsuccessful": "Re-authentication was unsuccessful, please remove the integration and set it up again."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"entity": {
|
||||||
|
"sensor": {
|
||||||
|
"caqi_level": {
|
||||||
|
"state": {
|
||||||
|
"very low": "Very low",
|
||||||
|
"low": "Low",
|
||||||
|
"medium": "Medium",
|
||||||
|
"high": "High",
|
||||||
|
"very high": "Very high"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"state": {
|
|
||||||
"nam__caqi_level": {
|
|
||||||
"very low": "Very low",
|
|
||||||
"low": "Low",
|
|
||||||
"medium": "Medium",
|
|
||||||
"high": "High",
|
|
||||||
"very high": "Very high"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,5 +37,18 @@
|
||||||
"description": "Set up Nettigo Air Monitor integration."
|
"description": "Set up Nettigo Air Monitor integration."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"entity": {
|
||||||
|
"sensor": {
|
||||||
|
"caqi_level": {
|
||||||
|
"state": {
|
||||||
|
"high": "High",
|
||||||
|
"low": "Low",
|
||||||
|
"medium": "Medium",
|
||||||
|
"very high": "Very high",
|
||||||
|
"very low": "Very low"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ from nettigo_air_monitor import ApiError
|
||||||
|
|
||||||
from homeassistant.components.nam.const import DOMAIN
|
from homeassistant.components.nam.const import DOMAIN
|
||||||
from homeassistant.components.sensor import (
|
from homeassistant.components.sensor import (
|
||||||
|
ATTR_OPTIONS,
|
||||||
ATTR_STATE_CLASS,
|
ATTR_STATE_CLASS,
|
||||||
DOMAIN as SENSOR_DOMAIN,
|
DOMAIN as SENSOR_DOMAIN,
|
||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
|
@ -231,12 +232,20 @@ async def test_sensor(hass):
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
|
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "very low"
|
assert state.state == "very low"
|
||||||
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
|
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.ENUM
|
||||||
|
assert state.attributes.get(ATTR_OPTIONS) == [
|
||||||
|
"very low",
|
||||||
|
"low",
|
||||||
|
"medium",
|
||||||
|
"high",
|
||||||
|
"very high",
|
||||||
|
]
|
||||||
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
|
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
|
||||||
|
|
||||||
entry = registry.async_get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
|
entry = registry.async_get("sensor.nettigo_air_monitor_pmsx003_caqi_level")
|
||||||
assert entry
|
assert entry
|
||||||
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_caqi_level"
|
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-pms_caqi_level"
|
||||||
|
assert entry.translation_key == "caqi_level"
|
||||||
|
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi")
|
state = hass.states.get("sensor.nettigo_air_monitor_pmsx003_caqi")
|
||||||
assert state
|
assert state
|
||||||
|
@ -323,12 +332,20 @@ async def test_sensor(hass):
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_sds011_caqi_level")
|
state = hass.states.get("sensor.nettigo_air_monitor_sds011_caqi_level")
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "very low"
|
assert state.state == "very low"
|
||||||
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
|
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.ENUM
|
||||||
|
assert state.attributes.get(ATTR_OPTIONS) == [
|
||||||
|
"very low",
|
||||||
|
"low",
|
||||||
|
"medium",
|
||||||
|
"high",
|
||||||
|
"very high",
|
||||||
|
]
|
||||||
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
|
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_level")
|
||||||
assert entry
|
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_level"
|
||||||
|
assert entry.translation_key == "caqi_level"
|
||||||
|
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_sds011_particulate_matter_2_5")
|
state = hass.states.get("sensor.nettigo_air_monitor_sds011_particulate_matter_2_5")
|
||||||
assert state
|
assert state
|
||||||
|
@ -358,12 +375,20 @@ async def test_sensor(hass):
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi_level")
|
state = hass.states.get("sensor.nettigo_air_monitor_sps30_caqi_level")
|
||||||
assert state
|
assert state
|
||||||
assert state.state == "medium"
|
assert state.state == "medium"
|
||||||
assert state.attributes.get(ATTR_DEVICE_CLASS) == "nam__caqi_level"
|
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.ENUM
|
||||||
|
assert state.attributes.get(ATTR_OPTIONS) == [
|
||||||
|
"very low",
|
||||||
|
"low",
|
||||||
|
"medium",
|
||||||
|
"high",
|
||||||
|
"very high",
|
||||||
|
]
|
||||||
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
|
assert state.attributes.get(ATTR_ICON) == "mdi:air-filter"
|
||||||
|
|
||||||
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi_level")
|
entry = registry.async_get("sensor.nettigo_air_monitor_sps30_caqi_level")
|
||||||
assert entry
|
assert entry
|
||||||
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi_level"
|
assert entry.unique_id == "aa:bb:cc:dd:ee:ff-sps30_caqi_level"
|
||||||
|
assert entry.translation_key == "caqi_level"
|
||||||
|
|
||||||
state = hass.states.get("sensor.nettigo_air_monitor_sps30_particulate_matter_1_0")
|
state = hass.states.get("sensor.nettigo_air_monitor_sps30_particulate_matter_1_0")
|
||||||
assert state
|
assert state
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue