diff --git a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java index 543a851f424fa..6c17917758a49 100644 --- a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java +++ b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java @@ -138,6 +138,9 @@ private void addLight(String lightID, LightMessage light) { case COLOR_DIMMABLE_LIGHT: thingTypeUID = THING_TYPE_COLOR_LIGHT; break; + case COLOR_LIGHT: + thingTypeUID = (light.ctmin != null) ?THING_TYPE_EXTENDED_COLOR_LIGHT :THING_TYPE_COLOR_LIGHT; + break; case EXTENDED_COLOR_LIGHT: thingTypeUID = THING_TYPE_EXTENDED_COLOR_LIGHT; break; diff --git a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/LightThingHandler.java b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/LightThingHandler.java index 7e84b8dbc8755..8c1c0df1f3e89 100644 --- a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/LightThingHandler.java +++ b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/LightThingHandler.java @@ -274,16 +274,16 @@ private void valueUpdated(String channelId, LightState newState) { case CHANNEL_COLOR: if (on != null && on == false) { updateState(channelId, OnOffType.OFF); - } else { - double @Nullable [] xy = newState.xy; - Integer hue = newState.hue; - Integer sat = newState.sat; - if (hue != null && sat != null && bri != null) { - updateState(channelId, - new HSBType(new DecimalType(hue / HUE_FACTOR), toPercentType(sat), toPercentType(bri))); - } else if (xy != null && xy.length == 2) { - updateState(channelId, HSBType.fromXY((float) xy[0], (float) xy[1])); + } else if (bri != null && newState.colormode != null && newState.colormode.equals("xy")) { + final double @Nullable [] xy = newState.xy; + if (xy != null && xy.length == 2) { + HSBType color = HSBType.fromXY((float) xy[0], (float) xy[1]); + updateState(channelId, new HSBType(color.getHue(), color.getSaturation(), toPercentType(bri))); } + } else if (bri != null && newState.hue != null && newState.sat != null) { + final Integer hue = newState.hue; + final Integer sat = newState.sat; + updateState(channelId, new HSBType(new DecimalType(hue / HUE_FACTOR), toPercentType(sat), toPercentType(bri))); } break; case CHANNEL_BRIGHTNESS: diff --git a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/types/LightType.java b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/types/LightType.java index 3d979ef6fd143..578e069c0784b 100644 --- a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/types/LightType.java +++ b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/types/LightType.java @@ -30,6 +30,7 @@ public enum LightType { ON_OFF_LIGHT("On/Off light"), ON_OFF_PLUGIN_UNIT("On/Off plug-in unit"), EXTENDED_COLOR_LIGHT("Extended color light"), + COLOR_LIGHT("Color light"), COLOR_DIMMABLE_LIGHT("Color dimmable light"), COLOR_TEMPERATURE_LIGHT("Color temperature light"), DIMMABLE_LIGHT("Dimmable light"),