diff --git a/homeassistant/components/p1_monitor/const.py b/homeassistant/components/p1_monitor/const.py index 1af76d49176..79b53eeed9e 100644 --- a/homeassistant/components/p1_monitor/const.py +++ b/homeassistant/components/p1_monitor/const.py @@ -9,7 +9,6 @@ DOMAIN: Final = "p1_monitor" LOGGER = logging.getLogger(__package__) SCAN_INTERVAL = timedelta(seconds=5) -ATTR_ENTRY_TYPE: Final = "entry_type" ENTRY_TYPE_SERVICE: Final = "service" SERVICE_SMARTMETER: Final = "smartmeter" diff --git a/homeassistant/components/p1_monitor/sensor.py b/homeassistant/components/p1_monitor/sensor.py index 8c86d3d4529..e3cebf94a68 100644 --- a/homeassistant/components/p1_monitor/sensor.py +++ b/homeassistant/components/p1_monitor/sensor.py @@ -12,9 +12,6 @@ from homeassistant.components.sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( - ATTR_IDENTIFIERS, - ATTR_MANUFACTURER, - ATTR_NAME, CURRENCY_EURO, DEVICE_CLASS_CURRENT, DEVICE_CLASS_ENERGY, @@ -28,13 +25,13 @@ from homeassistant.const import ( VOLUME_CUBIC_METERS, ) from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import P1MonitorDataUpdateCoordinator from .const import ( - ATTR_ENTRY_TYPE, DOMAIN, ENTRY_TYPE_SERVICE, SERVICE_PHASES, @@ -266,14 +263,14 @@ class P1MonitorSensorEntity(CoordinatorEntity, SensorEntity): f"{coordinator.config_entry.entry_id}_{service_key}_{description.key}" ) - self._attr_device_info = { - ATTR_IDENTIFIERS: { + self._attr_device_info = DeviceInfo( + entry_type=ENTRY_TYPE_SERVICE, + identifiers={ (DOMAIN, f"{coordinator.config_entry.entry_id}_{service_key}") }, - ATTR_NAME: service, - ATTR_MANUFACTURER: "P1 Monitor", - ATTR_ENTRY_TYPE: ENTRY_TYPE_SERVICE, - } + manufacturer="P1 Monitor", + name=service, + ) @property def native_value(self) -> StateType: diff --git a/homeassistant/components/panasonic_viera/media_player.py b/homeassistant/components/panasonic_viera/media_player.py index c59c77b569c..9058574354b 100644 --- a/homeassistant/components/panasonic_viera/media_player.py +++ b/homeassistant/components/panasonic_viera/media_player.py @@ -1,4 +1,6 @@ """Media player support for Panasonic Viera TV.""" +from __future__ import annotations + import logging from panasonic_viera import Keys @@ -19,6 +21,7 @@ from homeassistant.components.media_player.const import ( SUPPORT_VOLUME_STEP, ) from homeassistant.const import CONF_NAME +from homeassistant.helpers.entity import DeviceInfo from .const import ( ATTR_DEVICE_INFO, @@ -78,18 +81,16 @@ class PanasonicVieraTVEntity(MediaPlayerEntity): return self._device_info[ATTR_UDN] @property - def device_info(self): + def device_info(self) -> DeviceInfo | None: """Return device specific attributes.""" if self._device_info is None: return None - return { - "name": self._name, - "identifiers": {(DOMAIN, self._device_info[ATTR_UDN])}, - "manufacturer": self._device_info.get( - ATTR_MANUFACTURER, DEFAULT_MANUFACTURER - ), - "model": self._device_info.get(ATTR_MODEL_NUMBER, DEFAULT_MODEL_NUMBER), - } + return DeviceInfo( + identifiers={(DOMAIN, self._device_info[ATTR_UDN])}, + manufacturer=self._device_info.get(ATTR_MANUFACTURER, DEFAULT_MANUFACTURER), + model=self._device_info.get(ATTR_MODEL_NUMBER, DEFAULT_MODEL_NUMBER), + name=self._name, + ) @property def device_class(self): diff --git a/homeassistant/components/panasonic_viera/remote.py b/homeassistant/components/panasonic_viera/remote.py index acd1d49f1be..30653847b43 100644 --- a/homeassistant/components/panasonic_viera/remote.py +++ b/homeassistant/components/panasonic_viera/remote.py @@ -1,6 +1,9 @@ """Remote control support for Panasonic Viera TV.""" +from __future__ import annotations + from homeassistant.components.remote import RemoteEntity from homeassistant.const import CONF_NAME, STATE_ON +from homeassistant.helpers.entity import DeviceInfo from .const import ( ATTR_DEVICE_INFO, @@ -44,18 +47,16 @@ class PanasonicVieraRemoteEntity(RemoteEntity): return self._device_info[ATTR_UDN] @property - def device_info(self): + def device_info(self) -> DeviceInfo | None: """Return device specific attributes.""" if self._device_info is None: return None - return { - "name": self._name, - "identifiers": {(DOMAIN, self._device_info[ATTR_UDN])}, - "manufacturer": self._device_info.get( - ATTR_MANUFACTURER, DEFAULT_MANUFACTURER - ), - "model": self._device_info.get(ATTR_MODEL_NUMBER, DEFAULT_MODEL_NUMBER), - } + return DeviceInfo( + identifiers={(DOMAIN, self._device_info[ATTR_UDN])}, + manufacturer=self._device_info.get(ATTR_MANUFACTURER, DEFAULT_MANUFACTURER), + model=self._device_info.get(ATTR_MODEL_NUMBER, DEFAULT_MODEL_NUMBER), + name=self._name, + ) @property def name(self): diff --git a/homeassistant/components/philips_js/light.py b/homeassistant/components/philips_js/light.py index 3dbca7611ab..799b3b41631 100644 --- a/homeassistant/components/philips_js/light.py +++ b/homeassistant/components/philips_js/light.py @@ -19,6 +19,7 @@ from homeassistant.components.light import ( LightEntity, ) from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.util.color import color_hsv_to_RGB, color_RGB_to_hsv @@ -154,15 +155,15 @@ class PhilipsTVLightEntity(CoordinatorEntity, LightEntity): self._attr_name = self._system["name"] self._attr_unique_id = unique_id self._attr_icon = "mdi:television-ambient-light" - self._attr_device_info = { - "name": self._system["name"], - "identifiers": { + self._attr_device_info = DeviceInfo( + identifiers={ (DOMAIN, self._attr_unique_id), }, - "model": self._system.get("model"), - "manufacturer": "Philips", - "sw_version": self._system.get("softwareversion"), - } + manufacturer="Philips", + model=self._system.get("model"), + name=self._system["name"], + sw_version=self._system.get("softwareversion"), + ) self._update_from_coordinator() diff --git a/homeassistant/components/philips_js/media_player.py b/homeassistant/components/philips_js/media_player.py index 1b2d5c25fd4..9b6ddfeb76e 100644 --- a/homeassistant/components/philips_js/media_player.py +++ b/homeassistant/components/philips_js/media_player.py @@ -45,6 +45,7 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant, callback import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import LOGGER as _LOGGER, PhilipsTVDataUpdateCoordinator @@ -324,17 +325,17 @@ class PhilipsTVMediaPlayer(CoordinatorEntity, MediaPlayerEntity): return self._unique_id @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return a device description for device registry.""" - return { - "name": self._system["name"], - "identifiers": { + return DeviceInfo( + identifiers={ (DOMAIN, self._unique_id), }, - "model": self._system.get("model"), - "manufacturer": "Philips", - "sw_version": self._system.get("softwareversion"), - } + manufacturer="Philips", + model=self._system.get("model"), + sw_version=self._system.get("softwareversion"), + name=self._system["name"], + ) async def async_play_media(self, media_type, media_id, **kwargs): """Play a piece of media.""" diff --git a/homeassistant/components/philips_js/remote.py b/homeassistant/components/philips_js/remote.py index 98ecab96fd4..639f5ab7560 100644 --- a/homeassistant/components/philips_js/remote.py +++ b/homeassistant/components/philips_js/remote.py @@ -10,6 +10,7 @@ from homeassistant.components.remote import ( DEFAULT_DELAY_SECS, RemoteEntity, ) +from homeassistant.helpers.entity import DeviceInfo from . import LOGGER, PhilipsTVDataUpdateCoordinator from .const import CONF_SYSTEM, DOMAIN @@ -67,17 +68,17 @@ class PhilipsTVRemote(RemoteEntity): return self._unique_id @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return a device description for device registry.""" - return { - "name": self._system["name"], - "identifiers": { + return DeviceInfo( + identifiers={ (DOMAIN, self._unique_id), }, - "model": self._system.get("model"), - "manufacturer": "Philips", - "sw_version": self._system.get("softwareversion"), - } + manufacturer="Philips", + model=self._system.get("model"), + name=self._system["name"], + sw_version=self._system.get("softwareversion"), + ) async def async_turn_on(self, **kwargs): """Turn the device on.""" diff --git a/homeassistant/components/picnic/sensor.py b/homeassistant/components/picnic/sensor.py index 7eafef17982..d3de3d1dfb3 100644 --- a/homeassistant/components/picnic/sensor.py +++ b/homeassistant/components/picnic/sensor.py @@ -1,11 +1,12 @@ """Definition of Picnic sensors.""" from __future__ import annotations -from typing import Any +from typing import Any, cast from homeassistant.components.sensor import SensorEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import ( CoordinatorEntity, @@ -75,15 +76,15 @@ class PicnicSensor(SensorEntity, CoordinatorEntity): return self.coordinator.last_update_success and self.state is not None @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return device info.""" - return { - "identifiers": {(DOMAIN, self._service_unique_id)}, - "manufacturer": "Picnic", - "model": self._service_unique_id, - "name": f"Picnic: {self.coordinator.data[ADDRESS]}", - "entry_type": "service", - } + return DeviceInfo( + entry_type="service", + identifiers={(DOMAIN, cast(str, self._service_unique_id))}, + manufacturer="Picnic", + model=self._service_unique_id, + name=f"Picnic: {self.coordinator.data[ADDRESS]}", + ) @staticmethod def _to_capitalized_name(name: str) -> str: diff --git a/homeassistant/components/plaato/entity.py b/homeassistant/components/plaato/entity.py index 3c04c5d597d..b0297ec3024 100644 --- a/homeassistant/components/plaato/entity.py +++ b/homeassistant/components/plaato/entity.py @@ -53,19 +53,16 @@ class PlaatoEntity(entity.Entity): return f"{self._device_id}_{self._sensor_type}" @property - def device_info(self): + def device_info(self) -> entity.DeviceInfo: """Get device info.""" - device_info = { - "identifiers": {(DOMAIN, self._device_id)}, - "name": self._device_name, - "manufacturer": "Plaato", - "model": self._device_type, - } - - if self._sensor_data.firmware_version != "": - device_info["sw_version"] = self._sensor_data.firmware_version - - return device_info + sw_version = self._sensor_data.firmware_version + return entity.DeviceInfo( + identifiers={(DOMAIN, self._device_id)}, + manufacturer="Plaato", + model=self._device_type, + name=self._device_name, + sw_version=sw_version if sw_version != "" else None, + ) @property def extra_state_attributes(self): diff --git a/homeassistant/components/plum_lightpad/light.py b/homeassistant/components/plum_lightpad/light.py index f358d81dfef..5ded654156d 100644 --- a/homeassistant/components/plum_lightpad/light.py +++ b/homeassistant/components/plum_lightpad/light.py @@ -15,6 +15,7 @@ from homeassistant.components.light import ( from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback import homeassistant.util.color as color_util @@ -94,14 +95,14 @@ class PlumLight(LightEntity): return self._load.name @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return the device info.""" - return { - "name": self.name, - "identifiers": {(DOMAIN, self.unique_id)}, - "model": "Dimmer", - "manufacturer": "Plum", - } + return DeviceInfo( + identifiers={(DOMAIN, self.unique_id)}, + manufacturer="Plum", + model="Dimmer", + name=self.name, + ) @property def brightness(self) -> int: @@ -185,14 +186,14 @@ class GlowRing(LightEntity): return self._name @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return the device info.""" - return { - "name": self.name, - "identifiers": {(DOMAIN, self.unique_id)}, - "model": "Glow Ring", - "manufacturer": "Plum", - } + return DeviceInfo( + identifiers={(DOMAIN, self.unique_id)}, + manufacturer="Plum", + model="Glow Ring", + name=self.name, + ) @property def brightness(self) -> int: diff --git a/homeassistant/components/point/__init__.py b/homeassistant/components/point/__init__.py index 45b7dbb9e3e..6865664af7c 100644 --- a/homeassistant/components/point/__init__.py +++ b/homeassistant/components/point/__init__.py @@ -315,7 +315,7 @@ class MinutPointEntity(Entity): connections={ (device_registry.CONNECTION_NETWORK_MAC, device["device_mac"]) }, - identifieres=device["device_id"], + identifiers=device["device_id"], manufacturer="Minut", model=f"Point v{device['hardware_version']}", name=device["description"], diff --git a/homeassistant/components/point/alarm_control_panel.py b/homeassistant/components/point/alarm_control_panel.py index 8325c89f129..12532154f8d 100644 --- a/homeassistant/components/point/alarm_control_panel.py +++ b/homeassistant/components/point/alarm_control_panel.py @@ -10,6 +10,7 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.helpers.dispatcher import async_dispatcher_connect +from homeassistant.helpers.entity import DeviceInfo from .const import DOMAIN as POINT_DOMAIN, POINT_DISCOVERY_NEW, SIGNAL_WEBHOOK @@ -117,10 +118,10 @@ class MinutPointAlarmControl(AlarmControlPanelEntity): return f"point.{self._home_id}" @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return a device description for device registry.""" - return { - "identifiers": {(POINT_DOMAIN, self._home_id)}, - "name": self.name, - "manufacturer": "Minut", - } + return DeviceInfo( + identifiers={(POINT_DOMAIN, self._home_id)}, + manufacturer="Minut", + name=self.name, + ) diff --git a/homeassistant/components/powerwall/entity.py b/homeassistant/components/powerwall/entity.py index bcc21615066..ae647a080c0 100644 --- a/homeassistant/components/powerwall/entity.py +++ b/homeassistant/components/powerwall/entity.py @@ -1,5 +1,6 @@ """The Tesla Powerwall integration base entity.""" +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN, MANUFACTURER, MODEL @@ -20,15 +21,12 @@ class PowerWallEntity(CoordinatorEntity): self.base_unique_id = "_".join(powerwalls_serial_numbers) @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Powerwall device info.""" - device_info = { - "identifiers": {(DOMAIN, self.base_unique_id)}, - "name": self._site_info.site_name, - "manufacturer": MANUFACTURER, - } - model = MODEL - model += f" ({self._device_type.name})" - device_info["model"] = model - device_info["sw_version"] = self._version - return device_info + return DeviceInfo( + identifiers={(DOMAIN, self.base_unique_id)}, + manufacturer=MANUFACTURER, + model=f"{MODEL} ({self._device_type.name})", + name=self._site_info.site_name, + sw_version=self._version, + ) diff --git a/homeassistant/components/ps4/media_player.py b/homeassistant/components/ps4/media_player.py index bdc8ba9714d..cc096e96bd5 100644 --- a/homeassistant/components/ps4/media_player.py +++ b/homeassistant/components/ps4/media_player.py @@ -32,6 +32,7 @@ from homeassistant.const import ( ) from homeassistant.core import callback from homeassistant.helpers import device_registry, entity_registry +from homeassistant.helpers.entity import DeviceInfo from .const import ( ATTR_MEDIA_IMAGE_URL, @@ -92,7 +93,6 @@ class PS4Device(MediaPlayerEntity): self._source_list = [] self._retry = 0 self._disconnected = False - self._info = None self._unique_id = None @callback @@ -150,7 +150,7 @@ class PS4Device(MediaPlayerEntity): if self._ps4.ddp_protocol is None: # Use socket.socket. await self.hass.async_add_executor_job(self._ps4.get_status) - if self._info is None: + if self._attr_device_info is None: # Add entity to registry. await self.async_get_device_info(self._ps4.status) self._ps4.ddp_protocol = self.hass.data[PS4_DATA].protocol @@ -337,26 +337,26 @@ class PS4Device(MediaPlayerEntity): break for device in d_registry.devices.values(): if self._entry_id in device.config_entries: - self._info = { - "name": device.name, - "model": device.model, - "identifiers": device.identifiers, - "manufacturer": device.manufacturer, - "sw_version": device.sw_version, - } + self._attr_device_info = DeviceInfo( + identifiers=device.identifiers, + manufacturer=device.manufacturer, + model=device.model, + name=device.name, + sw_version=device.sw_version, + ) break else: _sw_version = status["system-version"] _sw_version = _sw_version[1:4] sw_version = f"{_sw_version[0]}.{_sw_version[1:]}" - self._info = { - "name": status["host-name"], - "model": "PlayStation 4", - "identifiers": {(PS4_DOMAIN, status["host-id"])}, - "manufacturer": "Sony Interactive Entertainment Inc.", - "sw_version": sw_version, - } + self._attr_device_info = DeviceInfo( + identifiers={(PS4_DOMAIN, status["host-id"])}, + manufacturer="Sony Interactive Entertainment Inc.", + model="PlayStation 4", + name=status["host-name"], + sw_version=sw_version, + ) self._unique_id = format_unique_id(self._creds, status["host-id"]) @@ -368,11 +368,6 @@ class PS4Device(MediaPlayerEntity): self.unsubscribe_to_protocol() self.hass.data[PS4_DATA].devices.remove(self) - @property - def device_info(self): - """Return information about the device.""" - return self._info - @property def unique_id(self): """Return Unique ID for entity.""" diff --git a/homeassistant/components/rainforest_eagle/sensor.py b/homeassistant/components/rainforest_eagle/sensor.py index 35864e55fa4..bdd6ac541a9 100644 --- a/homeassistant/components/rainforest_eagle/sensor.py +++ b/homeassistant/components/rainforest_eagle/sensor.py @@ -98,11 +98,11 @@ class EagleSensor(CoordinatorEntity, SensorEntity): return self.coordinator.data.get(self.entity_description.key) @property - def device_info(self) -> DeviceInfo | None: + def device_info(self) -> DeviceInfo: """Return device info.""" - return { - "name": self.coordinator.model, - "identifiers": {(DOMAIN, self.coordinator.cloud_id)}, - "manufacturer": "Rainforest Automation", - "model": self.coordinator.model, - } + return DeviceInfo( + identifiers={(DOMAIN, self.coordinator.cloud_id)}, + manufacturer="Rainforest Automation", + model=self.coordinator.model, + name=self.coordinator.model, + ) diff --git a/homeassistant/components/renault/renault_vehicle.py b/homeassistant/components/renault/renault_vehicle.py index 12f5f4e8671..462c5bbc239 100644 --- a/homeassistant/components/renault/renault_vehicle.py +++ b/homeassistant/components/renault/renault_vehicle.py @@ -11,13 +11,6 @@ from typing import cast from renault_api.kamereon import models from renault_api.renault_vehicle import RenaultVehicle -from homeassistant.const import ( - ATTR_IDENTIFIERS, - ATTR_MANUFACTURER, - ATTR_MODEL, - ATTR_NAME, - ATTR_SW_VERSION, -) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import DeviceInfo @@ -55,13 +48,13 @@ class RenaultVehicleProxy: self.hass = hass self._vehicle = vehicle self._details = details - self._device_info: DeviceInfo = { - ATTR_IDENTIFIERS: {(DOMAIN, cast(str, details.vin))}, - ATTR_MANUFACTURER: (details.get_brand_label() or "").capitalize(), - ATTR_MODEL: (details.get_model_label() or "").capitalize(), - ATTR_NAME: details.registrationNumber or "", - ATTR_SW_VERSION: details.get_model_code() or "", - } + self._device_info = DeviceInfo( + identifiers={(DOMAIN, cast(str, details.vin))}, + manufacturer=(details.get_brand_label() or "").capitalize(), + model=(details.get_model_label() or "").capitalize(), + name=details.registrationNumber or "", + sw_version=details.get_model_code() or "", + ) self.coordinators: dict[str, RenaultDataUpdateCoordinator] = {} self.hvac_target_temperature = 21 self._scan_interval = scan_interval diff --git a/homeassistant/components/rfxtrx/__init__.py b/homeassistant/components/rfxtrx/__init__.py index 970aed38335..9a5b7ecf57a 100644 --- a/homeassistant/components/rfxtrx/__init__.py +++ b/homeassistant/components/rfxtrx/__init__.py @@ -22,6 +22,7 @@ from homeassistant.const import ( from homeassistant.core import callback import homeassistant.helpers.config_validation as cv from homeassistant.helpers.device_registry import DeviceRegistry +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.restore_state import RestoreEntity from .const import ( @@ -393,11 +394,11 @@ class RfxtrxEntity(RestoreEntity): @property def device_info(self): """Return the device info.""" - return { - "identifiers": {(DOMAIN, *self._device_id)}, - "name": f"{self._device.type_string} {self._device.id_string}", - "model": self._device.type_string, - } + return DeviceInfo( + identifiers={(DOMAIN, *self._device_id)}, + model=self._device.type_string, + name=f"{self._device.type_string} {self._device.id_string}", + ) def _event_applies(self, event, device_id): """Check if event applies to me.""" diff --git a/homeassistant/components/ring/entity.py b/homeassistant/components/ring/entity.py index 7a1c8ae7bdf..84f4816115f 100644 --- a/homeassistant/components/ring/entity.py +++ b/homeassistant/components/ring/entity.py @@ -1,6 +1,7 @@ """Base class for Ring entity.""" from homeassistant.const import ATTR_ATTRIBUTION from homeassistant.core import callback +from homeassistant.helpers.entity import DeviceInfo from . import ATTRIBUTION, DOMAIN @@ -43,11 +44,11 @@ class RingEntityMixin: return {ATTR_ATTRIBUTION: ATTRIBUTION} @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return device info.""" - return { - "identifiers": {(DOMAIN, self._device.device_id)}, - "name": self._device.name, - "model": self._device.model, - "manufacturer": "Ring", - } + return DeviceInfo( + identifiers={(DOMAIN, self._device.device_id)}, + manufacturer="Ring", + model=self._device.model, + name=self._device.name, + ) diff --git a/homeassistant/components/risco/binary_sensor.py b/homeassistant/components/risco/binary_sensor.py index 0e1d4d235c2..cc93d7c11d4 100644 --- a/homeassistant/components/risco/binary_sensor.py +++ b/homeassistant/components/risco/binary_sensor.py @@ -4,6 +4,7 @@ from homeassistant.components.binary_sensor import ( BinarySensorEntity, ) from homeassistant.helpers import entity_platform +from homeassistant.helpers.entity import DeviceInfo from .const import DATA_COORDINATOR, DOMAIN from .entity import RiscoEntity, binary_sensor_unique_id @@ -41,13 +42,13 @@ class RiscoBinarySensor(BinarySensorEntity, RiscoEntity): self._zone = self.coordinator.data.zones[self._zone_id] @property - def device_info(self): + def device_info(self) -> DeviceInfo: """Return device info for this device.""" - return { - "identifiers": {(DOMAIN, self.unique_id)}, - "name": self.name, - "manufacturer": "Risco", - } + return DeviceInfo( + identifiers={(DOMAIN, self.unique_id)}, + manufacturer="Risco", + name=self.name, + ) @property def name(self): diff --git a/homeassistant/components/rituals_perfume_genie/entity.py b/homeassistant/components/rituals_perfume_genie/entity.py index 16c4e76686c..3ad71cdad67 100644 --- a/homeassistant/components/rituals_perfume_genie/entity.py +++ b/homeassistant/components/rituals_perfume_genie/entity.py @@ -3,6 +3,7 @@ from __future__ import annotations from pyrituals import Diffuser +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity from . import RitualsDataUpdateCoordinator @@ -33,13 +34,13 @@ class DiffuserEntity(CoordinatorEntity): self._attr_name = f"{hubname}{entity_suffix}" self._attr_unique_id = f"{hublot}{entity_suffix}" - self._attr_device_info = { - "name": hubname, - "identifiers": {(DOMAIN, hublot)}, - "manufacturer": MANUFACTURER, - "model": MODEL if diffuser.has_battery else MODEL2, - "sw_version": diffuser.version, - } + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, hublot)}, + manufacturer=MANUFACTURER, + model=MODEL if diffuser.has_battery else MODEL2, + name=hubname, + sw_version=diffuser.version, + ) @property def available(self) -> bool: diff --git a/homeassistant/components/roomba/irobot_base.py b/homeassistant/components/roomba/irobot_base.py index 8cee2a1ce61..fd33f850bd7 100644 --- a/homeassistant/components/roomba/irobot_base.py +++ b/homeassistant/components/roomba/irobot_base.py @@ -24,7 +24,7 @@ from homeassistant.components.vacuum import ( StateVacuumEntity, ) import homeassistant.helpers.device_registry as dr -from homeassistant.helpers.entity import Entity +from homeassistant.helpers.entity import DeviceInfo, Entity import homeassistant.util.dt as dt_util from . import roomba_reported_state @@ -96,18 +96,19 @@ class IRobotEntity(Entity): @property def device_info(self): """Return the device info of the vacuum cleaner.""" - info = { - "identifiers": {(DOMAIN, self.robot_unique_id)}, - "manufacturer": "iRobot", - "name": str(self._name), - "sw_version": self._version, - "model": self._sku, - } + connections = None if mac_address := self.vacuum_state.get("hwPartsRev", {}).get( "wlan0HwAddr", self.vacuum_state.get("mac") ): - info["connections"] = {(dr.CONNECTION_NETWORK_MAC, mac_address)} - return info + connections = {(dr.CONNECTION_NETWORK_MAC, mac_address)} + return DeviceInfo( + connections=connections, + identifiers={(DOMAIN, self.robot_unique_id)}, + manufacturer="iRobot", + model=self._sku, + name=str(self._name), + sw_version=self._version, + ) @property def _battery_level(self): diff --git a/homeassistant/components/roon/media_player.py b/homeassistant/components/roon/media_player.py index 08dbe12849b..84ebb41254a 100644 --- a/homeassistant/components/roon/media_player.py +++ b/homeassistant/components/roon/media_player.py @@ -163,7 +163,6 @@ class RoonDevice(MediaPlayerEntity): @property def device_info(self) -> DeviceInfo: """Return the device info.""" - dev_model = "player" if self.player_data.get("source_controls"): dev_model = self.player_data["source_controls"][0].get("display_name") return DeviceInfo(