Deconz colortemperaturelight and google assistant

Hi,
I’m happy because I’m doing some progress in my OpenHAB journey.
Now I’m able to turn on and off a Deconz color temperature light with GoogleAssistant, I’m also able to set the light intensity, but I’m not able to set the color temperature light.

With this item definition:

Color pippo "pippo" { channel="deconz:colortemperaturelight:00212E02482D:7cb03eaa00a95bf503:brightness", ga="Light" [ colorTemperatureRange="2700,6999" ]}

I have no problem in the log and the light works well but I’m not able to set the color temperature light.
If I say: OK google set pippo to 6000°K this is the log:

2022-10-28 15:20:26.834 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'pippo' received command 30,7,1

2022-10-28 15:20:26.836 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'pippo' predicted to become 30,7,1

2022-10-28 15:20:26.847 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'pippo' changed from 0,0,1 to 30,7,1

but the color of the light don’t change.
If I set the item in this other way:

Color pippo "pippo" { channel="deconz:colortemperaturelight:00212E02482D:7cb03eaa00a95bf503:color_temperature", ga="Light" [ colorTemperatureRange="2700,6999" ]}

there are a lot of “errors” or warning in the logs, and the same if I say at google any command don’t works also if I see in the log that something change.
Any idea?
Thank you!

2022-10-28 15:21:45.344 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'prova.items'

2022-10-28 15:21:45.408 [ERROR] [ore.common.registry.AbstractRegistry] - Cannot inform the listener "org.openhab.core.thing.internal.ChannelLinkNotifier@19815f8" about the "ADDED" event: Value must be between 0 and 100

java.lang.IllegalArgumentException: Value must be between 0 and 100

	at org.openhab.core.library.types.PercentType.validateValue(PercentType.java:93) ~[?:?]

	at org.openhab.core.library.types.PercentType.<init>(PercentType.java:88) ~[?:?]

	at org.openhab.core.library.types.DecimalType.as(DecimalType.java:226) ~[?:?]

	at org.openhab.core.internal.items.ItemStateConverterImpl.convertToAcceptedState(ItemStateConverterImpl.java:64) ~[?:?]

	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.sendUpdate(ProfileCallbackImpl.java:121) ~[?:?]

	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onStateUpdateFromHandler(SystemDefaultProfile.java:53) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.lambda$13(CommunicationManager.java:566) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.lambda$15(CommunicationManager.java:586) ~[?:?]

	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.handleCallFromHandler(CommunicationManager.java:582) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.stateUpdated(CommunicationManager.java:564) ~[?:?]

	at org.openhab.core.thing.internal.ThingManagerImpl$1.stateUpdated(ThingManagerImpl.java:176) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:268) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:287) ~[?:?]

	at org.openhab.binding.deconz.internal.handler.LightThingHandler.valueUpdated(LightThingHandler.java:418) ~[?:?]

	at org.openhab.binding.deconz.internal.handler.LightThingHandler.handleCommand(LightThingHandler.java:155) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.channelLinked(BaseThingHandler.java:180) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.lambda$3(ChannelLinkNotifier.java:72) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.call(ChannelLinkNotifier.java:96) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.added(ChannelLinkNotifier.java:72) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.added(ChannelLinkNotifier.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.notifyListeners(AbstractRegistry.java:367) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.notifyListenersAboutAddedElement(AbstractRegistry.java:400) ~[?:?]

	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutAddedElement(ItemChannelLinkRegistry.java:138) ~[?:?]

	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutAddedElement(ItemChannelLinkRegistry.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:175) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:60) ~[?:?]

	at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:79) ~[?:?]

	at org.openhab.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:83) ~[?:?]

	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.createItemChannelLink(GenericItemChannelLinkProvider.java:106) ~[?:?]

	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.processBindingConfiguration(GenericItemChannelLinkProvider.java:76) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:373) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:342) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:213) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:408) ~[?:?]

	at org.openhab.core.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:301) ~[?:?]

	at org.openhab.core.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:128) ~[?:?]

	at org.openhab.core.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:255) ~[?:?]

	at org.openhab.core.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:318) ~[?:?]

	at org.openhab.core.service.WatchQueueReader.lambda$2(WatchQueueReader.java:275) ~[?:?]

	at java.lang.Iterable.forEach(Iterable.java:75) [?:?]

	at org.openhab.core.service.WatchQueueReader.run(WatchQueueReader.java:275) [bundleFile:?]

	at java.lang.Thread.run(Thread.java:829) [?:?]

==> /var/log/openhab/events.log <==

2022-10-28 15:21:45.403 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'pippo' changed from NULL to 0,0,1

==> /var/log/openhab/openhab.log <==

2022-10-28 15:21:46.433 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'prova.items'

2022-10-28 15:21:46.465 [ERROR] [ore.common.registry.AbstractRegistry] - Cannot inform the listener "org.openhab.core.thing.internal.ChannelLinkNotifier@19815f8" about the "UPDATED" event: Value must be between 0 and 100

