someweisguy / esp_dmx

Espressif ESP32 implementation of ANSI-ESTA E1.11 DMX-512A and E1.20 RDM
MIT License
348 stars 37 forks source link

Adding WiFi and ArtNet capability #67

Closed krupis closed 1 year ago

krupis commented 1 year ago

Hello. I have recently discovered the following library: https://learn.sparkfun.com/tutorials/using-artnet-dmx-and-the-esp32-to-drive-pixels/all

This allows to use any software such as MagicQ to control lights such as long RGB strips.

Unfortunately, this is only available for Arduino IDE.

I thought it would be cool to achieve something simillar in esp-idf. Would you be interested in adding WiFi capabilities for parsing ArtNet and DMX data?

OckertM commented 1 year ago

Checkout WLED. Some folks on here are looking into merging this library (hopefully with RDM capabilities) into WLED. WLED should be the perfect solution in the meantime. https://kno.wled.ge/

krupis commented 1 year ago

After a quick glance at: https://kno.wled.ge/advanced/compiling-wled/

It seems that they also develop their project on Arduino framework. It is very strange that such large scale projects are written on Arduino instead of official esp-idf framework.

OckertM commented 1 year ago

Yeah I know but all these projects started on or were adapted for ESP8266 and not ESP32. I would list that as the number 1 reason

krupis commented 1 year ago

Ah yeah that makes sense.

someweisguy commented 1 year ago

Thanks for reaching out! Currently, I have no plans to add ArtNet compatibility. I am working on adding RDM support at the moment. I'm nearly done with implementing minimal controller/responder support for RDM and I have a feeling that a majority of my time will be spent supporting RDM in the near future.

I think the ESP32 is an excellent candidate for ArtNet support because of its built-in WiFi antenna so I am open to the idea of adding ArtNet! It just won't be for a while if I ever get around to it.

bensuffolk commented 1 year ago

Personally I think this DMX library should remain dedicated to what it already does. i.e. doing a good job of sending and receiving DMX over UART. No need to bloat it out with other stuff.

ArtNet is about sending and receiving DMX over ethernet. That should be kept in a different library. Likewise you could also have an sACN library which has superseded ArtNet anyway now.

You could then write your own app to take the output from ArtNet or sACN libraries and send it into esp_dmx. Then add a web server to configure the node etc. But this is all stuff thats needs to go into an application not a library.

From what I remember ArtNet is not hard (I wrote an ArtNet transmitter for some lighting software I was developing 10 years or so ago, but thats in objective C so no use for ESP32). You might want to check out libartnet as a starting point as I expect it would not take a lot to get it to compile for esp-idf as its all straight C using standard BSD functions.

It is on my list to do for my project at some point, but I have other priorities first. But if nobody has done it by the time I need to implement it then I'll crack on with it and make it available.

someweisguy commented 1 year ago

Personally I think this DMX library should remain dedicated to what it already does. i.e. doing a good job of sending and receiving DMX over UART. No need to bloat it out with other stuff.

I tend to agree with this idea. I have gotten other suggestions that would be a higher priority to me than adding ArtNet, such as writing a C++ wrapper for this library or porting this library to a different microcontroller such as the STM32. But still, I'm not 100% against adding ArtNet. It would just be a hard sell for me.

I've also read that ArtNet and RDM don't play nicely together. That challenge doesn't sound very appetizing to me at the moment, though I'll grant I'm pretty fried with getting RDM working.

Likewise you could also have an sACN library which has superseded ArtNet anyway now.

I've gotten this feedback as well. I'd be interested in seeing an sACN library that also supports ArtNet and regular ACN - I think that could be a particularly useful niche to fill! Especially for technicians (like me) who still have ArtNet equipment in inventory. 😄

bensuffolk commented 1 year ago

Likewise you could also have an sACN library which has superseded ArtNet anyway now.

I've gotten this feedback as well. I'd be interested in seeing an sACN library that also supports ArtNet and regular ACN - I think that could be a particularly useful niche to fill! Especially for technicians (like me) who still have ArtNet equipment in inventory. 😄

FYI sACN does not support RDM.

riwalker commented 1 year ago

FYI, sACN uses RDMNet : https://github.com/ETCLabs/RDMnet (which still needs an RDM responder functionality 😉 )

bensuffolk commented 1 year ago

RDMnet is different to sACN, it can be used at the same time so you can get both DMX and RDM via IP.

riwalker commented 1 year ago

RDMnet is different to sACN, it can be used at the same time so you can get both DMX and RDM via IP. Lets not make this site a debate on Art-Net vs sACN, they both work to achieve DMX over IP. I was responding to your quote that sACN doesn't support RDM - Agreed, but the combination of sACN and RDMnet provide the same functionality as Art-Net (without the Broadcast, as Art-Net can flood a WIFI link as non selective like sACN Multicast)

someweisguy commented 1 year ago

Thank you all for the discourse! I've used DMX-related IP protocols so rarely in my career so I am finding the difference between them very interesting to learn about. I'm definitely going to be doing some research in the future, but I won't hold your breath about ArtNet support for this library. It sounds like WLED will get the job done, as @OckertM mentioned.

In any case, I am in the mood to close some issues so I will be closing this as "not planned." Let me know if you have any additional thoughts!