Some basic DMX questions

Thanks so much for all this info. openHAB, QLC and Art-Net/sACN seem like great options to automate my home lighting but I’m new to all of them and this reduces the overwhelm factor a lot.

I’ve been looking for a reliable and relatively simple way to detect when light switches are pressed. I want to keep my standard (old school, AC powered) light switches but change the wiring to CAT6 (I like wires not wireless). I was planning to run a CAT6 cable from each light switch to an Arduino board with ethernet shield, connecting the standard terminals in the light switch to input pins on the Arduino, and use MQTT + NodeRed to manage the logic. But could I use DMX, Art-Net or sACN instead of MQTT and NodeRed?
Let me know if that’s not a relevant question for this discussion and I’ll start a new post.


1 Like

Hey Phil

Welcome to the party.

Maybe a new thread would be better, if you’re planning on a whole house approach.

DMX stuff is certainly more for the architectural lighting or faster changing stuff. (Even movement and positional)

If your looking to pick up the states of your current mechanical switches, then (obviously) I’d suggest popping a Velbus VMB8PBU { Yes, you can use them with 2 state switches, not just momentary, it’s just easier with momentary } behind the switches and hooking it up to Ring / Bus type data cable (rather than bringing each leg back to a central location).

Then just a USB interface into openHAB2 (and / or Node-RED) to pick up all the button state changes.

You could use Velbus hardware to control your standard lighting, if you only want switched or dimmed lighting.

You could fit LED feedback lights into the switches if you want that too.

Or if you want something super fun, I’ve got some 12 channel fully addressable 12V digital downlights that you can use to create infinite amounts of effects and scenes.

The big question is…

  • What is the end game?

AKA what do you have in mind for the amount of control and flexibility?

Thanks Stuart, appreciate the info.
Could you give a link to those 12 channel fully addressable 12V digital downlights?

I re-posted the question to a new topic with a lot more detail:

Is there any such thing as a tutorial for openHAB + QLC?


I haven’t packaged them up or actively promoted them yet, in fact I was only having a conversation with the chap who designed and populates the PCBs last night.

(There is a box of 80 under my desk)

What I can do…

Is give you a link to a YouTube video of them on my desk.

I’ve got some more above my desk, so now that I’ve got QLCplus up and running, I’ll try to do something funky with openHAB2.
Then work out how to demonstrate it, including linking them to Velbus button actions.


