For the past few years I've been using Hexler's Touch OSC app to control lights driven from a variety of micro controllers (arduino, netduino, etc). Earlier this year I started playing with nodejs to drive my lights via a beaglebone black or raspberry pi.
So far Spooky supports a variety of Chauvet and Eliminator DMX fixtures via an ArtNet to DMX gateway. I use the EntTec ODE model, but any ArtNet to DMX gateway should work. Due to my inability to get NodeJS to speak SPI to my hanging lantern lights, I only can control those via having Spooky speak OSC to my ruby app that controls the octobars. I'm looking at having node send instructions to another C app that will drive the spi in the future. MS accurate timing in a do everything async framework is a bit difficult, and probably isn't a problem NodeJS is looking to solve.
All fixtures in Spooky are controlled via Open Sound Control ( OSC ). I've included a few TouchOSC templates in the repo for those looking for a quick start. Spooky does not currently support responding to clients with an updated control state. I'm looking at refactoring Spooky to update a state machine of every lighting fixture on every inbound request to enable responding to connected clients with the state of every control.
In addition to lighting fixtures, I've added support for the Chauvet Hazer I use for parties. I've done my best to make adding new devices to spooky as easy as possible.
Spooky Github: https://github.com/MarkKropf/spooky
Here are a few of the TouchOSC layouts that are included: