From 8d49b11556b8de9c998a8d896588bccf9598df55 Mon Sep 17 00:00:00 2001 From: Simon Spielmann Date: Sun, 9 Jun 2024 20:58:58 +0200 Subject: [PATCH] Use device.Id instead of device.DiscoveryId to fix playsound (#16846) Signed-off-by: Simon Spielmann Signed-off-by: Ciprian Pascu --- .../internal/handler/ICloudDeviceHandler.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudDeviceHandler.java b/bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudDeviceHandler.java index 87b0960804d..358a9ade30c 100644 --- a/bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudDeviceHandler.java +++ b/bundles/org.openhab.binding.icloud/src/main/java/org/openhab/binding/icloud/internal/handler/ICloudDeviceHandler.java @@ -62,6 +62,8 @@ public class ICloudDeviceHandler extends BaseThingHandler implements ICloudDevic private @Nullable String deviceId; + private @Nullable ICloudDeviceInformation deviceInformationRecord; + public ICloudDeviceHandler(Thing thing) { super(thing); } @@ -70,6 +72,7 @@ public class ICloudDeviceHandler extends BaseThingHandler implements ICloudDevic public void deviceInformationUpdate(List deviceInformationList) { ICloudDeviceInformation deviceInformationRecord = getDeviceInformationRecord(deviceInformationList); if (deviceInformationRecord != null) { + this.deviceInformationRecord = deviceInformationRecord; if (deviceInformationRecord.getDeviceStatus() == 200) { updateStatus(ONLINE); } else { @@ -137,12 +140,18 @@ public class ICloudDeviceHandler extends BaseThingHandler implements ICloudDevic if (channelId.equals(FIND_MY_PHONE)) { if (command == OnOffType.ON) { try { - final String deviceId = this.deviceId; - if (deviceId == null) { - this.logger.debug("Can't send Find My Device request, because deviceId is null!"); + + if (deviceInformationRecord == null) { + this.logger + .debug("Can't send Find My Device request, because deviceInformationRecord is null!"); return; } - bridgeHandler.findMyDevice(deviceId); + if (deviceInformationRecord.getId() == null) { + this.logger.debug( + "Can't send Find My Device request, because deviceInformationRecord.getId() is null!"); + return; + } + bridgeHandler.findMyDevice(deviceInformationRecord.getId()); } catch (IOException | InterruptedException e) { this.logger.warn("Unable to execute find my device request", e); } @@ -183,7 +192,6 @@ public class ICloudDeviceHandler extends BaseThingHandler implements ICloudDevic private @Nullable ICloudDeviceInformation getDeviceInformationRecord( List deviceInformationList) { this.logger.debug("Device: [{}]", this.deviceId); - for (ICloudDeviceInformation deviceInformationRecord : deviceInformationList) { String currentId = deviceInformationRecord.getDeviceDiscoveryId(); if (currentId == null || currentId.isBlank()) {