RDM with OLA
RDM devices can be configured through the web interface (only partially complete) or from the command line. Even if you don't have any RDM devices you can still experiment using the fake RDM device created by the Dummy Plugin.
To follow these examples, patch the Dummy Port to universe 1.
Each RDM device has a unique ID (UID) made up of a two byte manufacturer ID and a four byte device ID. The ola_rdm_discovery tool displays the UIDs found for each universe.
$ ola_rdm_discover -u 1 7a70:ffffff00
A single device should be found with a manufacturer ID of 7a70 (Open Lighting) and a device ID of ffffff00 (the dummy device).
Passing the -f option will force the discovery algorithm to be run for the particular universe. This won't produce any output unless an error occurs.
$ ola_rdm_discover -u 1 -f
Now that a device has been found, we can query it to find the parameters it supports. Each parameter is assigned a two byte identifier known as a PID. The ola_rdm_get and ola_rdm_set commands are used to read / write the values of parameters. The first thing to do is to view a list of all known parameters:
$ ola_rdm_get --list_pids boot_software_version_id boot_software_version_label capture_preset clear_status_id comms_status default_slot_value device_hours device_info ...
This doesn't query the RDM device at all, it simply lists out the names of standard parameters. To see which particular parameters a device supports use:
$ ola_rdm_get --universe 1 --uid 7a70:ffffff00 supported_parameters Supported Parameters 0x50 (supported_parameters) 0x60 (device_info) 0x80 (device_model_description) 0x81 (manufacturer_label) 0x82 (device_label) 0xc0 (software_version_label) 0xf0 (dmx_start_address)
One of the most useful parameters is device_info:
$ ola_rdm_get --universe 1 --uid 7a70:ffffff00 device_info Device Info RDM Protocol Version: 1.0 Device Model: 0x1 Product Category: other Software Version: 0x1 DMX Footprint: 10 DMX Personality: 1 / 1 DMX Start Address: 1 # of Subdevices: 0 Sensor Count: 0
Here we see some general information about the device including the DMX start address and the # of DMX channels used (DMX Footprint). We can also get the DMX start address by using the dmx_start_address parameter directly:
$ ola_rdm_get --universe 1 --uid 7a70:ffffff00 dmx_start_address DMX Start Address: 1
To set the start address, the ola_rdm_set program is used:
$ ola_rdm_set --universe 1 --uid 7a70:ffffff00 dmx_start_address 10
No output is displayed unless the request failed. Now we can check that the set worked:
$ ola_rdm_get --universe 1 --uid 7a70:ffffff00 dmx_start_address DMX Start Address: 10
Finally, the full list of options for ola_rdm_get and ola_rdm_set can be found by running with --help:
-d, --sub_device <device> target a particular sub device (default is 0) -h, --help display this help message and exit. -l, --list_pids display a list of pids -u, --universe <universe> universe number. --uid <uid> the UID of the device to control.
If you're using bash, it's worthwhile to set up tab completion of PIDs:
$ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_get $ complete -W "$(ola_rdm_get -l | xargs)" ola_rdm_set