diff --git a/homeassistant/components/somfy/__init__.py b/homeassistant/components/somfy/__init__.py index 619e5a72602..40692b9d459 100644 --- a/homeassistant/components/somfy/__init__.py +++ b/homeassistant/components/somfy/__init__.py @@ -3,12 +3,17 @@ import asyncio from datetime import timedelta import logging +from pymfy.api.devices.category import Category from requests import HTTPError import voluptuous as vol from homeassistant.components.somfy import config_flow from homeassistant.config_entries import ConfigEntry -from homeassistant.helpers import config_entry_oauth2_flow, config_validation as cv +from homeassistant.helpers import ( + config_entry_oauth2_flow, + config_validation as cv, + device_registry as dr, +) from homeassistant.helpers.entity import Entity from homeassistant.helpers.typing import HomeAssistantType from homeassistant.util import Throttle @@ -86,6 +91,20 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry): await update_all_devices(hass) + device_registry = await dr.async_get_registry(hass) + + devices = hass.data[DOMAIN][DEVICES] + hubs = [device for device in devices if Category.HUB.value in device.categories] + + for hub in hubs: + device_registry.async_get_or_create( + config_entry_id=entry.entry_id, + identifiers={(DOMAIN, hub.id)}, + manufacturer="Somfy", + name=hub.name, + model=hub.type, + ) + for component in SOMFY_COMPONENTS: hass.async_create_task( hass.config_entries.async_forward_entry_setup(entry, component) @@ -134,7 +153,7 @@ class SomfyEntity(Entity): "identifiers": {(DOMAIN, self.unique_id)}, "name": self.name, "model": self.device.type, - "via_hub": (DOMAIN, self.device.site_id), + "via_hub": (DOMAIN, self.device.parent_id), # For the moment, Somfy only returns their own device. "manufacturer": "Somfy", } diff --git a/homeassistant/components/somfy/manifest.json b/homeassistant/components/somfy/manifest.json index 6e15b01e961..ab24d21b2e1 100644 --- a/homeassistant/components/somfy/manifest.json +++ b/homeassistant/components/somfy/manifest.json @@ -5,5 +5,5 @@ "documentation": "https://www.home-assistant.io/integrations/somfy", "dependencies": ["http"], "codeowners": ["@tetienne"], - "requirements": ["pymfy==0.7.1"] + "requirements": ["pymfy==0.9.0"] } diff --git a/requirements_all.txt b/requirements_all.txt index 44d55995857..0b305d809c1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1447,7 +1447,7 @@ pymediaroom==0.6.4 pymelcloud==2.5.2 # homeassistant.components.somfy -pymfy==0.7.1 +pymfy==0.9.0 # homeassistant.components.xiaomi_tv pymitv==1.4.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 66676368988..c58ad9fc21d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -621,7 +621,7 @@ pymailgunner==1.4 pymelcloud==2.5.2 # homeassistant.components.somfy -pymfy==0.7.1 +pymfy==0.9.0 # homeassistant.components.mochad pymochad==0.2.0