diff --git a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/HueBridge.java b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/HueBridge.java index 463ed8cb70a..4a42c69e262 100644 --- a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/HueBridge.java +++ b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/HueBridge.java @@ -12,6 +12,7 @@ */ package org.openhab.binding.hue.internal; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; @@ -425,8 +426,6 @@ public class HueBridge { * @return all lights pseudo group */ public Group getAllGroup() { - requireAuthentication(); - return new Group(); } @@ -448,14 +447,21 @@ public class HueBridge { if (groupMap.get("0") == null) { // Group 0 is not returned, we create it as in fact it exists - groupList.add(getGroup(new Group())); + try { + groupList.add(getGroup(getAllGroup())); + } catch (FileNotFoundException e) { + // We need a special exception handling here to further support deCONZ REST API. On deCONZ group "0" may + // not exist and the APIs will return a different HTTP status code if requesting a non existing group + // (Hue: 200, deCONZ: 404). + // see https://github.com/openhab/openhab-addons/issues/9175 + logger.debug("Cannot find AllGroup with id \"0\" on Hue Bridge. Skipping it."); + } } - for (String id : groupMap.keySet()) { - FullGroup group = groupMap.get(id); + groupMap.forEach((id, group) -> { group.setId(id); groupList.add(group); - } + }); return groupList; } diff --git a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueBridgeHandler.java b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueBridgeHandler.java index 00d5dce2316..9c3cd28ce9d 100644 --- a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueBridgeHandler.java +++ b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueBridgeHandler.java @@ -140,7 +140,7 @@ public class HueBridgeHandler extends ConfigStatusBridgeHandler implements HueCl } } catch (ApiException | IOException e) { if (hueBridge != null && lastBridgeConnectionState) { - logger.debug("Connection to Hue Bridge {} lost.", hueBridge.getIPAddress()); + logger.debug("Connection to Hue Bridge {} lost: {}", hueBridge.getIPAddress(), e.getMessage(), e); lastBridgeConnectionState = false; onConnectionLost(); }