node-red-contrib-knx-ultimate 2.5.1 → 3.0.0-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +3 -2
- package/CHANGELOG.md +13 -0
- package/README.md +2 -1
- package/{KNXEngine → _JS_KNXEngine}/README.md +7 -7
- package/{KNXEngine → _JS_KNXEngine}/index.js +1 -1
- package/{KNXEngine → _JS_KNXEngine}/sample.js +5 -5
- package/{KNXEngine → _JS_KNXEngine}/sampleSecure.js +1 -1
- package/{KNXEngine → _JS_KNXEngine}/src/KNXClient.js +3 -3
- package/_JS_KNXEngine/src/dptlib/dpt60002.js +101 -0
- package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXConnectResponse.js +2 -0
- package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXConstants.js +1 -0
- package/nodes/commonFunctions.js +3 -3
- package/nodes/hue-config.html +2 -0
- package/nodes/hue-config.js +8 -0
- package/nodes/knxUltimate-config.html +2 -0
- package/nodes/knxUltimate-config.js +226 -223
- package/nodes/knxUltimate.html +124 -57
- package/nodes/knxUltimate.js +100 -60
- package/nodes/knxUltimateAlerter.html +7 -12
- package/nodes/knxUltimateAlerter.js +3 -2
- package/nodes/knxUltimateGarageDoorBarrierOpener.html +7 -12
- package/nodes/knxUltimateGarageDoorBarrierOpener.js +2 -2
- package/nodes/knxUltimateGlobalContext.html +2 -0
- package/nodes/knxUltimateHueBattery.html +11 -14
- package/nodes/knxUltimateHueButton.html +27 -22
- package/nodes/knxUltimateHueButton.js +1 -1
- package/nodes/knxUltimateHueContactSensor.html +12 -8
- package/nodes/knxUltimateHueLight.html +17 -24
- package/nodes/knxUltimateHueLight.js +1 -2
- package/nodes/knxUltimateHueLightSensor.html +11 -14
- package/nodes/knxUltimateHueMotion.html +11 -14
- package/nodes/knxUltimateHueScene.html +24 -19
- package/nodes/knxUltimateHueScene.js +2 -1
- package/nodes/knxUltimateHueTapDial.html +11 -14
- package/nodes/knxUltimateHueTemperatureSensor.html +11 -14
- package/nodes/knxUltimateHueZigbeeConnectivity.html +11 -14
- package/nodes/knxUltimateHuedevice_software_update.html +261 -0
- package/nodes/knxUltimateHuedevice_software_update.js +134 -0
- package/nodes/knxUltimateLoadControl.html +4 -11
- package/nodes/knxUltimateLoadControl.js +1 -1
- package/nodes/knxUltimateLogger.html +3 -1
- package/nodes/knxUltimateSceneController.html +14 -15
- package/nodes/knxUltimateViewer.html +2 -0
- package/nodes/knxUltimateViewer.js +1 -1
- package/nodes/knxUltimateWatchDog.html +3 -1
- package/nodes/utils/payloadManipulation.js +49 -1
- package/nodes/utils/utils.js +4 -0
- package/package.json +6 -4
- package/resources/htmlUtils.js +27 -0
- /package/{KNXEngine → _JS_KNXEngine}/CHANGELOG.md +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/LICENSE +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/dpt 2.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/dpt.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/logo 2.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/logo-big 2.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/logo-big.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/logo.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/nodered 2.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/img/nodered.png +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/package.json +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/simpleSample.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/Curve25519.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/KNXSocketOptions.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/KNXsecureKeyring.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/KnxLog.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/cur.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt1.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt10.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt11.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt12.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt13.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt14.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt15.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt16.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt17.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt18.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt19.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt2.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt20.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt21.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt213.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt22.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt222.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt232.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt235.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt237.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt238.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt242.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt249.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt251.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt275.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt28.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt29.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt3.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt4.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt5.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt6.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt60001.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt7.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt8.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt9.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/dpt999.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/dptlib/index.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/BufferLengthError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/DateFormatError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/DuplicateRequestError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/InvalidValueError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/NotImplementedError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/RequestTimeoutError.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/errors/index.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/index.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/CRD.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/CRI.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/CRIFactory.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/DIB.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/DeviceInfo.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/HPAI.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/IPConfig.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/IPCurrentConfig.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXAddress.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXAddresses.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXConnectRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXConnectionStateRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXConnectionStateResponse.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXDataBuffer.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXDescriptionRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXDescriptionResponse.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXDisconnectRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXDisconnectResponse.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXHeader.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXPacket.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXProtocol.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXRoutingIndication.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXSearchRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXSearchResponse.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXSecureSessionRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXTunnelingAck.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXTunnelingRequest.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/KNXUtils.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/ServiceFamilies.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/TunnelCRI.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/AdditionalInfo.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/CEMIConstants.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/CEMIFactory.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/CEMIMessage.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/ControlField.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/LDataCon.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/LDataInd.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/LDataReq.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/NPDU.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/cEMI/TLVInfo.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/protocol/index.js +0 -0
- /package/{KNXEngine → _JS_KNXEngine}/src/util/ipAddressHelper.js +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
2
2
|
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
|
|
4
|
+
|
|
3
5
|
<script type="text/javascript">
|
|
4
6
|
RED.nodes.registerType('knxUltimateHueScene', {
|
|
5
7
|
category: "KNX Ultimate",
|
|
@@ -83,16 +85,7 @@
|
|
|
83
85
|
} catch (error) { }
|
|
84
86
|
});
|
|
85
87
|
|
|
86
|
-
|
|
87
|
-
function fullSearch(sourceText, searchString) {
|
|
88
|
-
// This searches for all words in a string
|
|
89
|
-
var aSearchWords = searchString.toLowerCase().split(" ");
|
|
90
|
-
var i = 0;
|
|
91
|
-
for (let index = 0; index < aSearchWords.length; index++) {
|
|
92
|
-
if (sourceText.toLowerCase().indexOf(aSearchWords[index]) > -1) i += 1;
|
|
93
|
-
}
|
|
94
|
-
return i == aSearchWords.length;
|
|
95
|
-
}
|
|
88
|
+
|
|
96
89
|
|
|
97
90
|
// DPT
|
|
98
91
|
// ########################
|
|
@@ -122,13 +115,13 @@
|
|
|
122
115
|
|
|
123
116
|
// Autocomplete suggestion with ETS csv File
|
|
124
117
|
$("#node-input-GAscene").autocomplete({
|
|
125
|
-
minLength:
|
|
118
|
+
minLength: 0,
|
|
126
119
|
source: function (request, response) {
|
|
127
120
|
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
128
121
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
129
122
|
response($.map(data, function (value, key) {
|
|
130
123
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
131
|
-
if (
|
|
124
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
132
125
|
if (value.dpt.startsWith("1.") || value.dpt.startsWith("18.")) {
|
|
133
126
|
return {
|
|
134
127
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
@@ -153,15 +146,18 @@
|
|
|
153
146
|
$("#node-input-dptscene").val(optVal);
|
|
154
147
|
ShowHideValScene();
|
|
155
148
|
}
|
|
149
|
+
}).focus(function () {
|
|
150
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
156
151
|
});
|
|
152
|
+
|
|
157
153
|
$("#node-input-GAsceneStatus").autocomplete({
|
|
158
|
-
minLength:
|
|
154
|
+
minLength: 0,
|
|
159
155
|
source: function (request, response) {
|
|
160
156
|
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
161
157
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
162
158
|
response($.map(data, function (value, key) {
|
|
163
159
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
164
|
-
if (
|
|
160
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
165
161
|
if (value.dpt.startsWith("1.")) {
|
|
166
162
|
return {
|
|
167
163
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
@@ -186,15 +182,18 @@
|
|
|
186
182
|
$("#node-input-dptsceneStatus").val(optVal);
|
|
187
183
|
ShowHideValScene();
|
|
188
184
|
}
|
|
185
|
+
}).focus(function () {
|
|
186
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
189
187
|
});
|
|
188
|
+
|
|
190
189
|
$("#node-input-GAsceneMulti").autocomplete({
|
|
191
|
-
minLength:
|
|
190
|
+
minLength: 0,
|
|
192
191
|
source: function (request, response) {
|
|
193
192
|
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
194
193
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
195
194
|
response($.map(data, function (value, key) {
|
|
196
195
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
197
|
-
if (
|
|
196
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
198
197
|
if (value.dpt.startsWith("18.")) {
|
|
199
198
|
return {
|
|
200
199
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
@@ -219,6 +218,8 @@
|
|
|
219
218
|
$("#node-input-dptsceneMulti").val(optVal);
|
|
220
219
|
ShowHideValScene();
|
|
221
220
|
}
|
|
221
|
+
}).focus(function () {
|
|
222
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
222
223
|
});
|
|
223
224
|
// ########################
|
|
224
225
|
|
|
@@ -242,13 +243,13 @@
|
|
|
242
243
|
|
|
243
244
|
// Autocomplete suggestion with HUE
|
|
244
245
|
$("#node-input-name").autocomplete({
|
|
245
|
-
minLength:
|
|
246
|
+
minLength: 0,
|
|
246
247
|
source: function (request, response) {
|
|
247
248
|
$.getJSON("KNXUltimateGetResourcesHUE?rtype=scene&serverId=" + oNodeServerHue.id, (data) => {
|
|
248
249
|
response($.map(data.devices, function (value, key) {
|
|
249
250
|
//alert(JSON.stringify(value) + " "+ key)
|
|
250
251
|
var sSearch = (value.name);
|
|
251
|
-
if (
|
|
252
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
252
253
|
return {
|
|
253
254
|
hueDevice: value.id, // Label for Display
|
|
254
255
|
value: value.name // Value
|
|
@@ -262,6 +263,8 @@
|
|
|
262
263
|
// Sets the fields
|
|
263
264
|
$('#node-input-hueDevice').val(ui.item.hueDevice);
|
|
264
265
|
}
|
|
266
|
+
}).focus(function () {
|
|
267
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
265
268
|
});
|
|
266
269
|
// ########################
|
|
267
270
|
|
|
@@ -344,7 +347,7 @@
|
|
|
344
347
|
response($.map(data.devices, function (value, key) {
|
|
345
348
|
//alert(JSON.stringify(value) + " "+ key)
|
|
346
349
|
var sSearch = (value.name);
|
|
347
|
-
if (
|
|
350
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
348
351
|
return {
|
|
349
352
|
hueDevice: value.id, // Label for Display
|
|
350
353
|
value: value.name // Value
|
|
@@ -358,6 +361,8 @@
|
|
|
358
361
|
// Sets Datapoint and device name automatically
|
|
359
362
|
rowRuleHUESceneID.val(ui.item.hueDevice);
|
|
360
363
|
}
|
|
364
|
+
}).focus(function () {
|
|
365
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
361
366
|
});
|
|
362
367
|
rowRuleRecallAs.val(rule.rowRuleRecallAs)
|
|
363
368
|
rowRuleHUESceneName.val(rule.rowRuleHUESceneName);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
|
-
const dptlib = require('
|
|
2
|
+
const dptlib = require('knxultimate').dptlib;//require('knxultimate').dptlib;
|
|
3
3
|
|
|
4
4
|
module.exports = function (RED) {
|
|
5
|
+
|
|
5
6
|
function knxUltimateHueScene(config) {
|
|
6
7
|
RED.nodes.createNode(this, config);
|
|
7
8
|
const node = this;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
2
2
|
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
|
|
4
|
+
|
|
3
5
|
<script type="text/javascript">
|
|
4
6
|
RED.nodes.registerType('knxUltimateHueTapDial', {
|
|
5
7
|
category: "KNX Ultimate",
|
|
@@ -55,16 +57,7 @@
|
|
|
55
57
|
} catch (error) { }
|
|
56
58
|
});
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
function fullSearch(sourceText, searchString) {
|
|
60
|
-
// This searches for all words in a string
|
|
61
|
-
var aSearchWords = searchString.toLowerCase().split(" ");
|
|
62
|
-
var i = 0;
|
|
63
|
-
for (let index = 0; index < aSearchWords.length; index++) {
|
|
64
|
-
if (sourceText.toLowerCase().indexOf(aSearchWords[index]) > -1) i += 1;
|
|
65
|
-
}
|
|
66
|
-
return i == aSearchWords.length;
|
|
67
|
-
}
|
|
60
|
+
|
|
68
61
|
|
|
69
62
|
|
|
70
63
|
// DPT repeat
|
|
@@ -83,12 +76,12 @@
|
|
|
83
76
|
|
|
84
77
|
// Autocomplete suggestion with ETS csv File
|
|
85
78
|
$("#node-input-GArepeat").autocomplete({
|
|
86
|
-
minLength:
|
|
79
|
+
minLength: 0,
|
|
87
80
|
source: function (request, response) {
|
|
88
81
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
89
82
|
response($.map(data, function (value, key) {
|
|
90
83
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
91
|
-
if (
|
|
84
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
92
85
|
if (value.dpt.startsWith('5.001') || value.dpt.startsWith('3.007') || value.dpt.startsWith("232.600")) {
|
|
93
86
|
return {
|
|
94
87
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
@@ -112,6 +105,8 @@
|
|
|
112
105
|
// Select the option value
|
|
113
106
|
$("#node-input-dptrepeat").val(optVal);
|
|
114
107
|
}
|
|
108
|
+
}).focus(function () {
|
|
109
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
115
110
|
});
|
|
116
111
|
|
|
117
112
|
|
|
@@ -119,13 +114,13 @@
|
|
|
119
114
|
|
|
120
115
|
// Autocomplete suggestion with HUE
|
|
121
116
|
$("#node-input-name").autocomplete({
|
|
122
|
-
minLength:
|
|
117
|
+
minLength: 0,
|
|
123
118
|
source: function (request, response) {
|
|
124
119
|
$.getJSON("KNXUltimateGetResourcesHUE?rtype=relative_rotary&serverId=" + oNodeServerHue.id, (data) => {
|
|
125
120
|
response($.map(data.devices, function (value, key) {
|
|
126
121
|
//alert(JSON.stringify(value) + " "+ key)
|
|
127
122
|
var sSearch = (value.name);
|
|
128
|
-
if (
|
|
123
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
129
124
|
return {
|
|
130
125
|
hueDevice: value.id, // Label for Display
|
|
131
126
|
value: value.name // Value
|
|
@@ -139,6 +134,8 @@
|
|
|
139
134
|
// Sets the fields
|
|
140
135
|
$('#node-input-hueDevice').val(ui.item.hueDevice);
|
|
141
136
|
}
|
|
137
|
+
}).focus(function () {
|
|
138
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
142
139
|
});
|
|
143
140
|
|
|
144
141
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
2
2
|
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
|
|
4
|
+
|
|
3
5
|
<script type="text/javascript">
|
|
4
6
|
RED.nodes.registerType('knxUltimateHueTemperatureSensor', {
|
|
5
7
|
category: "KNX Ultimate",
|
|
@@ -56,16 +58,7 @@
|
|
|
56
58
|
} catch (error) { }
|
|
57
59
|
});
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
function fullSearch(sourceText, searchString) {
|
|
61
|
-
// This searches for all words in a string
|
|
62
|
-
var aSearchWords = searchString.toLowerCase().split(" ");
|
|
63
|
-
var i = 0;
|
|
64
|
-
for (let index = 0; index < aSearchWords.length; index++) {
|
|
65
|
-
if (sourceText.toLowerCase().indexOf(aSearchWords[index]) > -1) i += 1;
|
|
66
|
-
}
|
|
67
|
-
return i == aSearchWords.length;
|
|
68
|
-
}
|
|
61
|
+
|
|
69
62
|
|
|
70
63
|
// DPT
|
|
71
64
|
// ########################
|
|
@@ -82,13 +75,13 @@
|
|
|
82
75
|
|
|
83
76
|
// Autocomplete suggestion with ETS csv File
|
|
84
77
|
$("#node-input-GAtemperaturesensor").autocomplete({
|
|
85
|
-
minLength:
|
|
78
|
+
minLength: 0,
|
|
86
79
|
source: function (request, response) {
|
|
87
80
|
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
88
81
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
89
82
|
response($.map(data, function (value, key) {
|
|
90
83
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
91
|
-
if (
|
|
84
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term + " 9.001")) {
|
|
92
85
|
return {
|
|
93
86
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
94
87
|
value: value.ga // Value
|
|
@@ -110,6 +103,8 @@
|
|
|
110
103
|
// Select the option value
|
|
111
104
|
$("#node-input-dpttemperaturesensor").val(optVal);
|
|
112
105
|
}
|
|
106
|
+
}).focus(function () {
|
|
107
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
113
108
|
});
|
|
114
109
|
// ########################
|
|
115
110
|
|
|
@@ -118,13 +113,13 @@
|
|
|
118
113
|
|
|
119
114
|
// Autocomplete suggestion with HUE
|
|
120
115
|
$("#node-input-name").autocomplete({
|
|
121
|
-
minLength:
|
|
116
|
+
minLength: 0,
|
|
122
117
|
source: function (request, response) {
|
|
123
118
|
$.getJSON("KNXUltimateGetResourcesHUE?rtype=temperature&serverId=" + oNodeServerHue.id, (data) => {
|
|
124
119
|
response($.map(data.devices, function (value, key) {
|
|
125
120
|
//alert(JSON.stringify(value) + " "+ key)
|
|
126
121
|
var sSearch = (value.name);
|
|
127
|
-
if (
|
|
122
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
128
123
|
return {
|
|
129
124
|
hueDevice: value.id, // Label for Display
|
|
130
125
|
value: value.name // Value
|
|
@@ -138,6 +133,8 @@
|
|
|
138
133
|
// Sets the fields
|
|
139
134
|
$('#node-input-hueDevice').val(ui.item.hueDevice);
|
|
140
135
|
}
|
|
136
|
+
}).focus(function () {
|
|
137
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
141
138
|
});
|
|
142
139
|
|
|
143
140
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
2
2
|
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
|
|
4
|
+
|
|
3
5
|
<script type="text/javascript">
|
|
4
6
|
RED.nodes.registerType('knxUltimateHueZigbeeConnectivity', {
|
|
5
7
|
category: "KNX Ultimate",
|
|
@@ -57,16 +59,7 @@
|
|
|
57
59
|
} catch (error) { }
|
|
58
60
|
});
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
function fullSearch(sourceText, searchString) {
|
|
62
|
-
// This searches for all words in a string
|
|
63
|
-
var aSearchWords = searchString.toLowerCase().split(" ");
|
|
64
|
-
var i = 0;
|
|
65
|
-
for (let index = 0; index < aSearchWords.length; index++) {
|
|
66
|
-
if (sourceText.toLowerCase().indexOf(aSearchWords[index]) > -1) i += 1;
|
|
67
|
-
}
|
|
68
|
-
return i == aSearchWords.length;
|
|
69
|
-
}
|
|
62
|
+
|
|
70
63
|
|
|
71
64
|
// DPT
|
|
72
65
|
// ########################
|
|
@@ -83,13 +76,13 @@
|
|
|
83
76
|
|
|
84
77
|
// Autocomplete suggestion with ETS csv File
|
|
85
78
|
$("#node-input-GAzigbeeconnectivity").autocomplete({
|
|
86
|
-
minLength:
|
|
79
|
+
minLength: 0,
|
|
87
80
|
source: function (request, response) {
|
|
88
81
|
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
89
82
|
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
90
83
|
response($.map(data, function (value, key) {
|
|
91
84
|
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
92
|
-
if (
|
|
85
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term + " 1.")) {
|
|
93
86
|
return {
|
|
94
87
|
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
95
88
|
value: value.ga // Value
|
|
@@ -111,6 +104,8 @@
|
|
|
111
104
|
// Select the option value
|
|
112
105
|
$("#node-input-dptzigbeeconnectivity").val(optVal);
|
|
113
106
|
}
|
|
107
|
+
}).focus(function () {
|
|
108
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
114
109
|
});
|
|
115
110
|
// ########################
|
|
116
111
|
|
|
@@ -119,13 +114,13 @@
|
|
|
119
114
|
|
|
120
115
|
// Autocomplete suggestion with HUE
|
|
121
116
|
$("#node-input-name").autocomplete({
|
|
122
|
-
minLength:
|
|
117
|
+
minLength: 0,
|
|
123
118
|
source: function (request, response) {
|
|
124
119
|
$.getJSON("KNXUltimateGetResourcesHUE?rtype=zigbee_connectivity&serverId=" + oNodeServerHue.id, (data) => {
|
|
125
120
|
response($.map(data.devices, function (value, key) {
|
|
126
121
|
//alert(JSON.stringify(value) + " "+ key)
|
|
127
122
|
var sSearch = (value.name);
|
|
128
|
-
if (
|
|
123
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
129
124
|
return {
|
|
130
125
|
hueDevice: value.id, // Label for Display
|
|
131
126
|
value: value.name // Value
|
|
@@ -139,6 +134,8 @@
|
|
|
139
134
|
// Sets the fields
|
|
140
135
|
$('#node-input-hueDevice').val(ui.item.hueDevice);
|
|
141
136
|
}
|
|
137
|
+
}).focus(function () {
|
|
138
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
142
139
|
});
|
|
143
140
|
|
|
144
141
|
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
2
|
+
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
|
|
4
|
+
|
|
5
|
+
<script type="text/javascript">
|
|
6
|
+
RED.nodes.registerType('knxUltimateHuedevice_software_update', {
|
|
7
|
+
category: "KNX Ultimate",
|
|
8
|
+
color: '#C0C7E9',
|
|
9
|
+
defaults: {
|
|
10
|
+
//buttonState: {value: true},
|
|
11
|
+
server: { type: "knxUltimate-config", required: false },
|
|
12
|
+
serverHue: { type: "hue-config", required: true },
|
|
13
|
+
name: { value: "" },
|
|
14
|
+
|
|
15
|
+
namedevice_software_update: { value: "" },
|
|
16
|
+
GAdevice_software_update: { value: "" },
|
|
17
|
+
dptdevice_software_update: { value: "" },
|
|
18
|
+
readStatusAtStartup: { value: "yes" },
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
hueDevice: { value: "" }
|
|
22
|
+
},
|
|
23
|
+
inputs: 0,
|
|
24
|
+
outputs: 1,
|
|
25
|
+
icon: "node-hue-icon.svg",
|
|
26
|
+
label: function () {
|
|
27
|
+
return (this.name || "Hue Software Update");
|
|
28
|
+
},
|
|
29
|
+
paletteLabel: "Hue Software Update",
|
|
30
|
+
// button: {
|
|
31
|
+
// enabled: function() {
|
|
32
|
+
// // return whether or not the button is enabled, based on the current
|
|
33
|
+
// // configuration of the node
|
|
34
|
+
// return !this.changed
|
|
35
|
+
// },
|
|
36
|
+
// visible: function() {
|
|
37
|
+
// // return whether or not the button is visible, based on the current
|
|
38
|
+
// // configuration of the node
|
|
39
|
+
// return this.hasButton
|
|
40
|
+
// },
|
|
41
|
+
// //toggle: "buttonState",
|
|
42
|
+
// onclick: function() {}
|
|
43
|
+
// },
|
|
44
|
+
oneditprepare: function () {
|
|
45
|
+
var node = this;
|
|
46
|
+
var oNodeServer = RED.nodes.node($("#node-input-server").val()); // Store the config-node
|
|
47
|
+
var oNodeServerHue = RED.nodes.node($("#node-input-serverHue").val()); // Store the config-node
|
|
48
|
+
|
|
49
|
+
// 19/02/2020 Used to get the server sooner als deploy.
|
|
50
|
+
$("#node-input-server").change(function () {
|
|
51
|
+
try {
|
|
52
|
+
oNodeServer = RED.nodes.node($(this).val());
|
|
53
|
+
} catch (error) { }
|
|
54
|
+
});
|
|
55
|
+
// 19/02/2020 Used to get the server sooner als deploy.
|
|
56
|
+
$("#node-input-serverHue").change(function () {
|
|
57
|
+
try {
|
|
58
|
+
oNodeServerHue = RED.nodes.node($(this).val());
|
|
59
|
+
} catch (error) { }
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
// DPT
|
|
65
|
+
// ########################
|
|
66
|
+
$.getJSON('knxUltimateDpts?serverId=' + $("#node-input-server").val(), (data) => {
|
|
67
|
+
data.forEach(dpt => {
|
|
68
|
+
if (dpt.value.startsWith("1.")) {
|
|
69
|
+
$("#node-input-dptdevice_software_update").append($("<option></option>")
|
|
70
|
+
.attr("value", dpt.value)
|
|
71
|
+
.text(dpt.text))
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
$("#node-input-dptdevice_software_update").val(this.dptdevice_software_update)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
// Autocomplete suggestion with ETS csv File
|
|
78
|
+
$("#node-input-GAdevice_software_update").autocomplete({
|
|
79
|
+
minLength: 0,
|
|
80
|
+
source: function (request, response) {
|
|
81
|
+
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
82
|
+
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
83
|
+
response($.map(data, function (value, key) {
|
|
84
|
+
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
85
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term + " 1.")) {
|
|
86
|
+
return {
|
|
87
|
+
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
88
|
+
value: value.ga // Value
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}));
|
|
94
|
+
});
|
|
95
|
+
}, select: function (event, ui) {
|
|
96
|
+
// Sets Datapoint and device name automatically
|
|
97
|
+
var sDevName = ui.item.label.split("#")[1].trim();
|
|
98
|
+
try {
|
|
99
|
+
sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
|
|
100
|
+
} catch (error) {
|
|
101
|
+
}
|
|
102
|
+
$('#node-input-namedevice_software_update').val(sDevName);
|
|
103
|
+
var optVal = $("#node-input-dptdevice_software_update option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
|
|
104
|
+
// Select the option value
|
|
105
|
+
$("#node-input-dptdevice_software_update").val(optVal);
|
|
106
|
+
}
|
|
107
|
+
}).focus(function () {
|
|
108
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
109
|
+
});
|
|
110
|
+
// ########################
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
// Autocomplete suggestion with HUE
|
|
116
|
+
$("#node-input-name").autocomplete({
|
|
117
|
+
minLength: 0,
|
|
118
|
+
source: function (request, response) {
|
|
119
|
+
$.getJSON("KNXUltimateGetResourcesHUE?rtype=device_software_update&serverId=" + oNodeServerHue.id, (data) => {
|
|
120
|
+
response($.map(data.devices, function (value, key) {
|
|
121
|
+
//alert(JSON.stringify(value) + " "+ key)
|
|
122
|
+
var sSearch = (value.name);
|
|
123
|
+
if (htmlUtilsfullCSVSearch(sSearch, request.term)) {
|
|
124
|
+
return {
|
|
125
|
+
hueDevice: value.id, // Label for Display
|
|
126
|
+
value: value.name // Value
|
|
127
|
+
}
|
|
128
|
+
} else {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}));
|
|
132
|
+
});
|
|
133
|
+
}, select: function (event, ui) {
|
|
134
|
+
// Sets the fields
|
|
135
|
+
$('#node-input-hueDevice').val(ui.item.hueDevice);
|
|
136
|
+
}
|
|
137
|
+
}).focus(function () {
|
|
138
|
+
$(this).autocomplete('search', $(this).val() + 'exactmatch');
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
// ########################
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
},
|
|
146
|
+
oneditsave: function () {
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
},
|
|
150
|
+
oneditcancel: function () {
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
</script>
|
|
156
|
+
|
|
157
|
+
<script type="text/html" data-template-name="knxUltimateHuedevice_software_update">
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
<div class="form-row">
|
|
161
|
+
<b>HUE Device Software Update node</b>  <span style="color:red"
|
|
162
|
+
 
|
|
163
|
+
 <i class="fa fa-youtube"></i></span> <a target="_blank" href="https://youtu.be/jjEUI1J8bkA"><u>Youtube sample</u></a>
|
|
164
|
+
<br />
|
|
165
|
+
<br />
|
|
166
|
+
<p align="center">
|
|
167
|
+
<i class="fa-solid fa-tower-broadcast fa-beat fa-4x"></i>
|
|
168
|
+
</p>
|
|
169
|
+
<br />
|
|
170
|
+
<label for="node-input-server" >
|
|
171
|
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAKnRFWHRDcmVhdGlvbiBUaW1lAEZyIDYgQXVnIDIwMTAgMjE6NTI6MTkgKzAxMDD84aS8AAAAB3RJTUUH3gYYCicNV+4WIQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAACUSURBVHjaY2CgFZg5c+Z/ZEyWAZ8+f/6/ZsWs/xoamqMGkGrA6Wla/1+fVARjEBuGsSoGmY4eZSCNL59d/g8DIDbIAHR14OgFGQByKjIGKX5+6/T///8gGMQGiV1+/B0Fg70GIkD+RMYgxf/O5/7//2MSmAZhkBi6OrgB6Bg5DGB4ajr3f2xqsYYLSDE2THJUDg0AAAqyDVd4tp4YAAAAAElFTkSuQmCC"></img>
|
|
172
|
+
KNX GW
|
|
173
|
+
</label>
|
|
174
|
+
<input type="text" id="node-input-server" />
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
<div class="form-row">
|
|
178
|
+
<label for="node-input-serverHue">
|
|
179
|
+
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABFUlEQVQ4EZWSsWoCQRCG1yiENEFEi6QSkjqWWoqFoBYJ+Br6JHkMn8Iibd4ihQpaJIhWNkry/ZtdGZY78Qa+m39nZ+dm9s4550awglNBluS/gVtAX6KgDclf68w2OThgfR9iT/jnoEv4TtByDThWTCDKW4SSZTf/zj9/eZbN+izTDuKGimu0vPF8B/YN8aC8LmcOj/AAn9CFTEs70Js/oGqy79C69bqJ5XbQI2kGO5N8QL9D08S8zBtBF5ZaVsznpCMoqJnVdjTpb1Db0fwIWmQV6BLXzFOYgA6/gDVfQN9bBWp2J2hdWDPoBV5FrKnAJutHikk/CHHR8i7x4iG7qQ720IYvu3GFbpHjx3pFrOFYkA354z/5bkK826phyAAAAABJRU5ErkJggg=="/>
|
|
180
|
+
HUE Bridge
|
|
181
|
+
</label>
|
|
182
|
+
<input type="text" id="node-input-serverHue" />
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<br/>
|
|
186
|
+
<p>
|
|
187
|
+
<b>Philips HUE</b>
|
|
188
|
+
</p>
|
|
189
|
+
|
|
190
|
+
<div class="form-row">
|
|
191
|
+
<label for="node-input-hueDevice" >
|
|
192
|
+
<i class="fa fa-play-circle"></i> Hue Device</label>
|
|
193
|
+
<input type="text" id="node-input-name" placeholder="Enter your hue device name" />
|
|
194
|
+
<input type="hidden" id="node-input-hueDevice" />
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<br/>
|
|
198
|
+
|
|
199
|
+
<p>
|
|
200
|
+
<b>KNX</b>
|
|
201
|
+
</p>
|
|
202
|
+
|
|
203
|
+
<div class="form-row">
|
|
204
|
+
<label for="node-input-namedevice_software_update" style="width:100px;"><i class="fa fa-play-circle-o"></i> Status</span></label>
|
|
205
|
+
|
|
206
|
+
<label for="node-input-GAdevice_software_update" style="width:20px;">GA</label>
|
|
207
|
+
<input type="text" id="node-input-GAdevice_software_update" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
208
|
+
|
|
209
|
+
<label for="node-input-dptdevice_software_update" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
210
|
+
<select id="node-input-dptdevice_software_update" style="width:140px;"></select>
|
|
211
|
+
|
|
212
|
+
<label for="node-input-namedevice_software_update" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
213
|
+
<input type="text" id="node-input-namedevice_software_update" style="width:200px;margin-left: 5px; text-align: left;">
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
<div class="form-row">
|
|
217
|
+
<label style="width:180px" for="node-input-readStatusAtStartup"><i class="fa fa-play-circle"></i> Read status at startup</label>
|
|
218
|
+
<select id="node-input-readStatusAtStartup">
|
|
219
|
+
<option value="no">No</option>
|
|
220
|
+
<option value="yes">Yes, and emit KNX telegrams.</option>
|
|
221
|
+
</select>
|
|
222
|
+
</div>
|
|
223
|
+
<br/>
|
|
224
|
+
<br/>
|
|
225
|
+
<br/>
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
</script>
|
|
229
|
+
|
|
230
|
+
<script type="text/markdown" data-help-name="knxUltimateHuedevice_software_update">
|
|
231
|
+
This node monitors wether the selected device has a software update avaiable.
|
|
232
|
+
|
|
233
|
+
Start typing the name or group address of your KNX device in the GA field, the avaiable devices start showing up while
|
|
234
|
+
you're typing.
|
|
235
|
+
|
|
236
|
+
**General**
|
|
237
|
+
|Property|Description|
|
|
238
|
+
|--|--|
|
|
239
|
+
| KNX GW | Select the KNX gateway to be used |
|
|
240
|
+
| HUE Bridge | Select the HUE Bridge to be used |
|
|
241
|
+
| Hue Device | HUE Device to be monitored for software update. The avaiable devices start showing up while you're typing.|
|
|
242
|
+
|
|
243
|
+
|Property|Description|
|
|
244
|
+
|--|--|
|
|
245
|
+
| Status | The software update status KNX group address. The payload of this KNX group address will change to *true* if a device has a software update avaiable or is installing the update, or if the update is ready to be installed, otherwise *false*. |
|
|
246
|
+
| Read status at startup | Read the status at startup and emit the event to the KNX bus at startup/reconnection. (Default "yes")|
|
|
247
|
+
|
|
248
|
+
### Outputs
|
|
249
|
+
|
|
250
|
+
1. Standard output
|
|
251
|
+
: payload (boolean) : the standard output of the command.
|
|
252
|
+
: status (string) : the text representing the status. It can be: **no_update, update_pending, ready_to_install, installing**.
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
<br />
|
|
256
|
+
|
|
257
|
+
[DONATE HERE, THANK YOU!](https://www.paypal.me/techtoday)
|
|
258
|
+
|
|
259
|
+
<br />
|
|
260
|
+
|
|
261
|
+
</script>
|