DMX lighting

Thanks so much for working on this!
I’m looking forward to when I can add DMX control to HA. But, right now it seems pretty complicated to set it all up. Lots of different steps. Not sure if I want to take the plunge or not. A lot I don’t fully understand. Until then I’ll checkin to see how it is going.

Yeah I should work a bit on documentation honestly. It does look a bit complicated, but most of the configuration parameters are optional.

If you just configure some lights on a particular universe and set node_type to artnet-controller, ArtNet controllers can just update that universe as normal.

Small demo.

1 Like

Hi all,

Does anyone know if the the L-Tech 995 is compatible with this integration?
http://www.ltech-led.com/html/en/Control/Decoder/DMX-PWM-CV-type/LT-995.html

Thanks!

Not directly, this one only talks DMX. First you’ll need a device that speaks Art-Net or sACN, that will then be able to send DMX into this device.

Random example: Ethernet to DMX/RDM converter DIN-Ethergate | ENTTEC : ENTTEC

Just want to say a big THANK YOU for this great HA integration!
This is allowing neighbourhood kids to trigger light automations on my house for a local light festival, via zigbee buttons on my fence. So grateful to @Breina, @jnimmo, @spacemanspiff2007 and all contributors and testers!

4 Likes

I would ask here but don’t want to highjack the thread. Would you mind if I messaged you directly on the basics for setting this up?

Sure man, don’t worry about it.

1 Like

Hi all,
Sorry for bothering again.

So far I have run HA installed on a windows computer with VM on which I used program art-net to dmx to send dmx Enttec to DMX and all the dmx boards worked without any issues.

2 days ago I bought a new computer just for HA and installed on it with a usb stick ubuntu installed with Balena. Now I inserted the usb from Enttec to DMX into the new computer with HA, but I don’t know how to send DMX to Entec usb dongle… I tried with GitHub - SavinaRoja/DMXEnttecPro: Control the Enttec DMX USB Pro with Python3 but I can’t send dmx to the boards


A youtube tutorial was good for newbies like me.

Thanks a lot!

Am I the only one who passed HA on a mini pc? I can’t even manage to send dmx to enttec open dmx usb.
I also tried with node-red but it doesn’t install node-red-contrib-dmxusbpro (node) - Node-RED
Please ! help me for a few days I can’t do anything!
Thanks all !

upgraded to HA 2023.06.1 and all my DMX lights broke. I got this in the system log:

Logger: homeassistant.components.light
Source: util/read_only_dict.py:7 
Integration: Light (documentation, issues) 
First occurred: 9:56:22 AM (1 occurrences) 
Last logged: 9:56:22 AM

Error while setting up artnet_led platform for light
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 320, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/artnet_led/light.py", line 146, in async_setup_platform
    await entity_registry.async_load()
  File "/usr/src/homeassistant/homeassistant/helpers/entity_registry.py", line 952, in async_load
    data = await self._store.async_load()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/storage.py", line 122, in async_load
    return await self._load_task
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/storage.py", line 131, in _async_load
    return await self._async_load_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/storage.py", line 147, in _async_load_data
    data = deepcopy(data)
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 146, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
                             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 146, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
                             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 146, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 206, in _deepcopy_list
    append(deepcopy(a, memo))
           ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 146, in deepcopy
    y = copier(x, memo)
        ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
                             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 297, in _reconstruct
    value = deepcopy(value, memo)
            ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/copy.py", line 298, in _reconstruct
    y[key] = value
    ~^^^^^
  File "/usr/src/homeassistant/homeassistant/util/read_only_dict.py", line 7, in _readonly
    raise RuntimeError("Cannot modify ReadOnlyDict")
RuntimeError: Cannot modify ReadOnlyDict

looks like they changed a type?

Are you sure you’re on the right version? Tested on 2023.6.0 and the latest development version; both are fine. As far as I can tell, there’s no release for 2023.6.1 even.

Home Assistant 2023.6.0
Supervisor 2023.06.1
Operating System 10.2
Frontend 20230607.0 - latest