java.lang.IllegalArgumentException: Value must be between 0 and 100

	at org.openhab.core.library.types.PercentType.validateValue(PercentType.java:93) ~[?:?]

	at org.openhab.core.library.types.PercentType.<init>(PercentType.java:88) ~[?:?]

	at org.openhab.core.library.types.DecimalType.as(DecimalType.java:226) ~[?:?]

	at org.openhab.core.internal.items.ItemStateConverterImpl.convertToAcceptedState(ItemStateConverterImpl.java:64) ~[?:?]

	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.sendUpdate(ProfileCallbackImpl.java:121) ~[?:?]

	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onStateUpdateFromHandler(SystemDefaultProfile.java:53) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.lambda$13(CommunicationManager.java:566) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.lambda$15(CommunicationManager.java:586) ~[?:?]

	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.handleCallFromHandler(CommunicationManager.java:582) ~[?:?]

	at org.openhab.core.thing.internal.CommunicationManager.stateUpdated(CommunicationManager.java:564) ~[?:?]

	at org.openhab.core.thing.internal.ThingManagerImpl$1.stateUpdated(ThingManagerImpl.java:176) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:268) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.updateState(BaseThingHandler.java:287) ~[?:?]

	at org.openhab.binding.deconz.internal.handler.LightThingHandler.valueUpdated(LightThingHandler.java:418) ~[?:?]

	at org.openhab.binding.deconz.internal.handler.LightThingHandler.handleCommand(LightThingHandler.java:155) ~[?:?]

	at org.openhab.core.thing.binding.BaseThingHandler.channelLinked(BaseThingHandler.java:180) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.lambda$3(ChannelLinkNotifier.java:72) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.call(ChannelLinkNotifier.java:96) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.added(ChannelLinkNotifier.java:72) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.updated(ChannelLinkNotifier.java:88) ~[?:?]

	at org.openhab.core.thing.internal.ChannelLinkNotifier.updated(ChannelLinkNotifier.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.notifyListeners(AbstractRegistry.java:387) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.notifyListenersAboutUpdatedElement(AbstractRegistry.java:408) ~[?:?]

	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutUpdatedElement(ItemChannelLinkRegistry.java:150) ~[?:?]

	at org.openhab.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutUpdatedElement(ItemChannelLinkRegistry.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:314) ~[?:?]

	at org.openhab.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:1) ~[?:?]

	at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:66) ~[?:?]

	at org.openhab.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:91) ~[?:?]

	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.createItemChannelLink(GenericItemChannelLinkProvider.java:108) ~[?:?]

	at org.openhab.core.model.thing.internal.GenericItemChannelLinkProvider.processBindingConfiguration(GenericItemChannelLinkProvider.java:76) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:373) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:342) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:213) ~[?:?]

	at org.openhab.core.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:408) ~[?:?]

	at org.openhab.core.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:301) ~[?:?]

	at org.openhab.core.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:139) ~[?:?]

	at org.openhab.core.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:255) ~[?:?]

	at org.openhab.core.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:318) ~[?:?]

	at org.openhab.core.service.WatchQueueReader.lambda$5(WatchQueueReader.java:357) ~[?:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]

	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

	at java.lang.Thread.run(Thread.java:829) [?:?]

==> /var/log/openhab/events.log <==

2022-10-28 15:22:27.576 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'pippo' received command 30,7,1

2022-10-28 15:22:27.578 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'pippo' predicted to become 30,7,1

2022-10-28 15:22:27.586 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'pippo' changed from 0,0,1 to 30,7,1

2022-10-28 15:23:14.134 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'pippo' received command 100

2022-10-28 15:23:14.138 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'pippo' predicted to become 100

2022-10-28 15:23:14.141 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'pippo' changed from 30,7,1 to 30,7,100

2022-10-28 15:23:23.675 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'pippo' received command OFF

2022-10-28 15:23:23.676 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'pippo' predicted to become OFF

2022-10-28 15:23:23.685 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'pippo' changed from 30,7,100 to 30,7,0

Regarding to Dresden Elektronik deCONZ - Bindings | openHAB you would probably need to specify the “color” channel. But this seems to be not available for the “colortemperaturelight”.

I would recommend to use a Group item with ga="specialcolorlight" and use the brightness and color_temperature channel items as members.
Please have a look at openhab-google-assistant/USAGE.md at main · openhab/openhab-google-assistant · GitHub for more details on the configuration.

Sorry @michikrug I don’t understand.
Here is the color channel:

Color pippo "pippo" { channel="deconz:colortemperaturelight:00212E02482D:7cb03eaa00a95bf503:color_temperature", ga="Light" [ colorTemperatureRange="2700,6999" ]}

with the slider as widget I’m able to set the color temperature, I’m not able to do with the google assistant also if I say a command and google say ok.

Regarding a link that you wrote:

I try but did’nt work. Can you explain please where I have to define the channel of the item in that structure?

Group  lightGroup { ga="SpecialColorLight" [ colorUnit="kelvin", colorTemperatureRange="2000,9000" ] }
Switch powerItem            (lightGroup) { ga="lightPower" }
Dimmer brightnessItem       (lightGroup) { ga="lightBrightness" }
Color  colorItem            (lightGroup) { ga="lightColor" }
Number colorTemperatureItem (lightGroup) { ga="lightColorTemperature" }

Thank you.

Sorry looks like works thank a lot @michikrug …but probabbly I will come with new questions :grinning:

Group  pippo { ga="SpecialColorLight" [ colorUnit="kelvin", colorTemperatureRange="2000,9000" ] }
Dimmer brightnessItem       (pippo) { channel="deconz:colortemperaturelight:00212E02482D:7cb03eaa00a95bf503:brightness", ga="lightBrightness" }
Number colorTemperatureItem (pippo) { channel="deconz:colortemperaturelight:00212E02482D:7cb03eaa00a95bf503:color_temperature", ga="lightColorTemperature" }
1 Like