ola_set_dmx / ola_streaming_client question

96 views
Skip to first unread message

Hoggins!

unread,
Nov 25, 2016, 12:18:38 PM11/25/16
to Open Lighting
Hello list,

My first post here, hope it's not too stupid to ask.
I would like to send DMX data on a specific address rather than giving
the whole string to get there. Let me explain : using ola_set_dmx and
ola_streaming_client, if I want to send data to channels 1, 2, and 3, I
will send something like "200,255,100". Great.

Now, how can I send data to only channel 3 without resending data to
channels 1 and 2 ? My only option for now is, if I only want to change
channel 3's value, to send "200,255,150". Is there a way to send only
data to channel 3 ?

Thanks for your help !

Hoggins!

signature.asc

Alexander Kampmann

unread,
Nov 26, 2016, 8:27:42 AM11/26/16
to open-l...@googlegroups.com
Well, as far as I know, the DMX wire format is defined such that you
always start with channel 1. So, DMX just can not do that.

The point is that DMX is stateless. So if you have a DMX Device which
reacts to values on channel 5, and a message which only includes
channels 1, 2 and 3 arrives, most devices reacts as if the value for
channel 5 were 0. It does not hold the old value. Actually DMX devices
may even turn off if they do not receive DMX packets regularly. You,
kind of, need to reset the state regularly, because otherwise the device
forgets it. How often you need to reset depends on the device. For my
DMX-RGD-LED-PAR it is 30 minutes.

Usually DMX Controllers send the same packet continuously, so a DMX
controller will send a packet and resend the same packet as soon as
possible afterwards.

Maybe you can explain what problem you are trying to solve? We may be
able to figure out another solution.

Alex

Peter Newman

unread,
Nov 26, 2016, 11:18:27 AM11/26/16
to open-lighting
You may be able to do a latest or highest takes precedence merge to do the job. Alternatively add code to your streaming client to track the data values. Or write a client to merge the two universes based on your requirements.

Hoggins!

unread,
Nov 26, 2016, 12:06:52 PM11/26/16
to open-l...@googlegroups.com
Hello,

Le 26/11/2016 à 17:18, Peter Newman a écrit :
> You may be able to do a latest or highest takes precedence merge to do the job. Alternatively add code to your streaming client to track the data values. Or write a client to merge the two universes based on your requirements.
>
Yes, that was the idea if there is no possibility to directly address a
particular channel.

I'm really not familiar with the DMX protocol, but what you wrote seems
to confirm that if I want to send data to channel 500, I MUST also send
something to channels 1 to 499. This is odd, but hey, if that's the way
it works, I won't try to change it.

... OR it's just the way these two clients (ola_set_dmx and
ola_streaming_client) are coded, but directly writing my own code using
the OLA API (in C, or with Python wrappers), I would be able to address
only one channel at a time, and possibly the one I want ?

Thanks !

Hoggins!

signature.asc

Hoggins!

unread,
Nov 26, 2016, 12:18:11 PM11/26/16
to open-l...@googlegroups.com
Hello Alex,

All makes sense with your explanation !

Thank you !

    Hoggins!
signature.asc

Hoggins!

unread,
Nov 26, 2016, 12:19:19 PM11/26/16
to open-l...@googlegroups.com
Sorry Peter,

I had not read Alexander's answer just earlier today. Now that I understand the DMX protocol better, I know what I can and can't do, and I'll figure out how to achieve what I want.

Thanks !

Le 26/11/2016 à 17:18, Peter Newman a écrit :
signature.asc

Peter Newman

unread,
Nov 27, 2016, 5:23:28 PM11/27/16
to open-lighting
Great. Yeah you'll either need to do a merge or do something in your code generating the values.
Reply all
Reply to author
Forward
0 new messages