UNPKG

grunig-nodes

Version:

Grünig Nodes Library

326 lines (296 loc) 7.55 kB
## Description These are nodes for Grunig. All the nodes require an additional node for the functions (mqtt-node, opcua-client, influxdb out, modbus-read). Every node (except for the OpcUa-Read) also requires an function node with the code in the node-description to get the right format for node-input. There is an example flow for the relevant nodes. Node-Red: - [Node-Red: grunig-nodes](https://flows.nodered.org/node/grunig-nodes) - [Node-Red: flow example](https://flows.nodered.org/flow/c758a918fd0cb3f8f7f7ace8c09cec95) ## relevant Nodes <details><summary>Modbus-Read *Reads data from Modbus and puts it in MQTT* </summary> > ## Transfer of Values > The values Payload, Communication, and MachineID must be passed through a Function Node. > > Code: > ```js > let value = msg.payload; > msg.payload = {}; > msg.payload.Value = value; > msg.payload.MachineID = flow.get("fMachineID"); > msg.payload.Communication = flow.get("fCommunication"); > return msg; > ``` > > > ## MQTT Path > Here must be the MQTT path where the data should be written. > > Example: > > Error > > > > ## Format > The desired format can be selected. > > ## payload > Only the payload value is output. > > Example: > > Main_Warning = 0 > > ## unit > The payload value and a unit are output. > > Example: > > ProgramNumber = {"value":0,"unit":"#"} > > > > ## Communication > It can be selected whether the values are set to 0 if there is no active connection to the machine. > > Value should be retained if connection is lost: > > ignore > > Value should be set to 0 if connection is lost: > > consider > > > > ## Data x > Here come the variable names after the Topic-Path. > > The square brackets must specify the array in which the value is stored. > > This usually corresponds to the last two digits of the Modbus address. > > Digit example: > > Modbus address: 32110 --> last two digits = [10] > > Input: > > Main_Warning [10] > > ## Format = unit > If the format is **unit**, then the unit must be specified in another square bracket. > > Example: > > ProgramNumber [30] [#] > > > > ## Example Path > The path is constructed as follows: > > "GRUNIG/MachineID/" + MQTT Path + Data x > > In the example, we have *Error* as the MQTT Path and *Main_Warning* as Data x. > > This means, in the example, the value will be written to this path in the MQTT broker: > > GRUNIG/MachineID/Error/Main_Warning </details> <details><summary>OpcUa-Read *Reads OpcUa data and puts it in MQTT* </summary> > ## Path > Here must be the path of the OpcUa variables (with "**.**" at the end). > > Example: > > ns=6;s =:: Industry40:Interface.State. > > > > ## Value > Here a specific value can be entered to be written to the variables. > > If the value should be taken from the payload, leave it empty. > > > > ## Data x > Here come the names of the variables that come after the path in the OpcUa server. > > The data type of each variable must be written in square brackets "**[ ]**" after the variable name. > > Example: > > bCommunication [Boolean] > > ### Permissible Variables > | Type | Description | > |---------------------|--------------------------| > | Int8 | 8-Bit Integer | > | Int16 | 16-Bit Integer | > | Int32 | 32-Bit Integer | > | Int64 | 64-Bit Integer | > | UInt8 | 8-Bit Unsigned Integer | > | UInt16 | 16-Bit Unsigned Integer | > | UInt32 | 32-Bit Unsigned Integer | > | UInt64 | 64-Bit Unsigned Integer | > | Byte | Byte | > | SByte | Signed Byte | > | Float | Floating Point Number | > | Double | Double | > | Boolean | Boolean | > | String | String | > | LocalizedText | Localized Text | > | DateTime | Date and Time | > | Int8 Array | Array of Int8 | > | Int16 Array | Array of Int16 | > | Int32 Array | Array of Int32 | > | UInt8 Array | Array of UInt8 | > | UInt16 Array | Array of UInt16 | > | UInt32 Array | Array of UInt32 | > | Byte Array | Array of Byte | > | SByte Array | Array of Signed Byte | > | String Array | Array of Strings | > | Float Array | Array of Floats | > | Double Array | Array of Doubles | > | Boolean Array | Array of Booleans | > | ExtensionObject | Extension Object | > | ExtensionObject Array | Array of Extension Objects | </details> <details><summary>MQTT-InfluxDB-Write *Writes MQTT to InfluxDB or OpcUa to MQTT* </summary> >## Transfer of Values >The values `Payload` and `MachineID` must be passed through a Function Node. > >Code: > >```js >let value = msg.payload; >msg.payload = {}; >msg.payload.MachineID = flow.get("fMachineID"); >msg.payload.Value = value; >return msg; >``` > > > >## Path Construction >The path is constructed as follows: > > "GRUNIG/MachineID/" + Topic-Path + Data x >In the example, we have */State* as the Topic-Path and *MachineState* as Data x. > >This means, in the example, the value will be written to this path in the MQTT broker: > > ```GRUNIG/MachineID/State/MachineState``` > > > > >### Topic-Path >Here comes the path from MQTT, even if >**write InfluxDB** is selected. > >Example: > > /State > > > > >## Action >You can choose whether to write to MQTT or to InfluxDB. > > > > >## Format >If **write MQTT** is selected in Action, then the format can be chosen here. > > > > >### Format Example: **Alarm message** > > "value": "1", > "description": "ALARM_STATE_ACTIVE" > >### Format Example: **Unit** > > "value": "5", > "unit": "s", > > > >## Type >If **write InfluxDB** is selected in Action, then the type can be determined here. > >Example: **State** > > MachineState: 1 > "_type": State > > > >## Data x >Here come the variable names after the Topic-Path. > >Example: > > ```MachineState``` </details> <details><summary>AlarmOutput *Reads the MQTT from the input JSON and puts it in InfluxDB format. Reads the Alarm-Input Bitwise.* </summary> >## Alarm List >This is where alarm messages are specified. >```js > "Enable": true, > "Alarm": "Main A00", > "Message": [ > "Error 0", > "Fehler 0" > ] >``` >## Enable > The **Enable** parameter is used to disable individual alarms. > > true: Alarm is triggered > > false: Alarm is not triggered > >## Alarm > Name of the alarm. > >```json >"Main A00" >``` > >## Message > The first string contains the error message in English. > >```json >"Error 0" >``` > > The second string contains the error message in German. > >```json >"Fehler 0" >``` > > > >## Path MQTT > This specifies the path from the MQTT broker for the alarms. > >```cd >Error/Main_Warning >``` > </details>