prisme-flow
Version:
prisme platform flow engine
110 lines (98 loc) • 4.07 kB
HTML
<!--
Created by prisme.io on 09/06/2017.
@author <a href="mailto:hello@prisme.io">savane vamara</a> (prisme.io)
-->
<script type="text/javascript">
RED.nodes.registerType('OpcUa-Client', {
category: 'plc',
color: "#3FADB5",
defaults: {
endpoint: {value: "", required: true, type: "OpcUa-Endpoint"},
action: {value: "read", required: true},
time: {value: 10},
timeUnit: {value: "s"},
name: {value: ""}
},
inputs: 1,
outputs: 1,
align: "right",
icon: "opcualogo.png",
label: function () {
return this.name || "OPC UA Client";
},
labelStyle: function () {
return this.name ? "node_label_italic" : "";
},
oneditprepare: function () {
var node = this;
try {
var inputAction = $('#node-input-action');
var inputTime = $('#node-input-timerow');
change_time_input(); // first to fit config now
inputAction.change(change_time_input);
} catch (err) {
console.log(err);
}
function change_time_input() {
if (inputAction.val() == "subscribe" || inputAction.val() == "events") {
inputTime.show();
}
else {
inputTime.hide();
}
}
}
});
</script>
<script type="text/x-red" data-template-name="OpcUa-Client">
<div class="form-row">
<label for="node-input-endpoint"><i class="icon-tasks"></i> Endpoint</label>
<input type="text" id="node-input-endpoint" placeholder="opc.tcp://localhost:4334">
</div>
<div class="form-row">
<label for="node-input-action"><i class="fa fa-tasks"></i> Action</label>
<select type="text" id="node-input-action" style="width:72%;">
<option selected value="read">READ</option>
<option value="write">WRITE</option>
<option value="browse">BROWSE</option>
<option value="subscribe">SUBSCRIBE</option>
<option value="events">EVENTS</option>
<option value="info">INFO</option>
</select>
</div>
<div class="form-row" id="node-input-timerow">
<label for="node-input-time"><i class="icon-time"></i> Interval</label>
<input type="number" id="node-input-time" placeholder="number" style="max-width:120px">
<select id="node-input-timeUnit" style="max-width:160px">
<option value="ms">millisecond(s)</option>
<option value="s">second(s)</option>
<option value="m">minute(s)</option>
<option value="h">hour(s)</option>
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tasks"></i> Name</label>
<input type="text" id="node-input-name" placeholder="">
</div>
</script>
<script type="text/x-red" data-help-name="OpcUa-Client">
<p>Connect to an endpoint like opc.tcp://host:port/UA/EndpointName.</p>
<p>Actions are:</p>
<p>
<ul>
<li>Read</li>
<li>Write</li>
<li>Browse</li>
<li>Subscribe</li>
<li>Event</li>
<li>Info</li>
</ul>
</p>
<p>Inject your OPC UA address (NodeId) by the <strong>Topic</strong> of an Inject node or with the OpcUa-Item cotrolled by an Inject node.</p>
<p>To Read/Write inject the Topic for every operation.</p>
<p>The value to Write should be injected by an OpcUa-Item.</p>
<p>Inject the Topic only once on Subscribe or Event for subscription and you got the changing value on every Interval.
Every inject subscribes a new monitored Item.</p>
<p>Interval is setting for Client <strong>requestedPublishingInterval</strong> (default: 100ms).</p>
<p>Input <strong>msg.payload</strong> can bring an samplingInterval for monitored Items/Events in subscription (default: 100ms).</p>
</script>