From 56abe25c1facf815fefaae2cfe14e421365d2ce4 Mon Sep 17 00:00:00 2001 From: conflipper <68352908+conflipper@users.noreply.github.com> Date: Sat, 27 Mar 2021 10:01:33 -0700 Subject: [PATCH] Add Ambient Station PM25 indoor sensor (#47970) --- .../components/ambient_station/__init__.py | 188 +++++++++++------- .../ambient_station/binary_sensor.py | 6 + 2 files changed, 117 insertions(+), 77 deletions(-) diff --git a/homeassistant/components/ambient_station/__init__.py b/homeassistant/components/ambient_station/__init__.py index bee5ab33db7..9d3359ca981 100644 --- a/homeassistant/components/ambient_station/__init__.py +++ b/homeassistant/components/ambient_station/__init__.py @@ -18,7 +18,13 @@ from homeassistant.const import ( CONCENTRATION_PARTS_PER_MILLION, CONF_API_KEY, DEGREE, + DEVICE_CLASS_BATTERY, DEVICE_CLASS_CO2, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_ILLUMINANCE, + DEVICE_CLASS_PRESSURE, + DEVICE_CLASS_TEMPERATURE, + DEVICE_CLASS_TIMESTAMP, EVENT_HOMEASSISTANT_STOP, IRRADIATION_WATTS_PER_SQUARE_METER, LIGHT_LUX, @@ -65,6 +71,7 @@ TYPE_BATT6 = "batt6" TYPE_BATT7 = "batt7" TYPE_BATT8 = "batt8" TYPE_BATT9 = "batt9" +TYPE_BATT_CO2 = "batt_co2" TYPE_BATTOUT = "battout" TYPE_CO2 = "co2" TYPE_DAILYRAININ = "dailyrainin" @@ -87,6 +94,12 @@ TYPE_HUMIDITYIN = "humidityin" TYPE_LASTRAIN = "lastRain" TYPE_MAXDAILYGUST = "maxdailygust" TYPE_MONTHLYRAININ = "monthlyrainin" +TYPE_PM25 = "pm25" +TYPE_PM25_24H = "pm25_24h" +TYPE_PM25_BATT = "batt_25" +TYPE_PM25_IN = "pm25_in" +TYPE_PM25_IN_24H = "pm25_in_24h" +TYPE_PM25IN_BATT = "batt_25in" TYPE_RELAY1 = "relay1" TYPE_RELAY10 = "relay10" TYPE_RELAY2 = "relay2" @@ -133,8 +146,6 @@ TYPE_TEMPF = "tempf" TYPE_TEMPINF = "tempinf" TYPE_TOTALRAININ = "totalrainin" TYPE_UV = "uv" -TYPE_PM25 = "pm25" -TYPE_PM25_24H = "pm25_24h" TYPE_WEEKLYRAININ = "weeklyrainin" TYPE_WINDDIR = "winddir" TYPE_WINDDIR_AVG10M = "winddir_avg10m" @@ -147,40 +158,67 @@ TYPE_WINDSPEEDMPH = "windspeedmph" TYPE_YEARLYRAININ = "yearlyrainin" SENSOR_TYPES = { TYPE_24HOURRAININ: ("24 Hr Rain", "in", SENSOR, None), - TYPE_BAROMABSIN: ("Abs Pressure", PRESSURE_INHG, SENSOR, "pressure"), - TYPE_BAROMRELIN: ("Rel Pressure", PRESSURE_INHG, SENSOR, "pressure"), - TYPE_BATT10: ("Battery 10", None, BINARY_SENSOR, "battery"), - TYPE_BATT1: ("Battery 1", None, BINARY_SENSOR, "battery"), - TYPE_BATT2: ("Battery 2", None, BINARY_SENSOR, "battery"), - TYPE_BATT3: ("Battery 3", None, BINARY_SENSOR, "battery"), - TYPE_BATT4: ("Battery 4", None, BINARY_SENSOR, "battery"), - TYPE_BATT5: ("Battery 5", None, BINARY_SENSOR, "battery"), - TYPE_BATT6: ("Battery 6", None, BINARY_SENSOR, "battery"), - TYPE_BATT7: ("Battery 7", None, BINARY_SENSOR, "battery"), - TYPE_BATT8: ("Battery 8", None, BINARY_SENSOR, "battery"), - TYPE_BATT9: ("Battery 9", None, BINARY_SENSOR, "battery"), - TYPE_BATTOUT: ("Battery", None, BINARY_SENSOR, "battery"), + TYPE_BAROMABSIN: ("Abs Pressure", PRESSURE_INHG, SENSOR, DEVICE_CLASS_PRESSURE), + TYPE_BAROMRELIN: ("Rel Pressure", PRESSURE_INHG, SENSOR, DEVICE_CLASS_PRESSURE), + TYPE_BATT10: ("Battery 10", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT1: ("Battery 1", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT2: ("Battery 2", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT3: ("Battery 3", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT4: ("Battery 4", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT5: ("Battery 5", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT6: ("Battery 6", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT7: ("Battery 7", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT8: ("Battery 8", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT9: ("Battery 9", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATTOUT: ("Battery", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_BATT_CO2: ("CO2 Battery", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), TYPE_CO2: ("co2", CONCENTRATION_PARTS_PER_MILLION, SENSOR, DEVICE_CLASS_CO2), TYPE_DAILYRAININ: ("Daily Rain", "in", SENSOR, None), - TYPE_DEWPOINT: ("Dew Point", TEMP_FAHRENHEIT, SENSOR, "temperature"), + TYPE_DEWPOINT: ("Dew Point", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), TYPE_EVENTRAININ: ("Event Rain", "in", SENSOR, None), - TYPE_FEELSLIKE: ("Feels Like", TEMP_FAHRENHEIT, SENSOR, "temperature"), + TYPE_FEELSLIKE: ("Feels Like", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), TYPE_HOURLYRAININ: ("Hourly Rain Rate", "in/hr", SENSOR, None), - TYPE_HUMIDITY10: ("Humidity 10", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY1: ("Humidity 1", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY2: ("Humidity 2", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY3: ("Humidity 3", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY4: ("Humidity 4", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY5: ("Humidity 5", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY6: ("Humidity 6", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY7: ("Humidity 7", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY8: ("Humidity 8", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY9: ("Humidity 9", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITY: ("Humidity", PERCENTAGE, SENSOR, "humidity"), - TYPE_HUMIDITYIN: ("Humidity In", PERCENTAGE, SENSOR, "humidity"), - TYPE_LASTRAIN: ("Last Rain", None, SENSOR, "timestamp"), + TYPE_HUMIDITY10: ("Humidity 10", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY1: ("Humidity 1", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY2: ("Humidity 2", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY3: ("Humidity 3", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY4: ("Humidity 4", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY5: ("Humidity 5", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY6: ("Humidity 6", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY7: ("Humidity 7", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY8: ("Humidity 8", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY9: ("Humidity 9", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITY: ("Humidity", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_HUMIDITYIN: ("Humidity In", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_LASTRAIN: ("Last Rain", None, SENSOR, DEVICE_CLASS_TIMESTAMP), TYPE_MAXDAILYGUST: ("Max Gust", SPEED_MILES_PER_HOUR, SENSOR, None), TYPE_MONTHLYRAININ: ("Monthly Rain", "in", SENSOR, None), + TYPE_PM25_24H: ( + "PM25 24h Avg", + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + SENSOR, + None, + ), + TYPE_PM25_BATT: ("PM25 Battery", None, BINARY_SENSOR, DEVICE_CLASS_BATTERY), + TYPE_PM25_IN: ( + "PM25 Indoor", + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + SENSOR, + None, + ), + TYPE_PM25_IN_24H: ( + "PM25 Indoor 24h Avg", + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + SENSOR, + None, + ), + TYPE_PM25: ("PM25", CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, SENSOR, None), + TYPE_PM25IN_BATT: ( + "PM25 Indoor Battery", + None, + BINARY_SENSOR, + DEVICE_CLASS_BATTERY, + ), TYPE_RELAY10: ("Relay 10", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), TYPE_RELAY1: ("Relay 1", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), TYPE_RELAY2: ("Relay 2", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), @@ -191,54 +229,57 @@ SENSOR_TYPES = { TYPE_RELAY7: ("Relay 7", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), TYPE_RELAY8: ("Relay 8", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), TYPE_RELAY9: ("Relay 9", None, BINARY_SENSOR, DEVICE_CLASS_CONNECTIVITY), - TYPE_SOILHUM10: ("Soil Humidity 10", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM1: ("Soil Humidity 1", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM2: ("Soil Humidity 2", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM3: ("Soil Humidity 3", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM4: ("Soil Humidity 4", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM5: ("Soil Humidity 5", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM6: ("Soil Humidity 6", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM7: ("Soil Humidity 7", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM8: ("Soil Humidity 8", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILHUM9: ("Soil Humidity 9", PERCENTAGE, SENSOR, "humidity"), - TYPE_SOILTEMP10F: ("Soil Temp 10", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP1F: ("Soil Temp 1", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP2F: ("Soil Temp 2", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP3F: ("Soil Temp 3", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP4F: ("Soil Temp 4", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP5F: ("Soil Temp 5", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP6F: ("Soil Temp 6", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP7F: ("Soil Temp 7", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP8F: ("Soil Temp 8", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_SOILTEMP9F: ("Soil Temp 9", TEMP_FAHRENHEIT, SENSOR, "temperature"), + TYPE_SOILHUM10: ("Soil Humidity 10", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM1: ("Soil Humidity 1", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM2: ("Soil Humidity 2", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM3: ("Soil Humidity 3", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM4: ("Soil Humidity 4", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM5: ("Soil Humidity 5", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM6: ("Soil Humidity 6", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM7: ("Soil Humidity 7", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM8: ("Soil Humidity 8", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILHUM9: ("Soil Humidity 9", PERCENTAGE, SENSOR, DEVICE_CLASS_HUMIDITY), + TYPE_SOILTEMP10F: ( + "Soil Temp 10", + TEMP_FAHRENHEIT, + SENSOR, + DEVICE_CLASS_TEMPERATURE, + ), + TYPE_SOILTEMP1F: ("Soil Temp 1", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP2F: ("Soil Temp 2", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP3F: ("Soil Temp 3", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP4F: ("Soil Temp 4", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP5F: ("Soil Temp 5", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP6F: ("Soil Temp 6", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP7F: ("Soil Temp 7", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP8F: ("Soil Temp 8", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_SOILTEMP9F: ("Soil Temp 9", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), TYPE_SOLARRADIATION: ( "Solar Rad", IRRADIATION_WATTS_PER_SQUARE_METER, SENSOR, None, ), - TYPE_SOLARRADIATION_LX: ("Solar Rad (lx)", LIGHT_LUX, SENSOR, "illuminance"), - TYPE_TEMP10F: ("Temp 10", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP1F: ("Temp 1", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP2F: ("Temp 2", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP3F: ("Temp 3", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP4F: ("Temp 4", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP5F: ("Temp 5", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP6F: ("Temp 6", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP7F: ("Temp 7", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP8F: ("Temp 8", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMP9F: ("Temp 9", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMPF: ("Temp", TEMP_FAHRENHEIT, SENSOR, "temperature"), - TYPE_TEMPINF: ("Inside Temp", TEMP_FAHRENHEIT, SENSOR, "temperature"), + TYPE_SOLARRADIATION_LX: ( + "Solar Rad (lx)", + LIGHT_LUX, + SENSOR, + DEVICE_CLASS_ILLUMINANCE, + ), + TYPE_TEMP10F: ("Temp 10", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP1F: ("Temp 1", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP2F: ("Temp 2", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP3F: ("Temp 3", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP4F: ("Temp 4", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP5F: ("Temp 5", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP6F: ("Temp 6", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP7F: ("Temp 7", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP8F: ("Temp 8", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMP9F: ("Temp 9", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMPF: ("Temp", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), + TYPE_TEMPINF: ("Inside Temp", TEMP_FAHRENHEIT, SENSOR, DEVICE_CLASS_TEMPERATURE), TYPE_TOTALRAININ: ("Lifetime Rain", "in", SENSOR, None), TYPE_UV: ("uv", "Index", SENSOR, None), - TYPE_PM25: ("PM25", CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, SENSOR, None), - TYPE_PM25_24H: ( - "PM25 24h Avg", - CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - SENSOR, - None, - ), TYPE_WEEKLYRAININ: ("Weekly Rain", "in", SENSOR, None), TYPE_WINDDIR: ("Wind Dir", DEGREE, SENSOR, None), TYPE_WINDDIR_AVG10M: ("Wind Dir Avg 10m", DEGREE, SENSOR, None), @@ -271,7 +312,6 @@ async def async_setup(hass, config): if DOMAIN not in config: return True - conf = config[DOMAIN] # Store config for use during entry setup: @@ -294,7 +334,6 @@ async def async_setup_entry(hass, config_entry): hass.config_entries.async_update_entry( config_entry, unique_id=config_entry.data[CONF_APP_KEY] ) - session = aiohttp_client.async_get_clientsession(hass) try: @@ -352,7 +391,6 @@ async def async_migrate_entry(hass, config_entry): version = config_entry.version = 2 hass.config_entries.async_update_entry(config_entry) - LOGGER.info("Migration to version %s successful", version) return True @@ -410,7 +448,6 @@ class AmbientStation: for station in data["devices"]: if station["macAddress"] in self.stations: continue - LOGGER.debug("New station subscription: %s", data) # Only create entities based on the data coming through the socket. @@ -421,7 +458,6 @@ class AmbientStation: ] if TYPE_SOLARRADIATION in monitored_conditions: monitored_conditions.append(TYPE_SOLARRADIATION_LX) - self.stations[station["macAddress"]] = { ATTR_LAST_DATA: station["lastData"], ATTR_LOCATION: station.get("info", {}).get("location"), @@ -430,7 +466,6 @@ class AmbientStation: "name", station["macAddress"] ), } - # If the websocket disconnects and reconnects, the on_subscribed # handler will get called again; in that case, we don't want to # attempt forward setup of the config entry (because it will have @@ -443,7 +478,6 @@ class AmbientStation: ) ) self._entry_setup_complete = True - self._ws_reconnect_delay = DEFAULT_SOCKET_MIN_RETRY self.client.websocket.on_connect(on_connect) diff --git a/homeassistant/components/ambient_station/binary_sensor.py b/homeassistant/components/ambient_station/binary_sensor.py index 8fdeb862e2e..c2e5ad8b4f4 100644 --- a/homeassistant/components/ambient_station/binary_sensor.py +++ b/homeassistant/components/ambient_station/binary_sensor.py @@ -18,7 +18,10 @@ from . import ( TYPE_BATT8, TYPE_BATT9, TYPE_BATT10, + TYPE_BATT_CO2, TYPE_BATTOUT, + TYPE_PM25_BATT, + TYPE_PM25IN_BATT, AmbientWeatherEntity, ) from .const import ATTR_LAST_DATA, ATTR_MONITORED_CONDITIONS, DATA_CLIENT, DOMAIN @@ -64,7 +67,10 @@ class AmbientWeatherBinarySensor(AmbientWeatherEntity, BinarySensorEntity): TYPE_BATT7, TYPE_BATT8, TYPE_BATT9, + TYPE_BATT_CO2, TYPE_BATTOUT, + TYPE_PM25_BATT, + TYPE_PM25IN_BATT, ): return self._state == 0