*/
package org.openhab.binding.hue.internal;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
* @return all lights pseudo group
*/
public Group getAllGroup() {
- requireAuthentication();
-
return new Group();
}
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;
}
}
} 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();
}