Skip to content

[deconz] missing channel color_temperature #18461

@skylord73

Description

@skylord73

Expected Behavior

For devices of type Extended color light which report "modes": ["ct", "hs", "xy"] and have valid ctmin, ctmax, and colorcapabilities, the color_temperature channel should be exposed automatically as part of the discovered Thing and a new channel brighness_ct should be created in the deCONZ binding.

Channel Behavior

The device (GLEDOPTO GL-C-007P) reports:

{
  "capabilities": {
    "alerts": [
      "none",
      "select",
      "lselect"
    ],
    "color": {
      "ct": {
        "max": 500,
        "min": 158
      },
      "effects": [
        "none",
        "colorloop"
      ],
      "modes": [
        "ct",
        "hs",
        "xy"
      ]
    },
    "sleeper": false
  },
  "colorcapabilities": 31,
  "config": {
    "groups": [
      "0",
      "1",
      "2"
    ]
  },
  "ctmax": 500,
  "ctmin": 158,
  "ddf_hash": null,
  "ddf_policy": "latest_prefer_stable",
  "etag": "637a44b303a511d5b9279d5e01688d3d",
  "hascolor": true,
  "lastannounced": null,
  "lastseen": "2025-03-29T09:22Z",
  "manufacturername": "GLEDOPTO",
  "modelid": "GL-C-007P",
  "name": "Led Corridoio Notte",
  "nwkaddress": 7671,
  "state": {
    "alert": "none",
    "bri": 254,
    "colormode": "hs",
    "ct": 363,
    "effect": "none",
    "hue": 0,
    "on": true,
    "reachable": true,
    "sat": 254,
    "xy": [0, 0]
  },
  "swversion": "20241206",
  "type": "Extended color light",
  "uniqueid": "a4:c1:38:89:fb:f3:c5:a3-0b"
}

The generated Thing (via inbox discovery) has these code:

UID: deconz:extendedcolorlight:000000000000:a4c13889fbf3c5a30b
label: Phoscon Led Corridoio Notte
thingTypeUID: deconz:extendedcolorlight
configuration:
  lastSeenPolling: 1440
  id: "11"
bridgeUID: deconz:deconz:000000000000
location: Corridoio Notte
channels:
  - id: color
    channelTypeUID: system:color
    label: Color
    description: Controls the color of the light
    configuration: {}
  - id: color_temperature
    channelTypeUID: system:color-temperature-abs
    label: Color Temperature
    description: Controls the color temperature of the light in Kelvin
    configuration: {}
  - id: ontime
    channelTypeUID: deconz:ontime
    label: On Time
    description: Time that the light stays on before switched off automatically (0=forever)
    configuration: {}
  - id: alert
    channelTypeUID: deconz:alert
    label: Alert
    configuration: {}
  - id: effect
    channelTypeUID: deconz:effect
    label: Effect Channel
    configuration: {}
  - id: last_seen
    channelTypeUID: deconz:last_seen
    label: Last Seen
    description: The date and time when the sensor was last seen.
    configuration: {}

the UI has these channels:

  • color
  • ontime
  • alert
  • effect
  • last_seen

But the expected color_temperature channel is missing, even though:

  • The device is in colormode: "ct" at discovery time
  • The capabilities clearly advertise support for ct

Creating a Number item manually linked to ...:color_temperature does work, and returns Kelvin values correctly converted from the reported CT (e.g., ct: 3632755 K). This confirms that the channel backend exists but is not exposed via UI or inbox Thing definition.

Brighness Behavior

Even if the hidden color_temperature channel works, the brightness control is not behaving correctly.

deConz API exposes two different values of state.bri depending of state.colormode.
If state.colormode : ct the state.bri report the brightness of the White channel (W), while in state.colormode : hs | xy the brighness is referred to RGB channels.

This is working fine if you have a white lamp with temperature (no color), but if you have both RGB+CT, then the binding handles the RGB channell with brighness, CT with the hidden channel, but not the CT brightness.

The results is the brigthness value in Color, depends on the last action, if you change che color it is the right one, if you change the temperature it is the W channel brightness

Possible Solution

When object has CT and others channels, create a kind of Followup between the two state.bri:

  • when brightness is changed in RGB channels:
 {state.colormode: hs|xy, state.bri <value>}

a second command shold be executed to change the one in CT channels with the same value:

{state.colormode: ct, state.bri <value>}

and viceversa.
this maintain compatibility with HomeKit that has only one brightness for color and temperature

Steps to Reproduce (for Bugs)

  1. Create GLEDOPTO GL-C-007P or GL-G-004P in deCONZ/Phoscon
  2. Discover the Thing from OpenHAB inbox
  3. Observe that the channel color_temperature is missing
  4. Link an item manually to the expected UID ...:color_temperature and observe that it works correctly

Context

I'm trying to control both color and white brightness of the GL-C-007P or GL-G-004P via OpenHAB. The inability to access the color_temperature channel from the UI complicates both automation and HomeKit integration.

Your Environment

  • Version used: openHAB 4.3.3 (Main UI Commit 1cc0b830)
  • Add-on: org.openhab.binding.deconz (latest from addons 4.3)
  • Environment name and version: Java 17, DSM 7.2 (Synology)
  • Operating System: Linux (Synology NAS)

Metadata

Metadata

Assignees

Labels

bugAn unexpected problem or unintended behavior of an add-on

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions