node-red-contrib-iiot-opcua
Version:
An Industrial IoT OPC UA toolbox contribution package for Node-RED based on node-opcua.
101 lines (96 loc) • 5.7 kB
HTML
<!--
The BSD 3-Clause License
Copyright 2022 - DATATRONiQ GmbH (https://datatroniq.com)
Copyright (c) 2018-2022 Klaus Landsdorf (http://node-red.plus/)
Copyright 2015,2016 - Mika Karaila, Valmet Automation Inc. (node-red-contrib-opcua)
All rights reserved.
node-red-contrib-iiot-opcua
--> <script type='text/javascript'> RED.nodes.registerType('OPCUA-IIoT-Event', {
category: 'IIoT',
color: '#ABCDEF',
defaults: {
eventType: {value: 'i=2041', required: true},
eventTypeLabel: {value: 'BaseTypeEvent'},
resultType: {value: 'basic'},
queueSize: {value: 1, required: true, validate: RED.validators.number()},
usingListener: {value: false},
name: {value: ''},
showStatusActivities: {value: false},
showErrors: {value: false}
},
inputs: 1,
outputs: 1,
align: 'left',
icon: 'icon.png',
label: function () {
return this.name || 'Event'
},
labelStyle: function () {
return this.name ? 'node_label_italic' : ''
},
oneditprepare: function () {
let node = this
node.lookupItems = []
let eventTypeLookupField = $("#node-lookup-eventType")
let eventTypeField = $("#node-input-eventType")
let eventTypeLabelField = $("#node-input-eventTypeLabel")
eventTypeLookupField.click(function () {
eventTypeLookupField.addClass('disabled')
$.getJSON('/opcuaIIoT/list/EventTypeIds', function (data) {
eventTypeLookupField.removeClass('disabled')
node.lookupItems = []
$.each(data, function (i, entry) {
node.lookupItems.push({value: entry.nodeId, label: entry.label})
})
eventTypeField.autocomplete({
source: node.lookupItems,
minLength: 0,
focus: function (event, ui) {
eventTypeField.val(ui.item.label);
return false;
},
select: function (event, ui) {
eventTypeField.val(ui.item.label)
eventTypeLabelField.val(ui.item.label + ' (' + ui.item.value + ')')
return false;
},
close: function (event, ui) {
eventTypeField.autocomplete("destroy")
}
}).autocomplete("search", "")
})
})
}
}) </script> <script type='text/x-red' data-template-name='OPCUA-IIoT-Event'>
<div class='form-row'> <label for='node-input-eventType'><i class='icon-search'></i> <span
data-i18n='opcua-iiot-contrib.label.eventType'></span></label> <input type='text' id='node-input-eventType'
style='width:40%' placeholder='i=2041'> <a id='node-lookup-eventType' class='btn'><i id='node-lookup-topic-icon'
class='fa fa-search'></i></a> <div style='margin:20px auto;margin-left:103px'> <p><input type='text'
id='node-input-eventTypeLabel' style='width:80%' readonly='readonly'></p> <p><span
data-i18n='opcua-iiot-contrib.label.lookupUseHint'></span></p> </div> </div> <div class='form-row'
id='node-inject-resultType'> <label for=''><i class='fa fa-list'></i> <span
data-i18n='opcua-iiot-contrib.label.resultType'></span></label> <select id='node-input-resultType' type='text'
style='width:140px'> <option value='basic' data-i18n='opcua-iiot-contrib.resulttype.label.basic'></option> <option
value='condition' data-i18n='opcua-iiot-contrib.resulttype.label.condition'></option> <option value='state'
data-i18n='opcua-iiot-contrib.resulttype.label.state'></option> <option value='all'
data-i18n='opcua-iiot-contrib.resulttype.label.all'></option> </select> </div> <div class='form-row'> <label
for='node-input-queueSize'><i class='icon-time'></i> <span data-i18n='opcua-iiot-contrib.label.queueSize'></span>
</label> <input type='number' id='node-input-queueSize' placeholder=''> </div> <div class='form-row'> <label
for='node-input-name'><i class='fa fa-tag'></i> <span data-i18n='node-red:common.label.name'></span></label> <input
type='text' id='node-input-name' placeholder=''> </div> <hr> <div class='form-row'> <label style='min-width:160px'
for='node-input-usingListener'><i class='fa fa-assistive-listening-systems'></i> <span
data-i18n='opcua-iiot-contrib.label.usingListener'></span></label> <input type='checkbox' id='node-input-usingListener'
style='max-width:30px'> </div> <hr> <div class='form-row'> <label style='min-width:160px'
for='node-input-showStatusActivities'><i class='fa fa-bolt'></i> <span
data-i18n='opcua-iiot-contrib.label.showActivities'></span></label> <input type='checkbox'
id='node-input-showStatusActivities' style='max-width:30px'> </div> <div class='form-row'> <label
style='min-width:160px' for='node-input-showErrors'><i class='fa fa-exclamation-circle'></i> <span
data-i18n='opcua-iiot-contrib.label.showErrors'></span></label> <input type='checkbox' id='node-input-showErrors'
style='max-width:30px'> </div> </script> <script type='text/x-red' data-help-name='OPCUA-IIoT-Event'>
<h2>OPC UA IIoT Event</h2> <p>
The Event node is to set up an event listener with parameters. It is to trigger by an Inject of Node-RED or by the OPC UA IIoT Inject. It could also trigger with incoming events from other nodes.
</p> <h3>Input</h3> <p>msg with addressSpaceItems</p> <h3>Output</h3> <div> <strong>Event message:</strong> <ul> <li>
payload (number/Object) <ul> <li>eventType (ObjectTypeId) </li><li>eventFilter (Array of conditions or events) <ul> <li>
selectClause (Array) </li><li>whereClause (Object) </li></ul> </li><li>eventFields (Array) </li><li>queueSize (counter)
</li><li>interval (number msec.) <ul> <li>topic </li><li>nodetype (events) </li></ul> </li></ul></li></ul></div>
<strong>Name</strong> <p>Name in the flow of Node-RED.</p> </script>