fix(entity): Ensure entities from multiple devices register correctly
- Modify sensor and switch setup to use `extend` instead of list reassignment. This prevents overwriting entities from previously processed devices. - Update `OwletBaseEntity` initialisation to correctly store the coordinator instance. - Refine device information retrieval using `getattr` for enhanced robustness and provide more specific device details (e.g., serial number in name). This change addresses a bug where, in setups with multiple Owlet devices, only the entities belonging to the last device in the configuration were registered. Using `extend` ensures all entities across all devices are correctly added. Device information presentation is also improved.
This commit is contained in:
@@ -106,11 +106,11 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
sensors = []
|
sensors = []
|
||||||
for coordinator in coordinators:
|
for coordinator in coordinators:
|
||||||
sensors = [
|
sensors.extend([
|
||||||
OwletBinarySensor(coordinator, sensor)
|
OwletBinarySensor(coordinator, sensor)
|
||||||
for sensor in SENSORS
|
for sensor in SENSORS
|
||||||
if sensor.key in coordinator.sock.properties
|
if sensor.key in coordinator.sock.properties
|
||||||
]
|
])
|
||||||
|
|
||||||
if OwletAwakeSensor.entity_description.key in coordinator.sock.properties:
|
if OwletAwakeSensor.entity_description.key in coordinator.sock.properties:
|
||||||
sensors.append(OwletAwakeSensor(coordinator))
|
sensors.append(OwletAwakeSensor(coordinator))
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class OwletBaseEntity(CoordinatorEntity[OwletCoordinator], Entity):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize the base entity."""
|
"""Initialize the base entity."""
|
||||||
super().__init__(coordinator)
|
super().__init__(coordinator)
|
||||||
|
self.coordinator = coordinator
|
||||||
self.sock = coordinator.sock
|
self.sock = coordinator.sock
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -26,9 +27,12 @@ class OwletBaseEntity(CoordinatorEntity[OwletCoordinator], Entity):
|
|||||||
"""Return the device info of the device."""
|
"""Return the device info of the device."""
|
||||||
return DeviceInfo(
|
return DeviceInfo(
|
||||||
identifiers={(DOMAIN, self.sock.serial)},
|
identifiers={(DOMAIN, self.sock.serial)},
|
||||||
name="Owlet Baby Care Sock",
|
name=f"Owlet Sock {self.sock.serial}",
|
||||||
manufacturer=MANUFACTURER,
|
connections={("mac", getattr(self.sock, "mac", "unknown"))},
|
||||||
model=self.sock.model,
|
suggested_area="Nursery",
|
||||||
sw_version=self.sock.sw_version,
|
configuration_url="https://my.owletcare.com/",
|
||||||
hw_version=f"{self.sock.version}r{self.sock.revision}",
|
manufacturer="Owlet Baby Care",
|
||||||
|
model=getattr(self.sock, "model", None),
|
||||||
|
sw_version=getattr(self.sock, "sw_version", None),
|
||||||
|
hw_version=getattr(self.sock, "hw_version", "3r8"),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -115,11 +115,11 @@ async def async_setup_entry(
|
|||||||
sensors = []
|
sensors = []
|
||||||
|
|
||||||
for coordinator in coordinators:
|
for coordinator in coordinators:
|
||||||
sensors = [
|
sensors.extend([
|
||||||
OwletSensor(coordinator, sensor)
|
OwletSensor(coordinator, sensor)
|
||||||
for sensor in SENSORS
|
for sensor in SENSORS
|
||||||
if sensor.key in coordinator.sock.properties
|
if sensor.key in coordinator.sock.properties
|
||||||
]
|
])
|
||||||
|
|
||||||
if OwletSleepSensor.entity_description.key in coordinator.sock.properties:
|
if OwletSleepSensor.entity_description.key in coordinator.sock.properties:
|
||||||
sensors.append(OwletSleepSensor(coordinator))
|
sensors.append(OwletSleepSensor(coordinator))
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ async def async_setup_entry(
|
|||||||
|
|
||||||
switches = []
|
switches = []
|
||||||
for coordinator in coordinators:
|
for coordinator in coordinators:
|
||||||
switches = [OwletBaseSwitch(coordinator, switch) for switch in SWITCHES]
|
switches.extend([OwletBaseSwitch(coordinator, switch) for switch in SWITCHES])
|
||||||
async_add_entities(switches)
|
async_add_entities(switches)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user