From my understanding and research, each DALI command consists of 2 8 bit parts one for addressing and one for the commands which are sent one by one, enter image description here

but there are commands above 255 which are more than 8 bits of data as shown below image.

Commands above 257

I am having a hard time figuring out how we can send these commands. for example for setting DTR1 the command number 273 should be sent. So how we can send these commands (above 255) as 8 bit?


1 Answer 1


The diagram only shows the correct format for the commands 0 to 255, and Direct Arc Power, which are the most common commands to use once a system has been commissioned (short addresses assigned).

The commands above 255 do not use the format where the first byte is the address, instead the first byte is the command. Most of these commands are not addressed ie they are broadcast: received by all control gear. Notice that the Y bit is 1 in these commands. A few of them have the address in the second byte. Unfortunately DALI is not consistent in this respect.

Eg Commands 267 and 268 Program Short Address and Verify Short Address use the second byte, but the address is left shifted one place. The Search Address commands use the second byte for the search address which is 24 bits so is sent as High, Mid and Low bytes.

These can be distinguished from commands 0-255 by the fact that their "A" bits, the middle 6 bits of the first byte, are not valid address formats. Recall that the valid address formats are:

Short Address 0 to 63:  0AAAAAAS
Group Address 0-15:     100AAAAS
Broadcast:              1111111S

Therefore if the first byte starts 101... or 110... it must be a command above 255.

This applies to all device types.

  • \$\begingroup\$ How about command 273 for setting DTR1? suppose if I want to set DTR1 as 10 how the command should be sent \$\endgroup\$ Jan 26, 2022 at 9:25
  • \$\begingroup\$ This includes DTR commands, so you set the DTR1 value in all the gear with that command, you cannot set different DTR(0,1,2) values in different gear. You have to use the command which takes the DTR value to apply it only to certain addresses. eg Command 42 Store DTR0 as MAX Level would have a Short, Group or Broadcast address. \$\endgroup\$
    – Martin
    Jan 26, 2022 at 9:28
  • \$\begingroup\$ so how i need to convert these commands to the first byte? is there any specific info for that? \$\endgroup\$ Jan 26, 2022 at 9:37
  • \$\begingroup\$ The first byte is shown in Hex in the second column in the table extract eg Enable Device Type is 0xC1 which is hex, 11000001 in binary. It's not difficult to write functions which convert command numbers into these formats but it's outside the scope of this question and not on topic for electronics.stackexchange.com because by that point it is a programming rather than protocol question. \$\endgroup\$
    – Martin
    Jan 26, 2022 at 9:43
  • \$\begingroup\$ Got it Thank you very much \$\endgroup\$ Jan 26, 2022 at 10:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.