From e9cf8db302e5714b6e2a88222fecac07aeb069b1 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 16 Apr 2021 18:28:53 +0200 Subject: [PATCH] Add `device_info` property to OpenWeatherMap entities (#49293) --- .../openweathermap/abstract_owm_sensor.py | 21 ++++++++++++++++++- .../components/openweathermap/const.py | 1 + .../components/openweathermap/weather.py | 12 +++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/openweathermap/abstract_owm_sensor.py b/homeassistant/components/openweathermap/abstract_owm_sensor.py index 30a21a057f0..ea12123b707 100644 --- a/homeassistant/components/openweathermap/abstract_owm_sensor.py +++ b/homeassistant/components/openweathermap/abstract_owm_sensor.py @@ -3,7 +3,15 @@ from homeassistant.components.sensor import SensorEntity from homeassistant.const import ATTR_ATTRIBUTION from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from .const import ATTRIBUTION, SENSOR_DEVICE_CLASS, SENSOR_NAME, SENSOR_UNIT +from .const import ( + ATTRIBUTION, + DEFAULT_NAME, + DOMAIN, + MANUFACTURER, + SENSOR_DEVICE_CLASS, + SENSOR_NAME, + SENSOR_UNIT, +) class AbstractOpenWeatherMapSensor(SensorEntity): @@ -36,6 +44,17 @@ class AbstractOpenWeatherMapSensor(SensorEntity): """Return a unique_id for this entity.""" return self._unique_id + @property + def device_info(self): + """Return the device info.""" + split_unique_id = self._unique_id.split("-") + return { + "identifiers": {(DOMAIN, f"{split_unique_id[0]}-{split_unique_id[1]}")}, + "name": DEFAULT_NAME, + "manufacturer": MANUFACTURER, + "entry_type": "service", + } + @property def should_poll(self): """Return the polling requirement of the entity.""" diff --git a/homeassistant/components/openweathermap/const.py b/homeassistant/components/openweathermap/const.py index bde7e74159c..36080a8e6f6 100644 --- a/homeassistant/components/openweathermap/const.py +++ b/homeassistant/components/openweathermap/const.py @@ -42,6 +42,7 @@ DOMAIN = "openweathermap" DEFAULT_NAME = "OpenWeatherMap" DEFAULT_LANGUAGE = "en" ATTRIBUTION = "Data provided by OpenWeatherMap" +MANUFACTURER = "OpenWeather" CONF_LANGUAGE = "language" CONFIG_FLOW_VERSION = 2 ENTRY_NAME = "name" diff --git a/homeassistant/components/openweathermap/weather.py b/homeassistant/components/openweathermap/weather.py index 63d63c30147..ffd3e4b7269 100644 --- a/homeassistant/components/openweathermap/weather.py +++ b/homeassistant/components/openweathermap/weather.py @@ -12,9 +12,11 @@ from .const import ( ATTR_API_WIND_BEARING, ATTR_API_WIND_SPEED, ATTRIBUTION, + DEFAULT_NAME, DOMAIN, ENTRY_NAME, ENTRY_WEATHER_COORDINATOR, + MANUFACTURER, ) from .weather_update_coordinator import WeatherUpdateCoordinator @@ -55,6 +57,16 @@ class OpenWeatherMapWeather(WeatherEntity): """Return a unique_id for this entity.""" return self._unique_id + @property + def device_info(self): + """Return the device info.""" + return { + "identifiers": {(DOMAIN, self._unique_id)}, + "name": DEFAULT_NAME, + "manufacturer": MANUFACTURER, + "entry_type": "service", + } + @property def should_poll(self): """Return the polling requirement of the entity."""