diff --git a/.gitignore b/.gitignore index 6568e15..8232012 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ results .DS_Store node_modules +.project +.com.greenworldsoft.syncfolderspro diff --git a/com.dmx-web.server.example.plist b/com.dmx-web.server.example.plist new file mode 100644 index 0000000..e69de29 diff --git a/dmx-web-example.conf b/dmx-web-example.conf index f470862..bde5ca0 100644 --- a/dmx-web-example.conf +++ b/dmx-web-example.conf @@ -1,76 +1,143 @@ -module.exports = { +{ "server": { "listen_port": 8080, "listen_host": "::", - // drop privileges to: - // "uid": "www-data", - // "gid": "www-data" + "comment1": "On linux drop privileges by adding the following lines: uid: www-data and gid: www-data", + "comment2": "On Macos uid and gid must be set in the launchd script." }, "presets": [ { - label: "White", - values: { - 'office': { 0:16, 1:255, 2:0, 3:255, 4: 255, 5:255, 15:16, 16:255, 17:0, 18:255, 19: 255, 20:255 } + "label": "White", + "values": { + "office": { "0":16, "1":255, "2":0, "3":255, "4": 255, "5":255, "15":16, "16":255, "17":0, "18":255, "19": 255, "20":255 } } }, { - label: 'Natural', - values: { - 'office': { 0:16, 1:255, 2:0, 3:255, 4: 190, 5:140, 15:16, 16:255, 17:0, 18:255, 19: 190, 20:140 } + "label": "Natural", + "values": { + "office": { "0":16, "1":255, "2":0, "3":255, "4": 190, "5":140, "15":16, "16":255, "17":0, "18":255, "19": 190, "20":140 } } }, { - label: 'Worklight', - values: { - 'office': { 0:16, 1:130, 2:0, 3:255, 4: 165, 5:0, 15: 1, 16:255, 17:0, 18:255, 19: 190, 20:140, 21:0, 22: 0, 23:0, 24:255, 25: 190, 26:140 } + "label": "Worklight", + "values": { + "office": { "0":16, "1":130, "2":0, "3":255, "4": 165, "5":0, "15": 1, "16":255, "17":0, "18":255, "19": 190, "20":140, "21":0, "22": 0, "23":0, "24":255, "25": 190, "26":140 } } }, { - label: 'Chill', - values: { - 'office': { 0:16, 1:255, 2:0, 3:255, 4: 39, 5:0, 15: 1, 16:255, 17:0, 18:255, 19: 255, 20:0, 21:0, 22: 0, 23:0, 24:128, 25: 0, 26:255, 31:255, 32: 60 } + "label": "Chill", + "values": { + "office": { "0":16, "1":255, "2":0, "3":255, "4": 39, "5":0, "15": 1, "16":255, "17":0, "18":255, "19": 255, "20":0, "21":0, "22": 0, "23":0, "24":128, "25": 0, "26":255, "31":255, "32": 60 } } }, { - label: 'Cinema', - values: { - 'office': { 0:16, 1:30, 2:0, 3:255, 4: 39, 5:0, 15:0, 31:255, 32:0 } + "label": "Cinema", + "values": { + "office": { "0":16, "1":30, "2":0, "3":255, "4": 39, "5":0, "15":0, "31":255, "32":0 } } - }, + } ], - universes: { - 'office': { - 'output': { - // 'driver': 'enttec-usb-dmx-pro', - // 'device': '/dev/cu.usbserial-6AVNHXS8' - 'driver': 'null', - 'device': 0 + "universes": { + "office": { + "output": { + "driver": "enttec-usb-dmx-pro", + "device": "/dev/cu.usbserial-6A1KQK87" + }, + "devices": [ + { + "type": "eurolite-led-bar", + "address": 0 + }, + { + "type": "eurolite-led-bar", + "address": 15 + }, + { + "type": "showtec-multidim2", + "address": 31 + }, + { + "type": "stairville-led-par-56", + "address": 64 + }, + { + "type": "stairville-led-par-56", + "address": 70 + }, + { + "type": "stairville-led-par-56", + "address": 76 + } + ] + }, + "bedroom": { + "output": { + "driver": "dmxking-ultra-dmx-pro", + "device": "/dev/cu.usbserial-6AVNHXS8", + "options": { + "port": "A" + } + }, + "devices": [ + { + "type": "eurolite-led-bar", + "address": 0 + }, + { + "type": "eurolite-led-bar", + "address": 15 + }, + { + "type": "showtec-multidim2", + "address": 31 + }, + { + "type": "stairville-led-par-56", + "address": 64 + }, + { + "type": "stairville-led-par-56", + "address": 70 + }, + { + "type": "stairville-led-par-56", + "address": 76 + } + ] + }, + "livingroom": { + "output": { + "driver": "dmxking-ultra-dmx-pro", + "device": "/dev/cu.usbserial-6AVNHXS8", + "options": { + "port": "B" + } }, - 'devices': [ + "devices": [ { - 'type': 'eurolite-led-bar', - 'address': 0 + "type": "eurolite-led-bar", + "address": 0 }, { - 'type': 'eurolite-led-bar', - 'address': 15 + "type": "eurolite-led-bar", + "address": 15 }, { - 'type': 'showtec-multidim2', - 'address': 31 + "type": "showtec-multidim2", + "address": 31 }, { - 'type': 'stairville-led-par-56', - 'address': 64 + "type": "stairville-led-par-56", + "address": 64 }, { - 'type': 'stairville-led-par-56', - 'address': 70 + "type": "stairville-led-par-56", + "address": 70 }, { - 'type': 'stairville-led-par-56', - 'address': 76 + "type": "stairville-led-par-56", + "address": 76 } ] } diff --git a/readme.md b/readme.md index d4ebf30..b33287b 100644 --- a/readme.md +++ b/readme.md @@ -28,6 +28,10 @@ A example configuration is in the repository by the name dmx-web-example.c dmx-web [-c ] +### Run as a service + +On MacOS you can run dmx-web as a service by adding a launch script to /Library/LaunchDaemons. See the example file. + ### 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. @@ -70,12 +74,14 @@ These drivers are currently registered by default: - dmx4all: driver for DMX4ALL devices like the "NanoDMX USB Interface" - enttec-usb-dmx-pro: a driver for devices using a Enttec USB DMX Pro chip like the "DMXKing ultraDMX Micro". - enttec-open-usb-dmx: driver for "Enttec Open DMX USB". This device is NOT recommended, there are known hardware limitations and this driver is not very stable. (If possible better obtain a device with the "pro" chip) +- dmxking-utra-dmx-pro: driver for the DMXKing Ultra DMX pro interface. This driver support multiple universe specify the options with Port = A or B -#### dmx.addUniverse(name, driver, device_id) +#### dmx.addUniverse(name, driver, device_id, options) - name - String - driver - String, referring a registered driver - device_id - Number or Object +- options - Object, driver specific options Add a new DMX Universe with a name, driver and an optional device_id used by the driver to identify the device. For enttec-usb-dmx-pro and enttec-open-usb-dmx device_id is the path the the serial device. For artnet it is the target ip.