DMX lighting

The DMX lighting protocol was originally intended for stage lighting (concerts, dance clubs etc). With the trend towards LED lighting there are increasingly more domestic lighting fixtures equipped with DMX (coparable to fixtures with DALI, the lighting protocol popular in Europe for large office buildings). Controller boards for LED strips are available for $10 or $20 on ebay, interfaces are cheap too, and there is even a IP based transport for DMX, called ArtNet. Also, compared to other protocols in that area (DALI or KNX) the protocol sems much more open, much less guarded by expensive specs documents, highly proprietary hardware, documentation avaliable in certain support/sales channels etc.

Having DMX would be cool. You can also trigger smoke generators or lasers with it :wink:

1 Like

Wow, smoke and lasers in my living room? Count me in!

4 Likes

This would be great!!! Maybe you can implement this with the web services from the https://www.openlighting.org/ola/ project.

I would also be very tempted to have DMX available on home assistant. OLA seems a good solution as they support cheap USB to DMX adapters like uDMX.

+1 for DMX! but maybe, to keep it slightly more modern, also art-net ?

adding a UDP protocol is probably easier than a hw serialport :stuck_out_tongue:

ah, OLA also supports art-net :smiley: yay

+1 for OLA. I noticed OpenHAB has support for it, but I find OpenHAB to complicated. Any way to use or “port” the plugin to home-assistant?

I am currently trying to compare home-assistant and OpenHAB and this is the one thing OpenHAB has that home-assistant doesn’t. For everything else, home-assistant seems to have a much larger support.

This shouldn’t be too hard to implement for basic support of both ArtNET and sACN (E1.31). Both of these have python libraries:

A more advanced implementation would need fixture definitions which can be used to define the features of a fixture type so that multiple fixtures of the same type can easily be added. I haven’t started using HA as I am still in the research phase so I don’t know how this would integrate with the ecosystem for consistency with other applications.

If no one else is able to implement, I can have a look into this but I won’t have time until the end of 2017.

1 Like

Did somebody already look further in to this? I would really like to be able to use DMX… To me OLA would be the best option, but we have to think about how to define the channels. I will try to get this working, already have an Enttec laying around.

2 Likes

Great to hear. I am pretty excited about this topic, I could help with some testing as far as my knowledge allows.

Another +1 for ArtNet DMX implementation! :slight_smile:

1 Like

I ordered some parts to build an Art-Net node by myself. When I get it build together I can try stuff with it. Do you guys think we should focus on Art-Net, or also DMX? pythondmx doesn’t seem to hard to integrate, so I think I will go for that option.

I think DMX would be much more easy to integrate for many users without the detour of ArtNet so having it as an option would be great.

edit:
I am just starting out with python, but I just discovered there is a python API provided by OLA.
OLA supports both ArtNet and various USB-DMX interfaces. So this seems to be pretty easy to implement and would be the bridge to both Art-Net and DMX. Maybe this one can help you out:
https://www.openlighting.org/ola/developer-documentation/python-api/

I saw that documentation, but I didn’t really understand how to send some data. How do I select which channel I want to send data to?

Here is how I understood it:

Every DMX frame consists of 512 bytes. Each byte carries the value of one cannel. But you don’t actually send any channel numbers. Just always the whole package. If there is no change in some channels, you just send the same values over and over, or zeros if you don’t use them at all.
On the linked page you can find the section “sending dmx”.

I guess this array is what you are looking for:

data = array.array(‘B’, [10, 50, 255])

In thise case channel 1 would have the value 10, ch.2 = 50 etc. Could that be right? But what is the ‘B’ good for?

Greetings from Germany,
Niklas

I installed OLA, and the service itself is running fine. However, I can’t get the python-libraries working. I’m not that into python, but I think it has something to do with the PYTHONPATH.

The error I get is:
ImportError: No module named 'ola.ClientWrapper'; 'ola' is not a package

I checked my pythonpath, and /usr/local/lib/python3.5/site-packages/ola is included there.

Somebody who can help me here? How would we integrate this package into HASS anyway, since it isn’t available on pip…

Did you build the bindings as shown here?

Maybe we should start a new thread in the developement categroy to get more people (especially developers)involved.

another update:

I installed OLA as well. I get the same error like you do when OLA is not running. After starting the OLA server, it seems to work fine.
Just need to install my USB-DMX adapter and set up a Universe for this error to disappear. Next step would be the integration into HA.

Personally I don’t have any experiences developing in Python and for HA.

I did build it by that steps indeed. Sometimes it works, sometimes it doesn’t…

I agree, we should get more people (developers) involved. My biggest concern is how to get OLA installed with Home Assistant since it isn’t available on pip.

Will Home Assistant be able to work along with an existing controller (Dimmer panel) or will we have to connect it as number two in the chain and listen to the signals from the main controller and forward them to.

(Just started researching DMX and Raspberry Pi connections.)

Andreas