From e4bb339a1e80eb5db9139568d035c4d60c0076ba Mon Sep 17 00:00:00 2001
From: Michael <35783820+mib1185@users.noreply.github.com>
Date: Tue, 28 Mar 2023 12:43:00 +0200
Subject: [PATCH] Add device info to Nextcloud integration (#90328)

* add device_info

* use entry_id as identifier + device name

* use shorthand attributes

* remove model from device info

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
---
 .../components/nextcloud/binary_sensor.py     |  2 +-
 homeassistant/components/nextcloud/entity.py  | 20 +++++++++++++------
 homeassistant/components/nextcloud/sensor.py  |  2 +-
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/homeassistant/components/nextcloud/binary_sensor.py b/homeassistant/components/nextcloud/binary_sensor.py
index 0d960bea8ef..3cf3cc3ae2a 100644
--- a/homeassistant/components/nextcloud/binary_sensor.py
+++ b/homeassistant/components/nextcloud/binary_sensor.py
@@ -25,7 +25,7 @@ async def async_setup_entry(
     coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
     async_add_entities(
         [
-            NextcloudBinarySensor(coordinator, name)
+            NextcloudBinarySensor(coordinator, name, entry)
             for name in coordinator.data
             if name in BINARY_SENSORS
         ]
diff --git a/homeassistant/components/nextcloud/entity.py b/homeassistant/components/nextcloud/entity.py
index 54976351dd2..ed5882cfe74 100644
--- a/homeassistant/components/nextcloud/entity.py
+++ b/homeassistant/components/nextcloud/entity.py
@@ -1,23 +1,31 @@
 """Base entity for the Nextcloud integration."""
 
 
+from homeassistant.config_entries import ConfigEntry
+from homeassistant.helpers.entity import DeviceInfo
 from homeassistant.helpers.update_coordinator import CoordinatorEntity
 
+from .const import DOMAIN
 from .coordinator import NextcloudDataUpdateCoordinator
 
 
 class NextcloudEntity(CoordinatorEntity[NextcloudDataUpdateCoordinator]):
     """Base Nextcloud entity."""
 
+    _attr_has_entity_name = True
     _attr_icon = "mdi:cloud"
 
-    def __init__(self, coordinator: NextcloudDataUpdateCoordinator, item: str) -> None:
+    def __init__(
+        self, coordinator: NextcloudDataUpdateCoordinator, item: str, entry: ConfigEntry
+    ) -> None:
         """Initialize the Nextcloud sensor."""
         super().__init__(coordinator)
         self.item = item
         self._attr_name = item
-
-    @property
-    def unique_id(self) -> str:
-        """Return the unique ID for this sensor."""
-        return f"{self.coordinator.url}#{self.item}"
+        self._attr_unique_id = f"{coordinator.url}#{item}"
+        self._attr_device_info = DeviceInfo(
+            name="Nextcloud",
+            identifiers={(DOMAIN, entry.entry_id)},
+            sw_version=coordinator.data.get("nextcloud_system_version"),
+            configuration_url=coordinator.url,
+        )
diff --git a/homeassistant/components/nextcloud/sensor.py b/homeassistant/components/nextcloud/sensor.py
index eb6043e4bc6..a5df872e084 100644
--- a/homeassistant/components/nextcloud/sensor.py
+++ b/homeassistant/components/nextcloud/sensor.py
@@ -65,7 +65,7 @@ async def async_setup_entry(
     coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
     async_add_entities(
         [
-            NextcloudSensor(coordinator, name)
+            NextcloudSensor(coordinator, name, entry)
             for name in coordinator.data
             if name in SENSORS
         ]
-- 
GitLab