DALI: native tunable-white (DT8 Tc) light for single-address CCT drivers + HA color_temp discovery
Author: PaTara43Created Jul 1, 2026Updated Sep 15, 2026
Labelsstalefeature request (devs?)
PROBLEM DESCRIPTION
Single-address DALI-2 DT8 colour-temperature (Tc) drivers (tunable white) cannot be controlled by colour temperature through the Tasmota light / Home Assistant discovery.
DaliChannels 2targets two separate DT6 gears (cold + warm as independent addresses). It does not fit a driver that is a single DALI address doing warm/cool mixing internally via DT8 Tc (SET TEMPORARY COLOUR TEMPERATURE Tc).- As a result the auto-discovered HA light is brightness-only (
supported_color_modes: ["brightness"]), with no way to set colour temperature from HA.
Low-level control already works via raw commands:
DaliSend8 1,0xE7,<mired> # SET TEMPORARY COLOUR TEMPERATURE Tc (Tasmota loads DTR0/DTR1 from arg#3)
DaliSend8 1,0xE2 # ACTIVATESo the gear and the firmware primitives are fine — only the light-module / discovery mapping for single-address DT8 Tc is missing.
REQUESTED INFORMATION
Make sure your have performed every step and checked the applicable boxes before submitting your issue. Thank you!
- Read the Contributing Guide and Policy and the Code of Conduct
- Searched the problem in issues
- Searched the problem in discussions
- Searched the problem in the docs
- Searched the problem in the chat
- Problem is not scripter related, in this case open a discussion and tag gemu2015
- Device used (e.g., Sonoff Basic): Shelly DALI Dimmer Gen3
- Tasmota binary firmware version number used: 15.5.0
- Pre-compiled
- Self-compiled
- Flashing tools used: webflasher
- Provide the output of command:
Backlog Template; Module; GPIO 255:
Configuration output here:
14:09:26.917 CMD: Backlog Template; Module; GPIO 255
14:09:26.942 MQT: stat/tasmota_27A680/RESULT = {"NAME":"Shelly DALI Dimmer Gen3","ARCH":"ESP32C3","GPIO":[34,4736,0,3840,11360,11392,128,129,0,1,576,0,0,0,0,0,0,0,0,1,1,1],"FLAG":0,"BASE":1}
14:09:27.172 MQT: stat/tasmota_27A680/RESULT = {"Module":{"0":"Shelly DALI Dimmer Gen3"}}
14:09:27.421 MQT: stat/tasmota_27A680/RESULT = {"GPIO0":{"Button3":34},"GPIO1":{"ADC Temp1":4736},"GPIO2":{"None":0},"GPIO3":{"Output Hi":3840},"GPIO4":{"Dali RX_i":11360},"GPIO5":{"Dali TX_i":11392},"GPIO6":{"Button_in1":128},"GPIO7":{"Button_in2":129},"GPIO8":{"None":0},"GPIO9":{"None":0},"GPIO10":{"LedLink_i":576},"GPIO11":{"None":0},"GPIO12":{"None":0},"GPIO13":{"None":0},"GPIO18":{"None":0},"GPIO19":{"None":0},"GPIO20":{"None":0},"GPIO21":{"None":0}}
- If using rules, provide the output of this command:
Backlog Rule1; Rule2; Rule3:
Rules output here:
- Provide the output of this command:
Status 0:
STATUS 0 output here:
14:10:34.026 CMD: Status 0
14:10:34.030 MQT: stat/tasmota_27A680/STATUS = {"Status":{"Module":0,"DeviceName":"Tasmota","FriendlyName":["Tasmota"],"Topic":"tasmota_27A680","ButtonTopic":"","Power":"0","PowerLock":"0","PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0,"StatusRetain":0}}
14:10:34.034 MQT: stat/tasmota_27A680/STATUS1 = {"StatusPRM":{"Baudrate":115200,"SerialConfig":"8N1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota32/release/tasmota32c3.bin","RestartReason":"Software reset CPU","Uptime":"0T02:48:28","StartupUTC":"2026-07-01T10:22:06","Sleep":50,"CfgHolder":4617,"BootCount":7,"BCResetTime":"2026-07-01T09:58:29","SaveCount":65}}
14:10:34.037 MQT: stat/tasmota_27A680/STATUS2 = {"StatusFWR":{"Version":"15.5.0(release-tasmota32)","BuildDateTime":"2026-06-22T14:10:25","Core":"3.3.8","SDK":"5.5.4.260407","CpuFrequency":160,"Hardware":"ESP32-C3 v0.4","CR":"466/699"}}
14:10:34.040 MQT: stat/tasmota_27A680/STATUS3 = {"StatusLOG":{"SerialLog":2,"WebLog":2,"MqttLog":0,"FileLog":0,"SysLog":0,"LogHost":"","LogPort":514,"SSId":["Xiaomi_2CDB",""],"TelePeriod":300,"Resolution":"558180C0","SetOption":["0000800B","1405C80001000600003C5A0A192800000000","00000080","00006000","00000000","00000000"]}}
14:10:34.049 MQT: stat/tasmota_27A680/STATUS4 = {"StatusMEM":{"ProgramSize":2096,"Free":783,"Heap":166,"StackLowMark":3,"PsrMax":0,"PsrFree":0,"ProgramFlashSize":8192,"FlashSize":8192,"FlashChipId":"1740C8","FlashFrequency":80,"FlashMode":"DIO","Features":["0809","9F9AD7DF","0015A001","B7F7BFCF","05DA9BC4","E0360DC7","480840D2","20200000","D4BC482D","810A80F1","00200815"],"Drivers":"1,2,!3,4,!5,7,!8,9,10,11,12,!14,!16,!17,!20,!21,!24,26,!27,29,!34,!35,38,50,52,!59,!60,62,!63,!66,!67,!68,!71,!73,75,82,!86,!87,!88,!91,!121","Sensors":"1,2,3,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,26,31,34,37,39,40,42,43,45,51,52,55,56,58,59,64,66,67,74,85,92,95,98,103,105,109,119,127","I2CDriver":"7,8,9,10,11,12,13,14,15,17,18,20,24,29,31,36,41,42,44,46,48,58,62,65,69,76,77,82,89,97"}}
14:10:34.057 MQT: stat/tasmota_27A680/STATUS5 = {"StatusNET":{"Hostname":"tasmota-27A680-1664","IPAddress":"192.168.31.31","Gateway":"192.168.31.1","Subnetmask":"255.255.255.0","DNSServer1":"192.168.31.1","DNSServer2":"0.0.0.0","Mac":"80:B5:4E:27:A6:80","IP6Global":"","IP6Local":"fe80::82b5:4eff:fe27:a680%st2","Ethernet":{"Hostname":"","IPAddress":"0.0.0.0","Gateway":"0.0.0.0","Subnetmask":"0.0.0.0","DNSServer1":"192.168.31.1","DNSServer2":"0.0.0.0","Mac":"00:00:00:00:00:00","IP6Global":"","IP6Local":""},"Webserver":2,"HTTP_API":0,"WifiConfig":4,"WifiPower":19.0}}
14:10:34.061 MQT: stat/tasmota_27A680/STATUS6 = {"StatusMQT":{"MqttHost":"192.168.31.111","MqttPort":1883,"MqttClientMask":"DVES_%06X","MqttClient":"DVES_27A680","MqttUser":"connectivity","MqttCount":1,"MqttTLS":0,"MAX_PACKET_SIZE":1200,"KEEPALIVE":30,"SOCKET_TIMEOUT":4}}
14:10:34.068 MQT: stat/tasmota_27A680/STATUS7 = {"StatusTIM":{"UTC":"2026-07-01T13:10:34Z","Local":"2026-07-01T14:10:34","StartDST":"2026-03-29T02:00:00","EndDST":"2026-10-25T03:00:00","Timezone":"+01:00","Sunrise":"04:51","Sunset":"20:56"}}
14:10:34.078 MQT: stat/tasmota_27A680/STATUS10 = {"StatusSNS":{"Time":"2026-07-01T14:10:34","ANALOG":{"Temperature1":46.1},"DALI":{"Power":"ON","Dimmer":1,"Address":0,"Command":180},"TempUnit":"C"}}
14:10:34.084 MQT: stat/tasmota_27A680/STATUS11 = {"StatusSTS":{"Time":"2026-07-01T14:10:34","Uptime":"0T02:48:28","UptimeSec":10108,"Heap":168,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Berry":{"HeapUsed":4,"Objects":46},"POWER":"OFF","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Xiaomi_2CDB","BSSId":"3C:CD:57:72:2C:DC","Channel":1,"Mode":"HT20","RSSI":94,"Signal":-53,"LinkCount":1,"Downtime":"0T00:00:04"},"Hostname":"tasmota-27A680-1664","IPAddress":"192.168.31.31"}}
- Set
weblogto 4 and then, when you experience your issue, provide the output of the Console log:
Console output here:
actually sending working commands
14:11:21.483 CMD: weblog 4
14:11:21.487 MQT: stat/tasmota_27A680/RESULT = {"WebLog":4}
14:11:21.885 CFG: Saved, Count 66, Bytes 4096
14:11:35.054 WIF: Checking connection...
14:11:46.847 CMD: DaliSend8 1,0xE7,154
14:11:46.848 SRC: WebConsole from 192.168.31.126
14:11:46.848 CMD: Grp 0, Cmd 'DALISEND', Idx 8, Len 10, Pld 1, Data '1,0xE7,154'
14:11:46.851 DLI: Tx 0x0000A39A 16 DT0
14:11:46.868 DLI: Tx 0x00000198 16 DT0
14:11:46.913 DLI: Rx 0x0000009A 8 response
14:11:46.913 DLI: Tx 0x0000C300 16 DT0
14:11:46.943 DLI: Tx 0x0000019C 16 DT0
14:11:46.989 DLI: Rx 0x00000000 8 response
14:11:46.989 DLI: Tx 0x0000C108 16 DT8
14:11:47.020 DLI: Tx 0x000001E7 16 DT8 twice
14:11:47.081 MQT: stat/tasmota_27A680/RESULT = {"DaliSend":"Done"}
14:11:55.052 WIF: Checking connection...
14:11:55.250 CMD: DaliSend8 1,0xE2
14:11:55.251 SRC: WebConsole from 192.168.31.126
14:11:55.251 CMD: Grp 0, Cmd 'DALISEND', Idx 8, Len 6, Pld 1, Data '1,0xE2'
14:11:55.254 DLI: Tx 0x0000C108 16 DT8
14:11:55.273 DLI: Tx 0x000001E2 16 DT8 twice
14:11:55.333 MQT: stat/tasmota_27A680/RESULT = {"DaliSend":"Done"}
14:12:00.944 CMD: DaliSend8 1,0xE7,370
14:12:00.945 SRC: WebConsole from 192.168.31.126
14:12:00.945 CMD: Grp 0, Cmd 'DALISEND', Idx 8, Len 10, Pld 1, Data '1,0xE7,370'
14:12:00.948 DLI: Tx 0x0000A372 16 DT0 twice
14:12:00.994 DLI: Tx 0x00000198 16 DT0
14:12:01.039 DLI: Rx 0x00000072 8 response
14:12:01.039 DLI: Tx 0x0000C301 16 DT0
14:12:01.069 DLI: Tx 0x0000019C 16 DT0
14:12:01.116 DLI: Rx 0x00000001 8 response
14:12:01.116 DLI: Tx 0x0000C108 16 DT8
14:12:01.144 DLI: Tx 0x000001E7 16 DT8 twice
14:12:01.205 MQT: stat/tasmota_27A680/RESULT = {"DaliSend":"Done"}
14:12:02.201 CMD: DaliSend8 1,0xE2
14:12:02.202 SRC: WebConsole from 192.168.31.126
14:12:02.202 CMD: Grp 0, Cmd 'DALISEND', Idx 8, Len 6, Pld 1, Data '1,0xE2'
14:12:02.205 DLI: Tx 0x0000C108 16 DT8
14:12:02.222 DLI: Tx 0x000001E2 16 DT8 twice
14:12:02.283 MQT: stat/tasmota_27A680/RESULT = {"DaliSend":"Done"}TO REPRODUCE
connect a dt8 DALI device to tasmota-flashed controller. Scan the Bus and try to control CT
EXPECTED BEHAVIOUR
CT slider on main screen
SCREENSHOTS
ADDITIONAL CONTEXT
Add any other context about the problem here.
(Please, remember to close the issue when the problem has been addressed)
Source: arendst/Tasmota