prisme-flow
Version:
prisme platform flow engine
374 lines (340 loc) • 13.8 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/x-red" data-template-name="bacnet-server">
<div class="form-row">
<label for="node-config-input-interface"><i class="icon-bookmark"></i> Interface</label>
<input type="text" id="node-config-input-interface">
</div>
<div class="form-row">
<label for="node-config-input-port"><i class="icon-bookmark"></i> Port</label>
<input type="text" id="node-config-input-port">
</div>
<div class="form-row">
<label for="node-config-input-broadcastAddress"><i class="icon-bookmark"></i> Broadcast Address</label>
<input type="text" id="node-config-input-broadcastAddress">
</div>
<div class="form-row1">
<label for="node-config-input-adpuTimeout"><i class="fa fa-clock-o"></i> Connection Timeout (s)</label>
<input type="text" id="node-config-input-adpuTimeout">
</div>
</script>
<script type="text/x-red" data-help-name="bacnet-server">
<p>To be able to communicate to BACNET devices, you have to initialize a new client instance.</p>
<p>
<ul>
<li><code>option</code> <em>[object]</em> - The options object used for parameterising the bacstack.
<ul>
<li><code>port</code> <em>[number]</em> - BACNET communication port for listening and sending. Default is <code>47808</code>.
<em>Optional</em>.</li>
<li><code>interface</code> <em>[string]</em> - Specific BACNET communication interface if different from primary one.
<em>Optional</em>.</li>
<li><code>broadcastAddress</code> <em>[string]</em> - The address used for broadcast messages.
Default is <code>255.255.255.255</code>. <em>Optional</em>.</li>
<li><code>adpuTimeout</code> <em>[number]</em> - The timeout in milliseconds
until a transaction should be interpreted as error. Default is <code>3000</code>. <em>Optional</em>.</li>
</ul>
</li>
</ul>
</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('bacnet-server', {
category: 'config',
defaults: {
interface: {
value: '', required: true
},
port: {
value: 47808,
required: true,
validate: RED.validators.number()
},
broadcastAddress: {
value: '255.255.255.255',
required: true
},
timeout: {
value: 3000,
required: false,
validate: RED.validators.number()
}
},
label: function() {
return 'bacnet@' + this.interface + ':' + this.port;
}
});
</script>
<script type="text/x-red" data-template-name="bacnet-discovery">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-lowLimit"><i class="icon-tag"></i> Low limit</label>
<input type="text" id="node-input-lowLimit" placeholder="Low limit">
</div>
<div class="form-row">
<label for="node-input-highLimit"><i class="icon-tag"></i> High limit</label>
<input type="text" id="node-input-highLimit" placeholder="High limit">
</div>
<div class="form-row">
<label for="node-input-address"><i class="icon-tag"></i> Address</label>
<input type="text" id="node-input-address" placeholder="Address">
</div>
<div class="form-row">
<label for="node-input-server"><i class="icon-globe"></i> Server</label>
<input type="text" id="node-input-server">
</div>
</script>
<script type="text/x-red" data-help-name="bacnet-discovery">
<p>The <code>whoIs</code> command discovers all BACNET devices in the network.</p>
<ul>
<li><code>lowLimit</code> <em>[number]</em> - Minimal device instance number to search for. <em>Optional</em>.</li>
<li><code>highLimit</code> <em>[number]</em> - Maximal device instance number to search for. <em>Optional</em>.</li>
<li><code>address</code> <em>[string]</em> - Unicast address if command should device directly. <em>Optional</em>.</li>
</ul>
</script>
<script type="text/javascript">
RED.nodes.registerType('bacnet-discovery', {
category: 'plc',
color: '#E9967A',
defaults: {
name: {
value: ''
},
address: {
value: '',
required: false
},
lowLimit: {
value: '',
required: false,
validate: RED.validators.number()
},
highLimit: {
value: '',
required: false,
validate: RED.validators.number()
},
server: {
value: '',
type: 'bacnet-server'
}
},
inputs: 0,
outputs: 1,
icon: "bacnet.png",
paletteLabel: 'BACnet',
label: function() {
return (this.name || 'BACnet whoIs');
}
});
</script>
<script type="text/x-red" data-template-name="bacnet-read">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-address"><i class="icon-bookmark"></i> Address</label>
<input type="text" id="node-input-address" placeholder="">
</div>
<div class="form-row">
<label for="node-input-objectType"><i class="icon-bookmark"></i> Object Type</label>
<input type="text" id="node-input-objectType" placeholder="">
</div>
<div class="form-row">
<label for="node-input-objectInstance"><i class="icon-bookmark"></i> Object Instance</label>
<input type="text" id="node-input-objectInstance" placeholder="">
</div>
<div class="form-row">
<label for="node-input-propertyId"><i class="icon-bookmark"></i> Property ID</label>
<input type="text" id="node-input-propertyId" placeholder="">
</div>
<div class="form-row">
<label for="node-input-arrayIndex"><i class="icon-bookmark"></i> Array Index</label>
<input type="text" id="node-input-arrayIndex" placeholder="">
</div>
<div class="form-row">
<label for="node-input-server"><i class="icon-globe"></i> Server</label>
<input type="text" id="node-input-server">
</div>
</script>
<script type="text/x-red" data-help-name="bacnet-read">
<p>The <code>readProperty</code> command reads a single property of an object from a device.</p>
<ul>
<li><code>address</code> <em>[string]</em> - IP address of the target device.</li>
<li><code>objectType</code> <em>[number]</em> - The BACNET object type to read.</li>
<li><code>objectInstance</code> <em>[number]</em> - The BACNET object instance to read.</li>
<li><code>propertyId</code> <em>[number]</em> - The BACNET property id in the specified object to read.</li>
<li><code>arrayIndex</code> <em>[number]</em> - The array index of the property to be read.</li>
</ul>
</script>
<script type="text/javascript">
RED.nodes.registerType('bacnet-read', {
category: 'plc',
color: '#E9967A',
defaults: {
name: {
value: ''
},
address: {
value: '',
required: true
},
objectType: {
value: '',
required: true,
validate: RED.validators.number()
},
objectInstance: {
value: '',
required: true,
validate: RED.validators.number()
},
propertyId: {
value: '',
required: true,
validate: RED.validators.number()
},
arrayIndex: {
value: undefined
},
server: {
value: '',
type: 'bacnet-server'
}
},
inputs: 0,
outputs: 1,
icon: "bacnet.png",
paletteLabel: 'BACnet read',
label: function() {
return (this.name || 'BACnet read');
}
});
</script>
<script type="text/x-red" data-template-name="bacnet-write">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-address"><i class="icon-bookmark"></i> Address</label>
<input type="text" id="node-input-address" placeholder="Address">
</div>
<div class="form-row">
<label for="node-input-objectType"><i class="icon-bookmark"></i> Type</label>
<input type="text" id="node-input-objectType" placeholder="Object Type">
</div>
<div class="form-row">
<label for="node-input-objectInstance"><i class="icon-bookmark"></i> Instance</label>
<input type="text" id="node-input-objectInstance" placeholder="Object Instance">
</div>
<div class="form-row">
<label for="node-input-propertyId"><i class="icon-bookmark"></i> Property ID</label>
<input type="text" id="node-input-propertyId" placeholder="Property ID">
</div>
<div class="form-row">
<label for="node-input-priority"><i class="icon-bookmark"></i> Priority</label>
<input type="text" id="node-input-priority" placeholder="Priority">
</div>
<div class="form-row">
<label for="node-input-applicationTag"><i class="fa fa-empire"></i> Value Type</label>
<select id="node-input-applicationTag">
<option value="" disabled selected>Select your option</option>
<option value="0">Null</option>
<option value="1">Boolean</option>
<option value="2">Unsigned Int</option>
<option value="3">Signed Int</option>
<option value="4">Real</option>
<option value="5">Double</option>
<option value="6">Octect String</option>
<option value="7">Character String</option>
<option value="8">Bit String</option>
<option value="9">Enumerated</option>
<option value="10">Date</option>
<option value="11">Time</option>
<option value="12">Object Id</option>
<option value="13">Reserve 1</option>
<option value="14">Reserve 2</option>
<option value="15">Reserve 3</option>
</select>
</div>
<div class="form-row">
<label for="node-config-input-value"><i class="fa fa-empire"></i> Value</label>
<input type="text" id="node-input-value" placeholder="Value">
</div>
<div class="form-row">
<label for="node-input-server"><i class="icon-globe"></i> Server</label>
<input type="text" id="node-input-server">
</div>
</script>
<script type="text/x-red" data-help-name="bacnet-write">
<p>The <code>writeProperty</code> command writes a single property of an object to a device.</p>
<ul>
<li><code>address</code> <em>[string]</em> - IP address of the target device.</li>
<li><code>objectType</code> <em>[number]</em> - The BACNET object type to write.</li>
<li><code>objectInstance</code> <em>[number]</em> - IP address of the target device.</li>
<li><code>propertyId</code> <em>[number]</em> - The BACNET property id in the specified object to write.</li>
<li><code>priority</code> <em>[number]</em> - The priority to be used for writing to the property.</li>
<li><code>valueList</code> <em>[array]</em> - A list of values to be written to the speicifed property.
The <code>Tag</code> value has to be a <code>BacnetApplicationTags</code> declaration as specified in
<code>lib/bacnet-enum.js</code>.</li>
</ul>
</script>
<script type="text/javascript">
RED.nodes.registerType('bacnet-write', {
category: 'plc',
color: '#E9967A',
defaults: {
name: {
value: ''
},
address: {
value: '',
required: true
},
objectType: {
value: '',
required: true,
validate: RED.validators.number()
},
objectInstance: {
value: '',
required: true,
validate: RED.validators.number()
},
propertyId: {
value: '',
required: true,
validate: RED.validators.number()
},
priority: {
value: '',
validate: RED.validators.number()
},
applicationTag: {
value: ''
},
value: {
value: '',
required: true
},
server: {
value: '',
type: 'bacnet-server'
}
},
inputs: 0,
outputs: 1,
align: 'right',
icon: "bacnet.png",
paletteLabel: 'BACnet write',
label: function() {
return (this.name || 'BACnet write');
}
});
</script>