From e1e85caf189193cf048f401ecca8453cb13afbd8 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Mon, 11 Jul 2022 17:26:07 +0200 Subject: [PATCH] Migrate Nettigo Air Monitor to new entity naming style (#74993) --- homeassistant/components/nam/__init__.py | 3 +- homeassistant/components/nam/button.py | 6 +- homeassistant/components/nam/const.py | 175 -------------------- homeassistant/components/nam/sensor.py | 199 ++++++++++++++++++++++- 4 files changed, 203 insertions(+), 180 deletions(-) diff --git a/homeassistant/components/nam/__init__.py b/homeassistant/components/nam/__init__.py index 302c0af76d4..25615db6eed 100644 --- a/homeassistant/components/nam/__init__.py +++ b/homeassistant/components/nam/__init__.py @@ -30,7 +30,6 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda from .const import ( ATTR_SDS011, ATTR_SPS30, - DEFAULT_NAME, DEFAULT_UPDATE_INTERVAL, DOMAIN, MANUFACTURER, @@ -130,7 +129,7 @@ class NAMDataUpdateCoordinator(DataUpdateCoordinator): """Return the device info.""" return DeviceInfo( connections={(CONNECTION_NETWORK_MAC, cast(str, self._unique_id))}, - name=DEFAULT_NAME, + name="Nettigo Air Monitor", sw_version=self.nam.software_version, manufacturer=MANUFACTURER, configuration_url=f"http://{self.nam.host}/", diff --git a/homeassistant/components/nam/button.py b/homeassistant/components/nam/button.py index db5474ec925..6725ef3292d 100644 --- a/homeassistant/components/nam/button.py +++ b/homeassistant/components/nam/button.py @@ -15,7 +15,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import NAMDataUpdateCoordinator -from .const import DEFAULT_NAME, DOMAIN +from .const import DOMAIN PARALLEL_UPDATES = 1 @@ -23,7 +23,7 @@ _LOGGER = logging.getLogger(__name__) RESTART_BUTTON: ButtonEntityDescription = ButtonEntityDescription( key="restart", - name=f"{DEFAULT_NAME} Restart", + name="Restart", device_class=ButtonDeviceClass.RESTART, entity_category=EntityCategory.CONFIG, ) @@ -44,6 +44,8 @@ async def async_setup_entry( class NAMButton(CoordinatorEntity[NAMDataUpdateCoordinator], ButtonEntity): """Define an Nettigo Air Monitor button.""" + _attr_has_entity_name = True + def __init__( self, coordinator: NAMDataUpdateCoordinator, diff --git a/homeassistant/components/nam/const.py b/homeassistant/components/nam/const.py index b81e7337a9f..e7c6f2532ef 100644 --- a/homeassistant/components/nam/const.py +++ b/homeassistant/components/nam/const.py @@ -4,21 +4,6 @@ from __future__ import annotations from datetime import timedelta from typing import Final -from homeassistant.components.sensor import ( - SensorDeviceClass, - SensorEntityDescription, - SensorStateClass, -) -from homeassistant.const import ( - CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - CONCENTRATION_PARTS_PER_MILLION, - PERCENTAGE, - PRESSURE_HPA, - SIGNAL_STRENGTH_DECIBELS_MILLIWATT, - TEMP_CELSIUS, -) -from homeassistant.helpers.entity import EntityCategory - SUFFIX_P0: Final = "_p0" SUFFIX_P1: Final = "_p1" SUFFIX_P2: Final = "_p2" @@ -49,7 +34,6 @@ ATTR_SPS30_P2: Final = f"{ATTR_SPS30}{SUFFIX_P2}" ATTR_SPS30_P4: Final = f"{ATTR_SPS30}{SUFFIX_P4}" ATTR_UPTIME: Final = "uptime" -DEFAULT_NAME: Final = "Nettigo Air Monitor" DEFAULT_UPDATE_INTERVAL: Final = timedelta(minutes=6) DOMAIN: Final = "nam" MANUFACTURER: Final = "Nettigo" @@ -58,162 +42,3 @@ MIGRATION_SENSORS: Final = [ ("temperature", ATTR_DHT22_TEMPERATURE), ("humidity", ATTR_DHT22_HUMIDITY), ] - -SENSORS: Final[tuple[SensorEntityDescription, ...]] = ( - SensorEntityDescription( - key=ATTR_BME280_HUMIDITY, - name=f"{DEFAULT_NAME} BME280 Humidity", - native_unit_of_measurement=PERCENTAGE, - device_class=SensorDeviceClass.HUMIDITY, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BME280_PRESSURE, - name=f"{DEFAULT_NAME} BME280 Pressure", - native_unit_of_measurement=PRESSURE_HPA, - device_class=SensorDeviceClass.PRESSURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BME280_TEMPERATURE, - name=f"{DEFAULT_NAME} BME280 Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BMP180_PRESSURE, - name=f"{DEFAULT_NAME} BMP180 Pressure", - native_unit_of_measurement=PRESSURE_HPA, - device_class=SensorDeviceClass.PRESSURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BMP180_TEMPERATURE, - name=f"{DEFAULT_NAME} BMP180 Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BMP280_PRESSURE, - name=f"{DEFAULT_NAME} BMP280 Pressure", - native_unit_of_measurement=PRESSURE_HPA, - device_class=SensorDeviceClass.PRESSURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_BMP280_TEMPERATURE, - name=f"{DEFAULT_NAME} BMP280 Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_HECA_HUMIDITY, - name=f"{DEFAULT_NAME} HECA Humidity", - native_unit_of_measurement=PERCENTAGE, - device_class=SensorDeviceClass.HUMIDITY, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_HECA_TEMPERATURE, - name=f"{DEFAULT_NAME} HECA Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_MHZ14A_CARBON_DIOXIDE, - name=f"{DEFAULT_NAME} MH-Z14A Carbon Dioxide", - native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION, - device_class=SensorDeviceClass.CO2, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SDS011_P1, - name=f"{DEFAULT_NAME} SDS011 Particulate Matter 10", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - device_class=SensorDeviceClass.PM10, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SDS011_P2, - name=f"{DEFAULT_NAME} SDS011 Particulate Matter 2.5", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - device_class=SensorDeviceClass.PM25, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SHT3X_HUMIDITY, - name=f"{DEFAULT_NAME} SHT3X Humidity", - native_unit_of_measurement=PERCENTAGE, - device_class=SensorDeviceClass.HUMIDITY, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SHT3X_TEMPERATURE, - name=f"{DEFAULT_NAME} SHT3X Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SPS30_P0, - name=f"{DEFAULT_NAME} SPS30 Particulate Matter 1.0", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - device_class=SensorDeviceClass.PM1, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SPS30_P1, - name=f"{DEFAULT_NAME} SPS30 Particulate Matter 10", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - device_class=SensorDeviceClass.PM10, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SPS30_P2, - name=f"{DEFAULT_NAME} SPS30 Particulate Matter 2.5", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - device_class=SensorDeviceClass.PM25, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SPS30_P4, - name=f"{DEFAULT_NAME} SPS30 Particulate Matter 4.0", - native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, - icon="mdi:molecule", - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_DHT22_HUMIDITY, - name=f"{DEFAULT_NAME} DHT22 Humidity", - native_unit_of_measurement=PERCENTAGE, - device_class=SensorDeviceClass.HUMIDITY, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_DHT22_TEMPERATURE, - name=f"{DEFAULT_NAME} DHT22 Temperature", - native_unit_of_measurement=TEMP_CELSIUS, - device_class=SensorDeviceClass.TEMPERATURE, - state_class=SensorStateClass.MEASUREMENT, - ), - SensorEntityDescription( - key=ATTR_SIGNAL_STRENGTH, - name=f"{DEFAULT_NAME} Signal Strength", - native_unit_of_measurement=SIGNAL_STRENGTH_DECIBELS_MILLIWATT, - device_class=SensorDeviceClass.SIGNAL_STRENGTH, - entity_registry_enabled_default=False, - state_class=SensorStateClass.MEASUREMENT, - entity_category=EntityCategory.DIAGNOSTIC, - ), - SensorEntityDescription( - key=ATTR_UPTIME, - name=f"{DEFAULT_NAME} Uptime", - device_class=SensorDeviceClass.TIMESTAMP, - entity_registry_enabled_default=False, - entity_category=EntityCategory.DIAGNOSTIC, - ), -) diff --git a/homeassistant/components/nam/sensor.py b/homeassistant/components/nam/sensor.py index af729cf9066..6229102035e 100644 --- a/homeassistant/components/nam/sensor.py +++ b/homeassistant/components/nam/sensor.py @@ -7,24 +7,219 @@ from typing import cast from homeassistant.components.sensor import ( DOMAIN as PLATFORM, + SensorDeviceClass, SensorEntity, SensorEntityDescription, + SensorStateClass, ) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import ( + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONCENTRATION_PARTS_PER_MILLION, + PERCENTAGE, + PRESSURE_HPA, + SIGNAL_STRENGTH_DECIBELS_MILLIWATT, + TEMP_CELSIUS, +) from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry +from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.util.dt import utcnow from . import NAMDataUpdateCoordinator -from .const import ATTR_UPTIME, DOMAIN, MIGRATION_SENSORS, SENSORS +from .const import ( + ATTR_BME280_HUMIDITY, + ATTR_BME280_PRESSURE, + ATTR_BME280_TEMPERATURE, + ATTR_BMP180_PRESSURE, + ATTR_BMP180_TEMPERATURE, + ATTR_BMP280_PRESSURE, + ATTR_BMP280_TEMPERATURE, + ATTR_DHT22_HUMIDITY, + ATTR_DHT22_TEMPERATURE, + ATTR_HECA_HUMIDITY, + ATTR_HECA_TEMPERATURE, + ATTR_MHZ14A_CARBON_DIOXIDE, + ATTR_SDS011_P1, + ATTR_SDS011_P2, + ATTR_SHT3X_HUMIDITY, + ATTR_SHT3X_TEMPERATURE, + ATTR_SIGNAL_STRENGTH, + ATTR_SPS30_P0, + ATTR_SPS30_P1, + ATTR_SPS30_P2, + ATTR_SPS30_P4, + ATTR_UPTIME, + DOMAIN, + MIGRATION_SENSORS, +) PARALLEL_UPDATES = 1 _LOGGER = logging.getLogger(__name__) +SENSORS: tuple[SensorEntityDescription, ...] = ( + SensorEntityDescription( + key=ATTR_BME280_HUMIDITY, + name="BME280 humidity", + native_unit_of_measurement=PERCENTAGE, + device_class=SensorDeviceClass.HUMIDITY, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BME280_PRESSURE, + name="BME280 pressure", + native_unit_of_measurement=PRESSURE_HPA, + device_class=SensorDeviceClass.PRESSURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BME280_TEMPERATURE, + name="BME280 temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BMP180_PRESSURE, + name="BMP180 pressure", + native_unit_of_measurement=PRESSURE_HPA, + device_class=SensorDeviceClass.PRESSURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BMP180_TEMPERATURE, + name="BMP180 temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BMP280_PRESSURE, + name="BMP280 pressure", + native_unit_of_measurement=PRESSURE_HPA, + device_class=SensorDeviceClass.PRESSURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_BMP280_TEMPERATURE, + name="BMP280 temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_HECA_HUMIDITY, + name="HECA humidity", + native_unit_of_measurement=PERCENTAGE, + device_class=SensorDeviceClass.HUMIDITY, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_HECA_TEMPERATURE, + name="HECA temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_MHZ14A_CARBON_DIOXIDE, + name="MH-Z14A carbon dioxide", + native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION, + device_class=SensorDeviceClass.CO2, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SDS011_P1, + name="SDS011 particulate matter 10", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + device_class=SensorDeviceClass.PM10, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SDS011_P2, + name="SDS011 particulate matter 2.5", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + device_class=SensorDeviceClass.PM25, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SHT3X_HUMIDITY, + name="SHT3X humidity", + native_unit_of_measurement=PERCENTAGE, + device_class=SensorDeviceClass.HUMIDITY, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SHT3X_TEMPERATURE, + name="SHT3X temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SPS30_P0, + name="SPS30 particulate matter 1.0", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + device_class=SensorDeviceClass.PM1, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SPS30_P1, + name="SPS30 particulate matter 10", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + device_class=SensorDeviceClass.PM10, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SPS30_P2, + name="SPS30 particulate matter 2.5", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + device_class=SensorDeviceClass.PM25, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SPS30_P4, + name="SPS30 particulate matter 4.0", + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + icon="mdi:molecule", + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_DHT22_HUMIDITY, + name="DHT22 humidity", + native_unit_of_measurement=PERCENTAGE, + device_class=SensorDeviceClass.HUMIDITY, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_DHT22_TEMPERATURE, + name="DHT22 temperature", + native_unit_of_measurement=TEMP_CELSIUS, + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + ), + SensorEntityDescription( + key=ATTR_SIGNAL_STRENGTH, + name="Signal strength", + native_unit_of_measurement=SIGNAL_STRENGTH_DECIBELS_MILLIWATT, + device_class=SensorDeviceClass.SIGNAL_STRENGTH, + entity_registry_enabled_default=False, + state_class=SensorStateClass.MEASUREMENT, + entity_category=EntityCategory.DIAGNOSTIC, + ), + SensorEntityDescription( + key=ATTR_UPTIME, + name="Uptime", + device_class=SensorDeviceClass.TIMESTAMP, + entity_registry_enabled_default=False, + entity_category=EntityCategory.DIAGNOSTIC, + ), +) + async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback @@ -61,6 +256,8 @@ async def async_setup_entry( class NAMSensor(CoordinatorEntity[NAMDataUpdateCoordinator], SensorEntity): """Define an Nettigo Air Monitor sensor.""" + _attr_has_entity_name = True + def __init__( self, coordinator: NAMDataUpdateCoordinator,