diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..52528c1 --- /dev/null +++ b/readme.md @@ -0,0 +1,150 @@ +# node-dmx + +DMX-512 controller library for node.js - also includes a Webinterface and HTTP API. + +## Webinterface + +### Configuration + +The Daemon dmx-web looks for a configuration file in /etc/dmx-web.json. An alternate location can be passed as a command line argument. + +This configuration file consists of three sections: + +- Server +- Universes +- Presets + +In the Server section you can set the listen port and host. +Under Universes you describe the DMX Universes with details like which output driver to use and which devices are at which address. +The presets section allows you to specify a state some channels should be set when the preset is called. + +A example configuration is in the repository by the name dmx-web-example.conf + +### Run + + dmx-web [-c ] + +### Animation HTTP API + +A List of Channel Transistions can be POSTed to /animation/<universe>. Each transistion is a JSON Object with at least the to property present. The Value of which also has to be an Object describing the channel end-states. + +A duration for this transistion can be given in the duration property. +If not specified 0ms is assumed. + +Example: + + [ + {"to": {"10": 0, "20": 0}}, + {"to": {"10": 255}, "duration": 2000}, + {"to": {"20": 255}, "duration": 1000} + ] + +This sets channels 10 and 20 to zero. Then transistions channel 10 to 255 in 2 seconds. After that channel 20 is faded to 255 in 1 second. + +## Library API + + var DMX = require('dmx') + +### Class DMX + +#### new DMX() + +Create a new DMX instance. This class is used to tie multiple universes together. + +#### dmx.registerDriver(name, module) + +- name - String +- module - Object implementing the Driver API + + +Register a new DMX Driver module by its name. +Two Drivers are currently registered by default: + +- null: a development driver that prints the universe to stdout +- enttec-usb-dmx-pro: a driver for devices using a Enttec USB DMX Pro chip like the "DMXKing ultraDMX Micro". This driver requires the ftdi module () + +#### dmx.addUniverse(name, driver, device_id) + +- name - String +- driver - String, referring a registered driver +- device_id - Number or Object + +Add a new DMX Universe with a name, driver and an optional device_id used by the driver to identify the device. + +#### dmx.update(universe, channels) + +- universe - String, name of the universe +- channels - Object, keys are channel numbers, values the values to set that channel to + +Update one or multiple channels of a universe. Also emits a update Event with the same information. + + +#### DMX.devices + +A JSON Object describing some Devices and how many channels they use. +Currently not many devices are in there but more can be added to the devices.js file. Pull requests welcome ;-) + +The following Devices are known: + +- generic - a one channel dimmer +- showtec-multidim2 - 4 channel dimmer with 4A per channel +- eurolite-led-bar - Led bar with 3 RGB color segments and some programms +- stairville-led-par-56 - RGB LED Par Can with some programms + +### Class DMX.Animation + +#### new DMX.Animation() + +Create a new DMX Animation instance. This can be chained similar to jQuery. + +#### animation.add(to, duration, options) + +- to - Object, keys are channel numbers, values the values to set that channel to +- duration - Number, duration in ms +- options - Object + +Add an animation Step. +The options Object takes an easing key which allows to set a easing function from the following list: + +- linear (default) +- inQuad +- outQuad +- inOutQuad +- inCubic +- outCubic +- inOutCubic +- inQuart +- outQuart +- inOutQuart +- inQuint +- outQuint +- inOutQuint +- inSine +- outSine +- inOutSine +- inExpo +- outExpo +- inOutExpo +- inCirc +- outCirc +- inOutCirc +- inElastic +- outElastic +- inOutElastic +- inBack +- outBack +- inOutBack +- inBounce +- outBounce +- inOutBounce + +#### animation.delay(duration) + +- duration - Number, duration in ms + +Delay the next animation step for duration. + +#### animation.run(universe, onFinish) + +- universe - Object, reference to the universe driver +- onFinish - Function, called when the animation is done