node-red-contrib-knx-ultimate
Version:
Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control, ETS group address importer, and KNX routing between interfaces. Easy to use and highly configurable.
129 lines (116 loc) • 7.31 kB
HTML
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
<script type="text/javascript">
RED.nodes.registerType('knxUltimateMultiRouting', {
category: "KNX Ultimate",
color: 'lightblue',
defaults: {
mode: { value: "gateway", required: true },
server: { type: "knxUltimate-config", required: false },
name: { value: "KNX Multi Routing", required: false },
outputtopic: { value: "", required: false },
dropIfSameGateway: { value: true },
respectRoutingCounter: { value: true },
decrementRoutingCounter: { value: false },
// KNX/IP tunneling server options (mode=server)
tunnelListenHost: { value: "0.0.0.0", required: false },
tunnelListenPort: { value: 3671, required: false, validate: RED.validators.number() },
tunnelAdvertiseHost: { value: "", required: false },
tunnelAssignedIndividualAddress: { value: "15.15.255", required: false },
tunnelMaxSessions: { value: 1, required: false, validate: RED.validators.number() },
tunnelGatewayId: { value: "", required: false }
},
inputs: 1,
outputs: 1,
outputLabels: function () { return RED._('knxUltimateMultiRouting.outputs.raw'); },
icon: "node-knx-icon.svg",
label: function () {
return (this.name || "KNX Multi Routing");
},
paletteLabel: "KNX Multi Routing",
oneditprepare: function () {
try { RED.sidebar.show("help"); } catch (error) { }
const toggleMode = () => {
const mode = $("#node-input-mode").val() || "gateway";
if (mode === "server") {
$(".knxmr-row-gateway").hide();
$(".knxmr-row-tunnel").show();
} else {
$(".knxmr-row-gateway").show();
$(".knxmr-row-tunnel").hide();
}
};
$("#node-input-mode").on("change", toggleMode);
toggleMode();
},
oneditsave: function () {
try { RED.sidebar.show("info"); } catch (error) { }
},
oneditcancel: function () {
try { RED.sidebar.show("info"); } catch (error) { }
}
})
</script>
<script type="text/html" data-template-name="knxUltimateMultiRouting">
<div class="form-row">
<b><span data-i18n="knxUltimateMultiRouting.title"></span></b>  <span style="color:red"    <i class="fa fa-youtube"></i></span> <a
target="_blank" href="https://youtu.be/fGT6BrkTkiM"><u><span data-i18n="common.youtube_sample"></span></u></a>
<br/><br/>
<label for="node-input-mode"><i class="fa fa-sliders"></i> <span data-i18n="knxUltimateMultiRouting.properties.mode"></span></label>
<select id="node-input-mode">
<option value="gateway" data-i18n="knxUltimateMultiRouting.properties.modeGateway"></option>
<option value="server" data-i18n="knxUltimateMultiRouting.properties.modeServer"></option>
</select>
</div>
<div class="form-row knxmr-row-gateway">
<label for="node-input-server"><i class="fa fa-tag"></i> <span data-i18n="knxUltimateMultiRouting.properties.server"></span></label>
<input type="text" id="node-input-server">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="knxUltimateMultiRouting.properties.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]knxUltimateMultiRouting.properties.name" style="flex:1 1 240px; min-width:240px; max-width:240px;">
</div>
<div class="form-row">
<label for="node-input-outputtopic"><i class="fa fa-tasks"></i> <span data-i18n="knxUltimateMultiRouting.properties.outputtopic"></span></label>
<input type="text" id="node-input-outputtopic" data-i18n="[placeholder]knxUltimateMultiRouting.properties.outputtopic">
</div>
<div class="form-row">
<input type="checkbox" id="node-input-dropIfSameGateway" style="display:inline-block; width:auto; vertical-align:top;">
<label style="width:auto" for="node-input-dropIfSameGateway"> <span data-i18n="knxUltimateMultiRouting.properties.dropIfSameGateway"></span></label>
</div>
<div class="form-row">
<input type="checkbox" id="node-input-respectRoutingCounter" style="display:inline-block; width:auto; vertical-align:top;">
<label style="width:auto" for="node-input-respectRoutingCounter"> <span data-i18n="knxUltimateMultiRouting.properties.respectRoutingCounter"></span></label>
</div>
<div class="form-row">
<input type="checkbox" id="node-input-decrementRoutingCounter" style="display:inline-block; width:auto; vertical-align:top;">
<label style="width:auto" for="node-input-decrementRoutingCounter"> <span data-i18n="knxUltimateMultiRouting.properties.decrementRoutingCounter"></span></label>
</div>
<div class="form-row knxmr-row-tunnel">
<hr/>
<b><span data-i18n="knxUltimateMultiRouting.properties.tunnelTitle"></span></b>
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelListenHost"><i class="fa fa-globe"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelListenHost"></span></label>
<input type="text" id="node-input-tunnelListenHost" placeholder="0.0.0.0">
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelListenPort"><i class="fa fa-plug"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelListenPort"></span></label>
<input type="text" id="node-input-tunnelListenPort" placeholder="3671">
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelAdvertiseHost"><i class="fa fa-bullhorn"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelAdvertiseHost"></span></label>
<input type="text" id="node-input-tunnelAdvertiseHost" data-i18n="[placeholder]knxUltimateMultiRouting.properties.tunnelAdvertiseHostPlaceholder">
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelAssignedIndividualAddress"><i class="fa fa-id-card-o"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelAssignedIndividualAddress"></span></label>
<input type="text" id="node-input-tunnelAssignedIndividualAddress" placeholder="15.15.255">
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelGatewayId"><i class="fa fa-tag"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelGatewayId"></span></label>
<input type="text" id="node-input-tunnelGatewayId" data-i18n="[placeholder]knxUltimateMultiRouting.properties.tunnelGatewayIdPlaceholder">
</div>
<div class="form-row knxmr-row-tunnel">
<label for="node-input-tunnelMaxSessions"><i class="fa fa-users"></i> <span data-i18n="knxUltimateMultiRouting.properties.tunnelMaxSessions"></span></label>
<input type="text" id="node-input-tunnelMaxSessions" placeholder="1">
</div>
</script>