-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Not handling unknown message type 0x77 #2
Comments
Back when we reverse engineered the protocol, we were not sure what the 0x77 messages meant exactly. They were not relevant for basic operation anyway, so we did not pursue them further. It might be a good idea to contact the manufacturer and ask for technical documentation. Tridonic offers some for their RS-232 based DALI interface, but not for the USB version. I don't think they would mind, as they still only offer software for Microsoft Windows. |
I believe Tridonic are resellers of these devices; the original manufacturer appears to be Lunatone. Contacting them can't hurt, but I strongly suspect I will be ignored. I haven't found a single manufacturer of DALI kit so far that gives out anything beyond a bare minimum of technical information on their products. |
Further experimenting with the Tridonic software shows that the 0x77 messages are indeed "Framing error in response", which is to be expected when you issue a yes/no query to more than one device at once. These could be treated as a simple "YES" response, or the network protocol could be extended to be able to express "Framing error". |
Thanks for investigating. Did you find out anything else about the message content? I will add a "Invalid packet received" message type to the protocol, then. |
I've figured out some more information about message type 0x77. It means something along the lines of "bus status". It can be received either unsolicited (packet type 0x11) or as a response to a transmission (packet type 0x12). Here are some examples:
So, if received byte 1 contains 0x77 then received byte 5 contains a status code:
Note that in the second half of this example, I issued the two "OFF" commands and the "SET SYSTEM FAILURE LEVEL" command while the bus power was off. The DALI USB device queued them, and returned the transmission reports (byte 1==0x73) all in one go after bus power was restored, followed by the "bus voltage OK" message with the serial number of the SET SYSTEM FAILURE LEVEL command. |
I'm writing a script that finds ballasts on a DALI network using INITIALISE / RANDOMISE / COMPARE / WITHDRAW / TERMINATE etc. as a test case for a library I'm writing. See https://github.com/sde1000/python-dali - the script in question is "find-ballasts.py".
When the COMPARE command causes several ballasts to reply YES (0xff) simultaneously, daliserver logs the message "Not handling unknown message type 0x77" and then a second later "ERROR Error sending DALI message: Receive timeout". It returns status code 255 over the network.
If I hack my script to interpret status code 255 as "YES" then the script runs as expected.
I believe message type 0x77 is the hardware indicating "response present but garbled". It would be useful to handle this and return some appropriate status code over the network.
The text was updated successfully, but these errors were encountered: