mirror of
https://github.com/home-assistant/core.git
synced 2025-07-08 13:57:10 +00:00
Fix device creation in fibaro integration (#142957)
* Fix device creation in fibaro integration * Better naming
This commit is contained in:
parent
7b3e7b7aea
commit
998b33c207
@ -12,7 +12,7 @@ from pyfibaro.fibaro_client import (
|
|||||||
FibaroClient,
|
FibaroClient,
|
||||||
FibaroConnectFailed,
|
FibaroConnectFailed,
|
||||||
)
|
)
|
||||||
from pyfibaro.fibaro_data_helper import read_rooms
|
from pyfibaro.fibaro_data_helper import find_master_devices, read_rooms
|
||||||
from pyfibaro.fibaro_device import DeviceModel
|
from pyfibaro.fibaro_device import DeviceModel
|
||||||
from pyfibaro.fibaro_device_manager import FibaroDeviceManager
|
from pyfibaro.fibaro_device_manager import FibaroDeviceManager
|
||||||
from pyfibaro.fibaro_info import InfoModel
|
from pyfibaro.fibaro_info import InfoModel
|
||||||
@ -176,35 +176,18 @@ class FibaroController:
|
|||||||
platform = Platform.LIGHT
|
platform = Platform.LIGHT
|
||||||
return platform
|
return platform
|
||||||
|
|
||||||
def _create_device_info(
|
def _create_device_info(self, main_device: DeviceModel) -> None:
|
||||||
self, device: DeviceModel, devices: list[DeviceModel]
|
"""Create the device info for a main device."""
|
||||||
) -> None:
|
|
||||||
"""Create the device info. Unrooted entities are directly shown below the home center."""
|
|
||||||
|
|
||||||
# The home center is always id 1 (z-wave primary controller)
|
if "zwaveCompany" in main_device.properties:
|
||||||
if device.parent_fibaro_id <= 1:
|
manufacturer = main_device.properties.get("zwaveCompany")
|
||||||
return
|
|
||||||
|
|
||||||
master_entity: DeviceModel | None = None
|
|
||||||
if device.parent_fibaro_id == 1:
|
|
||||||
master_entity = device
|
|
||||||
else:
|
|
||||||
for parent in devices:
|
|
||||||
if parent.fibaro_id == device.parent_fibaro_id:
|
|
||||||
master_entity = parent
|
|
||||||
if master_entity is None:
|
|
||||||
_LOGGER.error("Parent with id %s not found", device.parent_fibaro_id)
|
|
||||||
return
|
|
||||||
|
|
||||||
if "zwaveCompany" in master_entity.properties:
|
|
||||||
manufacturer = master_entity.properties.get("zwaveCompany")
|
|
||||||
else:
|
else:
|
||||||
manufacturer = None
|
manufacturer = None
|
||||||
|
|
||||||
self._device_infos[master_entity.fibaro_id] = DeviceInfo(
|
self._device_infos[main_device.fibaro_id] = DeviceInfo(
|
||||||
identifiers={(DOMAIN, master_entity.fibaro_id)},
|
identifiers={(DOMAIN, main_device.fibaro_id)},
|
||||||
manufacturer=manufacturer,
|
manufacturer=manufacturer,
|
||||||
name=master_entity.name,
|
name=main_device.name,
|
||||||
via_device=(DOMAIN, self.hub_serial),
|
via_device=(DOMAIN, self.hub_serial),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -239,6 +222,10 @@ class FibaroController:
|
|||||||
def _read_devices(self) -> None:
|
def _read_devices(self) -> None:
|
||||||
"""Read and process the device list."""
|
"""Read and process the device list."""
|
||||||
devices = self._fibaro_device_manager.get_devices()
|
devices = self._fibaro_device_manager.get_devices()
|
||||||
|
|
||||||
|
for main_device in find_master_devices(devices):
|
||||||
|
self._create_device_info(main_device)
|
||||||
|
|
||||||
self._device_map = {}
|
self._device_map = {}
|
||||||
last_climate_parent = None
|
last_climate_parent = None
|
||||||
last_endpoint = None
|
last_endpoint = None
|
||||||
@ -258,7 +245,6 @@ class FibaroController:
|
|||||||
if platform is None:
|
if platform is None:
|
||||||
continue
|
continue
|
||||||
device.unique_id_str = f"{slugify(self.hub_serial)}.{device.fibaro_id}"
|
device.unique_id_str = f"{slugify(self.hub_serial)}.{device.fibaro_id}"
|
||||||
self._create_device_info(device, devices)
|
|
||||||
self._device_map[device.fibaro_id] = device
|
self._device_map[device.fibaro_id] = device
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"%s (%s, %s) -> %s %s",
|
"%s (%s, %s) -> %s %s",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user