I apparently copied from Supervisor. let me delete and recreate.

apparently I just needed to remove it and put it back… works now.

I am having the same issue after updating to 2023.6.1, I opened up an issue on the repo: "RuntimeError: Cannot modify ReadOnlyDict" after upgrade to 2023.6.1 · Issue #34 · Breina/ha-artnet-led · GitHub

Home Assistant 2023.6.1
Supervisor 2023.06.1
Operating System 10.2
Frontend 20230608.0 - latest

I’ll give that a try too.

Quick update, removing and readding the integration also fixed it for me!

Okay thanks for the reports guys! I will investigate what might cause this.

1 Like

What is the best way to create a new fixture “type?” (other than the currently implemented ‘fixed’ ‘binary’ ‘dimmer’ ‘rgb’ ‘rgbw’ 'rgbww or ‘color_temp’). Would that require homeassistant core changes, or can I bolt-on new light type definition only within artnet_led code?

What I want:

  1. I want to control – as if it’s ONE color_temp fixture – some custom-built LED fixtures that internally are built from 4 different color WHITE LED arrays. Essentially, they are WWWW lights :grinning:
  2. Each of the 4 WHITE LED arrays within a fixture are different calibrated, fixed color temps, as example 6500K, 5200K, 3000K, 1800K respectively.
  3. To change the fixture’s color_temp, or to emulate warm-dimming of the fixture, I’d do some custom math equations in Python to set the independent brightness of the different WHITE arrays within the fixture. I’m hoping to implement that ideally within modified artnet_led code, or else I have to use separate module in appdaemon (but that makes it more difficult to use the 16-bit fading with pyartnet and the direct port addresses of the dmx channels for each array).

What I have now:

  1. I’ve got the 4 white arrays working individually in artnet_led as separate lights. I added code to initialize each WHITE light to a color temp. Since each array is controlled separately, I have 4 controls, so this doesn’t meet my needs for having just ONE control for the entire fixture.
  2. I can do simple mixing between 2 arrays if I group them as a color_temp light, but this doesn’t fade with my math, nor does it allow me to fade between 4 different color temps.
  3. I tried to use platform: group as a hack, but the scripting is way too complicated to iterate through and do math for each group member of the group.

Question is whether the “light” definitions can be extended for a custom fixture? Maybe to add something like COLOR_MODE_FIXTURE_COLOR_TEMP (a made-up name) to the light definitions. This would operate in the User Interface just like a COLOR_TEMP light would, but in the code it actually adjusts 4 different lights. Implementation code could be similar to RGBW, but the mixing logic between channels would use different math.

from homeassistant.components.light import (
    ATTR_BRIGHTNESS,
    ATTR_COLOR_TEMP,
    ATTR_RGB_COLOR,
    ATTR_RGBW_COLOR,
    ATTR_RGBWW_COLOR,
    ATTR_TRANSITION,
    COLOR_MODE_BRIGHTNESS,
    COLOR_MODE_COLOR_TEMP,
    COLOR_MODE_RGB,
    COLOR_MODE_RGBW,
    COLOR_MODE_RGBWW,
    SUPPORT_TRANSITION,
    PLATFORM_SCHEMA,
    LightEntity, COLOR_MODE_ONOFF, COLOR_MODE_WHITE,
)

Thoughts?

Sorry to make multiple posts.
In the “Compatibility” table on breina github site, should “custom_white” text be changed to “color_temp”?

Happy to hear you’re looking to contribute! I’ve ran into this before, and it would require some core changes to have it within 1 light.

The gist of it is that HA expects people to use the device registry to group different LEDs together. Currently ha_artnet_led doesn’t have that implemented, but it’s on the back of my mind when doing my next refactor.

A really beautiful solution isn’t there right now I’m afraid.

Fixed the custom_white in the README, thanks for noticing! :slight_smile:

Should be fixed now in v0.1.9. :slight_smile:

1 Like