I’m happy to loan you one or two to play with to see if they’ll be what you’re looking for. (Along with a simple Art-NET / sACN LAN adapter so you can try them with openHAB2 directly, or with QLCplus, remotely controlled by openHAB2.

Other than what @Dome and I have put on this forum, I’m not aware of anything.

Maybe Dome & I could put something together.

The various Thing & Item files that I uploaded will get you a way to issue remote controls to QLCplus or Jinx!

@Dome What do you think?
Should we work at putting a guide together?

I think I’ve cracked the remote control side, including sending openHAB2 RGB values, so that QLCplus can use them in functions.
(I particularly like how it converts RGB colour picker data onto something that works for RGBW lamps, that’s something that expensive software sometimes struggles with)

1 Like

Those down lights are nice. Is it too much to hope that they fit into a standard down light fitting for an MR16 halogen/led bulb?
What hardware do you use to power them and control them?
Could they be used in outdoor down light fittings under eaves?

I’ve got some of these but they’re just not bright enough:

Do you have pricing for them yet?



As if they are mounted in a Par16 style lamp house or something?

Obviously the MR16 pin grip won’t work, but the lamp body will fit the standard space that a GU10 / MR16 based Par16 will go into.

(50mm diameter front face, roughly 47mm deep / tall)

Or we’ve created our own style of downlight housing, both of these are shown in the video.
If it’s not clear, let me know and I’ll post some more pictures or try to create a 360° view somehow.

We haven’t officially created an external grade housing, but I have filled some with silicone and mounted them into Up / Down external fittings.

I’ll get around to fixing them to the wall soon for a soak test.


Any type of SPi driver will run them, as they are essentially SK6812 RGBW chips.

We use the Smart-Show Art-NET / sACN LAN adapters.

The concept is…

Master unit at the start of the run contains

  • Mains power inlet

  • RJ45 socket

  • 12Vdc PSU suitable for ~30 lamps

  • Smart-Show LAN adapter (with 5V dropper)

  • 3 pin outlet with 12V power and SPi data (up to 170 lamps)

The 3 pin connection is daisy chained along all the lamps, each taking 12 control channels.

If you need to inject more power, a slave PSU would contain

  • mains power in

  • 3 pin inlet (that ignores the 12V+, but takes the remaining data and the 0V reference)

  • 3 pin outlet

  • PSU for ~30 lamps

These lamps aren’t the brightness, because they were designed to be used in large numbers, to increase the flexibility.

We’re toying with using ultra bright addressable chips, but that’s still on the drawing board.

At the moment, these lamps need to have a retail price of about £20, until we can get the PCBs and lamp houses made in large numbers.

Our original design concept was to install them at ~700mm intervals in ceilings.

When I get to refurbishing another room in my house, I intend to install them and create some videos.


1 Like

I was already thinking about doing something. I’d love to collaborate!


These sound pretty awesome. I’m planing a family room renovation and I think these would work really well. I also could use them in my bathrooms.

1 Like


If anyone is interested, I’ve worked out how to run QLCplus on 64 bit Debian Linux, in an X session with a VNC remote server.
(I.E. No desktop manager)

The details are here

1 Like

I’m trying to connect OpenHab2 to QLC+ using the DMX binding as described above. For now I just want to click a button in OpenHab and turn on a DMX RGBW spotlight that is connected to QLC+ (tested and working from QLC+).

QLC+ is installed on a RPi at with bitwizard DMX interface
OpenHab is installed on Windows 10 at

I used the DMX Binding to created a sACN/E1.31 Bridge and set the Receiver Address to and DMX Universe to 1. The Status says ONLINE.

I created a DMX Color (RGB) Dimmer thing and set DMX Channel Configuration to “1,2,3”, fade and dim times to 1000.

I’m not sure what to do at the QLC+ end.
From the config in the web page at I set the output for universe 1 to “UART 1"ttyAMA0” (the bitwizard DMX interface) and I can control the lights from simple desk no problem.
I don’t know how to set the input to the OpenHab binding. The drop down shows [E1.31] options for and I tried “[E1.31]” but tinkering with the dimmer does not make the lights go.

How do I make the connection? Will it work if OpenHab and QLC are on different machines?


Hey Phil

Great to hear you are making progress.

It’s a little tricky to get your head around to start with, but once you get the drop of it, you’ll find it’s quite straight forward.
Whether you go down the DMX / Art-Net / sACN route for remote control, or you take @Dome approach with WebSockets.

The trick is to get the Virtual Console up and running in QLCplus, then control the elements of that with openHAB2.

For example.

Let’s say you have an Animation widget running in the Virtual Console.


This haa a fader that controls the intensity of the effect (or whatever you have it set to) - That will need an input DMX channel assigned to it so that openHAB2 can influence it.

Here you can see that it’s using QLCplus universe 4 as an Input, which is an sACN / E1.31 stream, and using channel 2

(I use channel 1 to control the grand master)

Then add in a “Start Color Knob” group

Clicking on each item will enable the Input Universe field/s.

Each component will need a channel of your RGB colour picker from openHAB2.

You might find it easier to assign a single channel DMX dimmer (for each channel) in openHAB2 if you want to use the Auto Detect option, as QLCplus won’t be able to tell you which of the three channels to assign to each element. (then delete it / them later, FYI you can create them and use the same channels as the RGB Dimmer, it won’t do any harm)

After that, all you need to do is put QLCplus into “operate” mode and openHAB2 should be able to control the effect.

You can also add remote control to Presets in an animation widget too, which can be fun.

I do intend to make a video of how this is done, once I get some time.

(I’ve got a couple of projects on the go that are demanding my time)

Good luck



These are the openHAB2 Things and Item files I’m working with


// Bridge dmx:sacn-bridge:QLCBridge "QLCsACN" @ "QLC"	[ mode="multicast", universe=1 ] {
 Bridge dmx:sacn-bridge:QLCBridge "QLCsACN" @ "QLC"	[ mode="unicast", address="", universe=1 ] {

	dimmer QLC_Master  "QLC Master Dimmer" @ "QLC" [dmxid="1", fadetime=1000, dimtime=1000 ]
	dimmer QLC_all  "QLC All sub Channels" @ "QLC" [dmxid="2/511", fadetime=1000, dimtime=1000 ]
	dimmer QLC_Ch02  "QLC Channel 02" @ "QLC" [dmxid="2", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch03  "QLC Channel 03" @ "QLC" [dmxid="3", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch04  "QLC Channel 04" @ "QLC" [dmxid="4", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch05  "QLC Channel 05" @ "QLC" [dmxid="5", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch06  "QLC Channel 06" @ "QLC" [dmxid="6", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch07  "QLC Channel 07" @ "QLC" [dmxid="7", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch08  "QLC Channel 08" @ "QLC" [dmxid="8", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch09  "QLC Channel 09" @ "QLC" [dmxid="9", fadetime=1000, dimtime=1000]
	dimmer QLC_Ch10  "QLC Channel 10" @ "QLC" [dmxid="10" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch11  "QLC Channel 11" @ "QLC" [dmxid="11" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch12  "QLC Channel 12" @ "QLC" [dmxid="12" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch13  "QLC Channel 13" @ "QLC" [dmxid="13" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch14  "QLC Channel 14" @ "QLC" [dmxid="14" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch15  "QLC Channel 15" @ "QLC" [dmxid="15" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch16  "QLC Channel 16" @ "QLC" [dmxid="16" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch17  "QLC Channel 17" @ "QLC" [dmxid="17" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch18  "QLC Channel 18" @ "QLC" [dmxid="18" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch19  "QLC Channel 19" @ "QLC" [dmxid="19" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch20  "QLC Channel 20" @ "QLC" [dmxid="20" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch21  "QLC Channel 21" @ "QLC" [dmxid="21" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch22  "QLC Channel 22" @ "QLC" [dmxid="22" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch23  "QLC Channel 23" @ "QLC" [dmxid="23" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch24  "QLC Channel 24" @ "QLC" [dmxid="24" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch25  "QLC Channel 25" @ "QLC" [dmxid="25" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch26  "QLC Channel 26" @ "QLC" [dmxid="26" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch27  "QLC Channel 27" @ "QLC" [dmxid="27" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch28  "QLC Channel 28" @ "QLC" [dmxid="28" , fadetime=1000, dimtime=1000]
	dimmer QLC_Ch29  "QLC Channel 29" @ "QLC" [dmxid="29" , fadetime=1000, dimtime=1000]

	color  QLC_rgb01 "QLC RGB 01" @ "QLC"    [dmxid="51/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb02 "QLC RGB 02" @ "QLC"    [dmxid="54/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb03 "QLC RGB 03" @ "QLC"    [dmxid="57/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb04 "QLC RGB 04" @ "QLC"    [dmxid="60/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb05 "QLC RGB 05" @ "QLC"    [dmxid="63/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb06 "QLC RGB 06" @ "QLC"    [dmxid="66/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb07 "QLC RGB 07" @ "QLC"    [dmxid="69/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb08 "QLC RGB 08" @ "QLC"    [dmxid="72/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb09 "QLC RGB 09" @ "QLC"    [dmxid="75/3", fadetime=1000, dimtime=10000 ]
	color  QLC_rgb10 "QLC RGB 10" @ "QLC"    [dmxid="78/3", fadetime=1000, dimtime=10000 ]
	chaser QLC_chase01 "QLC Chase 01" @ "QLC" [dmxid="51/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase02 "QLC Chase 02" @ "QLC" [dmxid="54/3", steps="10000:0,255,0:5000|10000:0,0,255:5000|10000:255,0,0:5000" ] 
	chaser QLC_chase03 "QLC Chase 03" @ "QLC" [dmxid="57/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase04 "QLC Chase 04" @ "QLC" [dmxid="60/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase05 "QLC Chase 05" @ "QLC" [dmxid="63/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase06 "QLC Chase 06" @ "QLC" [dmxid="66/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ]
	chaser QLC_chase07 "QLC Chase 07" @ "QLC" [dmxid="69/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase08 "QLC Chase 08" @ "QLC" [dmxid="72/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ] 
	chaser QLC_chase09 "QLC Chase 09" @ "QLC" [dmxid="75/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ]
	chaser QLC_chase10 "QLC Chase 10" @ "QLC" [dmxid="78/3", steps="10000:255,0,0:5000|10000:0,255,0:5000|10000:0,0,255:5000" ]


Group:Dimmer:MAX QLC_SubMaster_1 "QLC SubMaster 1"

//	Group:Dimmer:MAX QLC_SubMaster_2 "QLC SubMaster 2"
//	Group:Dimmer:MAX QLC_SubMaster_3 "QLC SubMaster 3"

Switch QLCMasterMute "QLC Master Mute" { channel="dmx:sacn-bridge:QLCBridge:mute" }

Dimmer QLCMaster "QLC Master"  { channel="dmx:dimmer:QLCBridge:QLC_Master:brightness" }

Dimmer QLC_Ch02_Dim "QLC Channel 02 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch02:brightness" }
Dimmer QLC_Ch03_Dim "QLC Channel 03 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch03:brightness" }
Dimmer QLC_Ch04_Dim "QLC Channel 04 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch04:brightness" }
Dimmer QLC_Ch05_Dim "QLC Channel 05 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch05:brightness" }
Dimmer QLC_Ch06_Dim "QLC Channel 06 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch06:brightness" }
Dimmer QLC_Ch07_Dim "QLC Channel 07 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch07:brightness" }
Dimmer QLC_Ch08_Dim "QLC Channel 08 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch08:brightness" }
Dimmer QLC_Ch09_Dim "QLC Channel 09 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch09:brightness" }
Dimmer QLC_Ch10_Dim "QLC Channel 10 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch10:brightness" }
Dimmer QLC_Ch11_Dim "QLC Channel 11 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch11:brightness" }
Dimmer QLC_Ch12_Dim "QLC Channel 12 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch12:brightness" }
Dimmer QLC_Ch13_Dim "QLC Channel 13 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch13:brightness" }
Dimmer QLC_Ch14_Dim "QLC Channel 14 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch14:brightness" }
Dimmer QLC_Ch15_Dim "QLC Channel 15 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch15:brightness" }
Dimmer QLC_Ch16_Dim "QLC Channel 16 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch16:brightness" }
Dimmer QLC_Ch17_Dim "QLC Channel 17 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch17:brightness" }
Dimmer QLC_Ch18_Dim "QLC Channel 18 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch18:brightness" }
Dimmer QLC_Ch19_Dim "QLC Channel 19 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch19:brightness"}
Dimmer QLC_Ch20_Dim "QLC Channel 20 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch20:brightness" }
Dimmer QLC_Ch21_Dim "QLC Channel 21 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch21:brightness" }
Dimmer QLC_Ch22_Dim "QLC Channel 22 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch22:brightness" }
Dimmer QLC_Ch23_Dim "QLC Channel 23 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch23:brightness" }
Dimmer QLC_Ch24_Dim "QLC Channel 24 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch24:brightness" }
Dimmer QLC_Ch25_Dim "QLC Channel 25 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch25:brightness" }
Dimmer QLC_Ch26_Dim "QLC Channel 26 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch26:brightness" }
Dimmer QLC_Ch27_Dim "QLC Channel 27 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch27:brightness" }
Dimmer QLC_Ch28_Dim "QLC Channel 28 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch28:brightness" }

//	Dimmer QLC_Ch29_Dim "QLC Channel 29 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch29:brightness" }
// To use a dimmer channel as a Button trigger in QLCplus you need to get it to reset to zero, so that it is ready for the next button press.
// Adding the Expire binding command will work wonders, like this ----

Dimmer QLC_Ch29_Dim "QLC Channel 29 Dimmer" (QLC_SubMaster_1) { channel="dmx:dimmer:QLCBridge:QLC_Ch29:brightness",expire="5s,command=0" }

Switch QLC_Chase01 "QLC Chase 01" { channel="dmx:chaser:QLCBridge:QLC_chase01:switch" }
Switch QLC_Chase02 "QLC Chase 02" { channel="dmx:chaser:QLCBridge:QLC_chase02:switch" }
Switch QLC_Chase03 "QLC Chase 03" { channel="dmx:chaser:QLCBridge:QLC_chase03:switch" }
Switch QLC_Chase04 "QLC Chase 04" { channel="dmx:chaser:QLCBridge:QLC_chase04:switch" }
Switch QLC_Chase05 "QLC Chase 05" { channel="dmx:chaser:QLCBridge:QLC_chase05:switch" }
Switch QLC_Chase06 "QLC Chase 06" { channel="dmx:chaser:QLCBridge:QLC_chase06:switch" }
Switch QLC_Chase07 "QLC Chase 07" { channel="dmx:chaser:QLCBridge:QLC_chase07:switch" }
Switch QLC_Chase08 "QLC Chase 08" { channel="dmx:chaser:QLCBridge:QLC_chase08:switch" }
Switch QLC_Chase09 "QLC Chase 09" { channel="dmx:chaser:QLCBridge:QLC_chase09:switch" }
Switch QLC_Chase10 "QLC Chase 10" { channel="dmx:chaser:QLCBridge:QLC_chase10:switch" }

Color	QLC_rgb01			"QLC RGB 01"			{ channel="dmx:color:QLCBridge:QLC_rgb01:color" }
//	Dimmer	QLC_rgb01_RED 		"QLC RGB 01 RED" 		{ channel="dmx:color:QLCBridge:QLC_rgb01:brightness_r" }
//	Dimmer	QLC_rgb01_GREEN 	"QLC RGB 01 GREEN" 		{ channel="dmx:color:QLCBridge:QLC_rgb01:brightness_g" }
//	Dimmer	QLC_rgb01_BLUE 		"QLC RGB 01 BLUE" 		{ channel="dmx:color:QLCBridge:QLC_rgb01:brightness_b" }

Color	QLC_rgb02			"QLC RGB 02"			{ channel="dmx:color:QLCBridge:QLC_rgb02:color" }
Color	QLC_rgb03			"QLC RGB 03"			{ channel="dmx:color:QLCBridge:QLC_rgb03:color" }
Color	QLC_rgb04			"QLC RGB 04"			{ channel="dmx:color:QLCBridge:QLC_rgb04:color" }
Color	QLC_rgb05			"QLC RGB 05"			{ channel="dmx:color:QLCBridge:QLC_rgb05:color" }
Color	QLC_rgb06			"QLC RGB 06"			{ channel="dmx:color:QLCBridge:QLC_rgb06:color" }
Color	QLC_rgb07			"QLC RGB 07"			{ channel="dmx:color:QLCBridge:QLC_rgb07:color" }
Color	QLC_rgb08			"QLC RGB 08"			{ channel="dmx:color:QLCBridge:QLC_rgb08:color" }
Color	QLC_rgb09			"QLC RGB 09"			{ channel="dmx:color:QLCBridge:QLC_rgb09:color" }
Color	QLC_rgb10			"QLC RGB 10"			{ channel="dmx:color:QLCBridge:QLC_rgb10:color" }

Thanks so much for all the detail Stuart.
I’ll start with a simple button that runs a chaser and work my way up to matrix animations.

On the virtual console in QLC+ from my laptop, I’ve defined a button and set the input like this:

I load the project via the web interface in QLC+ on the RPi and then set the output for universe 1 to UART and the input for universe 4 to E1.31 for my RPi. When I click the button my lights go.

In OpenHab I have a DMX Chaser thing with these settings:

When I click on the Chaser thing the Status is OFFLINE - CONFIGURATION_ERROR, with this error: chaser configuration malformed.

Any ideas what I’ve got wrong?


You need to access the full Input Output section of QLCplus UI (I use a VNC session, check out the QLCplus forum to see how I’ve done that) to setup the universes, because you’ll need to set the incoming universe of sACN.
(I’m not sure what the purpose of the web interface universe setup, it’s lacking something)

That’s exactly what it means.

The chaser isn’t set correctly.


Try a different version of the DMX binding.

It shouldn’t make any difference, although I’ve never run QLCplus on the same machine as openHAB2.

I’d dedicate a Pi just to QLC+. I currently use a Pi 4 (4 Gb) for light browsing and QLC+. Sometimes when I interact with a web page on the Pi I get weird behavior from QLC+. It jumps to a different scene without being commanded to. I’m going to spin up a Pi 3 with the custom QLC+ image and see if that’s enough horsepower.

1 Like

Thanks Stuart.

The universes are set up like this in the web interface:

When editing the universes via RPi directly, I can untick Multicast and the IP address changes to (for unicast I assume), the port = 5568, E1.31 Universe = 4 and transmission mode and priority are blank.

I’ve tried a couple of combinations:

  1. Universe 1 output = UART and universe 4 input = E1.31 in QLC+, and the sACN/E1.31 Bridge in OpenHAB set to and universe 4
  2. Universe 4 output = UART and universe 4 input = E1.31 in QLC+, and the sACN/E1.31 Bridge in OpenHAB set to and universe 4

In OpenHAB both combinations show the bridge as ONLINE.

I created a single dimmer set to use the bridge and DMX channel 1 (also tried 2 or 3 or 1/512).
None of these combinations turn a light on when I click the dimmer buttons in OpenHAB but the lights always work from simple desk in QLC+.

Any ideas what I’ve got wrong?



That looks about right.

You can completely ignore the Web interface DMX config.
I’m not entirely sure why it’s there, because it’s missing that vital ability to select the exact universe within the NIC. (You can only select pre-configured universes, which are ONLY available via the X session. Have you added the Tiger-Scrapping-VNC-Server to your Pi?

This shows my Input (of QLCplus) to the (It’s own address) as sACN, and listen to the transmitted universe 1, and mapping it to QLCplus (internal of the software) Universe 4

Meaning, openHAB2 is unicasting sACN to the IP address on QLCplus machine, using sACN universe 1.

QLCplus’ internal Universe 4 is mapped to listen to the NIC for Unicasted sACN, specifically sACN Universe 1.

{So using Universe 4 of QLCplus, is not the same as Universe 4 of the sACN Stream, unless it is mapped that way}


sACN supports >60,000 universes, while Art-Net supports 16 x 16 x 16 universes (4096 universes)

Whereas, this web interface Configuration doesn’t allow for selecting the sACN universe that is available via the selected NIC / Port / Device

Have you setup a Function in QLCplus to control your lights?

Then, have you linked a Channel of the universe coming out of openHAB2 to one of the effects / sliders on the Virtual Console in QLCplus? (as per the pictures I have posted?)

IE ~~

A Function in QLCplus sends a pattern to your lights

The function is controlled in QLCplus via the Virtual Console (Ether a simple slider or Animation widget)

Single channel of the outgoing openHAB2 sACN is then mapped to the Slider within the Virtual Console.

The advantage of this is that you can see the element of the Virtual console following the openHAB2 universe.

Hi Stuart,

Thanks so much for your patience. It’s ugly, but it’s working. :slight_smile:

Being new to DMX/QLC+ as well as OpenHAB and connecting OpenHAB to QLC+, I was confused by all the detail and settings in your animation example, partly because I didn’t have a sequence or matrix to connect the animation to.
Hopefully this simplified description will help another noob…

As I understand it, the closest thing to a button for turning on a DMX light switch in OpenHAB is a DMX Dimmer.
As you said, the first bit I missed was that the sACN input universe (4) in QLC+, should have the E1.31 universe set to the universe (1) used by the sACN bridge in the OpenHAB DMX binding. Makes sense now that you have to tell each of them how to point to the other system.

I set up a simple slider in the QLC virtual console and set it’s Input universe to the QLC sACN input universe (4: E1.31), gave it a channel (2) and then set up a DMX Dimmer thing with the same DMX Channel Configuration (2) in OpenHAB.
Setting a function in the Playback tab for the slider in QLC+ makes the light go.

Now to see how these web sockets work…

Thanks again,

1 Like


I’ve just taken a closer look at the configuration for that chaser.

Try something like this instead, to fade a single / all channel.


To fade 3 channels or groups of 3, it would look like this


And so on

1 Like

Wanting to follow Dome’s node red instructions and I tried to install node red on my RPi (it’s the QLC+ package with mosquito added) and it failed due to disk filling up. I tried a second time without the Pi-specific nodes and got the same result.

Does node red have to be on the same machine as QLC+ (my RPi) or would it be fine on the OpenHAB machine? (Currently windows 10)


1 Like

I’d recommend putting QLC on its own Pi. NodeRED should be fine on your Windows machine alongside openHAB, although I’ve personally only run it under Linux.

What size SD card are you using? Is it potentially a corrupted card? SD card issues are common with Raspberry Pis and can be minimized by getting larger, quality cards.

1 Like