diff --git a/README.md b/README.md index e6f9494..b284059 100755 --- a/README.md +++ b/README.md @@ -1,68 +1,102 @@ # node-red-contrib-ember + Simple Ember+ client node for broadcast automation (LAWO, DHD, etc.). Ember+ is open source and implemented in hard- and software products. More information can be found here: [Ember+ control protocol](https://github.com/Lawo/ember-plus/wiki) ## install + Inside your node-red directory, install the NPM node-red-contrib-ember package. ``` npm install node-red-contrib-ember ``` -## emberplus-server node +## emberplus-server node + First of all there is at least one emberplus-server node to be configured. Simply set an IP address and a port (usually 9000). It is possible to add several emberplus-server nodes for different targets (for example all your audio mixers). Optionally, provide a coma separated list of paths to limit the tree. If no path provided, the tool will download the entire tree - this could take a long time if the tree is really big. - + - + ## emberplus node + Each emberplus node is associated with a previously configured emberplus-server node. Further an object path can be selected if the node should subscribe a specific object in the Ember+ tree. If you don't know the path, click on the looking glass symbol on the right. - + ### Input Pin + The input pin of the node takes different type of message payloads. For a Parameter node, the message payload is used to set the value of the parameter. The two types of message payloads are: -- msg.payload takes the plain value to be set to the specified path. Example: + +- msg.payload takes the plain value to be set to the specified path. Example: + ``` true ``` + - msg.payload contains path and value to the specified node. Example: + ``` {"full":{"path":"0.1.0","value":true}} ``` +For a Matrix node, that input pin is used to pass connection to establish the matrix connection on the ember server. +The message payload types are: + +- msg.payload takes the matrix connection object as a value to set to the specified node path. Example: + +``` +{ + "target": number, // matrix destination port number + "sources": number[] // Array of sources would be activated on the ember server. +} +``` + +- msg.payload contains path and value to the specified node. Example: + +``` +{"full":{"path":"0.1.0","value":{"target": 1, "sources": [2]}}} +``` + For a Function node, the input pin is used to pass parameters to invoke the function from the ember server. The message payload types are: + - msg.payload.args takes a javascript object containing the list of args for the function + ``` [{"type":1,"value":17},{"type":1,"value":88}] ``` + - msg.payload takes a JSON object string that will be parsed to create the javascript object. -The string should be similar to the obejct above. + The string should be similar to the obejct above. The argument types are + ``` 1 integer 2 real 3 string ``` - + - + ### Output Pin + The data format of the output pin can be configured: + - plain: msg.payload contains the plain value from the Ember+ object -- contents: msg.payload.contents contains the contents Ember+ object from the underlying node-emberplus client +- contents: msg.payload.contents contains the contents Ember+ object from the underlying node-emberplus client - full: msg.payload.full contains the full Ember+ object from the underlying node-emberplus (including the device path) - json: msg.payload contains a JSON object representing the ember element. For function element, the output is always the response to the invokation of the function. + ``` {"invocationId":2,"success":true,"result":[{"type":"integer","value":105}]} ``` diff --git a/emberplus-server.js b/emberplus-server.js index 62c7637..c8e344a 100755 --- a/emberplus-server.js +++ b/emberplus-server.js @@ -39,7 +39,7 @@ module.exports = function (RED) { * @param {EmberLib.Element} element */ async function getEmberChildren(element) { - if (element.isParameter()) { + if (element.isParameter() || element.isMatrix()) { node.paths.push({ "path": element.path, "id": element.path + ":/" + element.identifier + "->" + (element.description ? element.description : element.value) }); } else if (element.isFunction()) { node.paths.push({ "path": element.path, "id": element.path + ":/" + element.identifier + "->" + getFunctionDescriptor(element) }); diff --git a/emberplus.html b/emberplus.html index d2d2a9b..ab0ad2f 100755 --- a/emberplus.html +++ b/emberplus.html @@ -124,4 +124,4 @@