node-red-contrib-knx-ultimate 2.0.0 → 2.0.2

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/KNXEngine/dptlib/index.js +1 -1
  3. package/KNXUltimate.code-workspace +11 -1
  4. package/README.md +1 -1
  5. package/img/hue.png +0 -0
  6. package/img/hueButton.png +0 -0
  7. package/img/hueLight.png +0 -0
  8. package/img/knx.png +0 -0
  9. package/nodes/hue-config.js +20 -6
  10. package/nodes/knxUltimateHueButton.html +586 -0
  11. package/nodes/knxUltimateHueButton.js +159 -0
  12. package/nodes/knxUltimateHueLight.html +363 -55
  13. package/nodes/knxUltimateHueLight.js +70 -13
  14. package/nodes/locales/en-US/knxUltimateHueLight.json +3 -3
  15. package/nodes/utils/hueColorConverter.js +237 -0
  16. package/nodes/utils/hueUtils.js +37 -21
  17. package/package.json +6 -4
  18. package/nodes/locales/en-US/knxUltimateHueLight.html +0 -10
  19. /package/nodes/locales/{de → de-disabled}/hue-config.html +0 -0
  20. /package/nodes/locales/{de → de-disabled}/hue-config.json +0 -0
  21. /package/nodes/locales/{de → de-disabled}/knxUltimate-config.html +0 -0
  22. /package/nodes/locales/{de → de-disabled}/knxUltimate-config.json +0 -0
  23. /package/nodes/locales/{de → de-disabled}/knxUltimate.html +0 -0
  24. /package/nodes/locales/{de → de-disabled}/knxUltimate.json +0 -0
  25. /package/nodes/locales/{de → de-disabled}/knxUltimateAlerter.html +0 -0
  26. /package/nodes/locales/{de → de-disabled}/knxUltimateAlerter.json +0 -0
  27. /package/nodes/locales/{de → de-disabled}/knxUltimateGlobalContext.html +0 -0
  28. /package/nodes/locales/{de → de-disabled}/knxUltimateGlobalContext.json +0 -0
  29. /package/nodes/locales/{de → de-disabled}/knxUltimateHueLight.html +0 -0
  30. /package/nodes/locales/{de → de-disabled}/knxUltimateHueLight.json +0 -0
  31. /package/nodes/locales/{de → de-disabled}/knxUltimateLoadControl.html +0 -0
  32. /package/nodes/locales/{de → de-disabled}/knxUltimateLoadControl.json +0 -0
  33. /package/nodes/locales/{de → de-disabled}/knxUltimateLogger.html +0 -0
  34. /package/nodes/locales/{de → de-disabled}/knxUltimateLogger.json +0 -0
  35. /package/nodes/locales/{de → de-disabled}/knxUltimateSceneController.html +0 -0
  36. /package/nodes/locales/{de → de-disabled}/knxUltimateSceneController.json +0 -0
  37. /package/nodes/locales/{de → de-disabled}/knxUltimateViewer.html +0 -0
  38. /package/nodes/locales/{de → de-disabled}/knxUltimateViewer.json +0 -0
  39. /package/nodes/locales/{de → de-disabled}/knxUltimateWatchDog.html +0 -0
  40. /package/nodes/locales/{de → de-disabled}/knxUltimateWatchDog.json +0 -0
@@ -6,7 +6,7 @@
6
6
  //buttonState: {value: true},
7
7
  server: { type: "knxUltimate-config", required: true },
8
8
  serverHue: { type: "hue-config", required: true },
9
- name: { value: "Hue Light" },
9
+ name: { value: "Hue Light (beta)" },
10
10
 
11
11
  nameLightSwitch: { value: "" },
12
12
  GALightSwitch: { value: "" },
@@ -20,7 +20,23 @@
20
20
  GALightDIM: { value: "" },
21
21
  dptLightDIM: { value: "" },
22
22
 
23
- hueLight: { value: "" }
23
+ nameLightColor: { value: "" },
24
+ GALightColor: { value: "" },
25
+ dptLightColor: { value: "" },
26
+
27
+ nameLightColorState: { value: "" },
28
+ GALightColorState: { value: "" },
29
+ dptLightColorState: { value: "" },
30
+
31
+ nameLightBrightness: { value: "" },
32
+ GALightBrightness: { value: "" },
33
+ dptLightBrightness: { value: "" },
34
+
35
+ nameLightBrightnessState: { value: "" },
36
+ GALightBrightnessState: { value: "" },
37
+ dptLightBrightnessState: { value: "" },
38
+
39
+ hueDevice: { value: "" }
24
40
  },
25
41
  inputs: 0,
26
42
  outputs: 0,
@@ -28,7 +44,7 @@
28
44
  label: function () {
29
45
  return (this.name);
30
46
  },
31
- paletteLabel: "Hue Light (beta)",
47
+ paletteLabel: "Hue Light",
32
48
  // button: {
33
49
  // enabled: function() {
34
50
  // // return whether or not the button is enabled, based on the current
@@ -46,6 +62,7 @@
46
62
  oneditprepare: function () {
47
63
  var node = this;
48
64
  var oNodeServer = RED.nodes.node($("#node-input-server").val()); // Store the config-node
65
+ var oNodeServerHue = RED.nodes.node($("#node-input-serverHue").val()); // Store the config-node
49
66
 
50
67
  // 19/02/2020 Used to get the server sooner als deploy.
51
68
  $("#node-input-server").change(function () {
@@ -53,6 +70,12 @@
53
70
  oNodeServer = RED.nodes.node($(this).val());
54
71
  } catch (error) { }
55
72
  });
73
+ // 19/02/2020 Used to get the server sooner als deploy.
74
+ $("#node-input-serverHue").change(function () {
75
+ try {
76
+ oNodeServerHue = RED.nodes.node($(this).val());
77
+ } catch (error) { }
78
+ });
56
79
 
57
80
  // 31/03/2020 Search Helper
58
81
  function fullSearch(sourceText, searchString) {
@@ -69,9 +92,11 @@
69
92
  // ########################
70
93
  $.getJSON('knxUltimateDpts', (data) => {
71
94
  data.forEach(dpt => {
72
- $("#node-input-dptLightSwitch").append($("<option></option>")
73
- .attr("value", dpt.value)
74
- .text(dpt.text))
95
+ if (dpt.value.startsWith("1.")) {
96
+ $("#node-input-dptLightSwitch").append($("<option></option>")
97
+ .attr("value", dpt.value)
98
+ .text(dpt.text))
99
+ }
75
100
  });
76
101
  $("#node-input-dptLightSwitch").val(this.dptLightSwitch)
77
102
  })
@@ -84,7 +109,7 @@
84
109
  $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
85
110
  response($.map(data, function (value, key) {
86
111
  var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
87
- if (fullSearch(sSearch, request.term)) {
112
+ if (fullSearch(sSearch, request.term + " 1.")) {
88
113
  return {
89
114
  label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
90
115
  value: value.ga // Value
@@ -102,7 +127,6 @@
102
127
  } catch (error) {
103
128
  }
104
129
  $('#node-input-nameLightSwitch').val(sDevName);
105
- $('#node-input-name').val(sDevName);
106
130
  var optVal = $("#node-input-dptLightSwitch option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
107
131
  // Select the option value
108
132
  $("#node-input-dptLightSwitch").val(optVal);
@@ -116,10 +140,13 @@
116
140
  // ########################
117
141
  $.getJSON('knxUltimateDpts', (data) => {
118
142
  data.forEach(dpt => {
119
- $("#node-input-dptLightState").append($("<option></option>")
120
- .attr("value", dpt.value)
121
- .text(dpt.text))
143
+ if (dpt.value.startsWith("1.")) {
144
+ $("#node-input-dptLightState").append($("<option></option>")
145
+ .attr("value", dpt.value)
146
+ .text(dpt.text))
147
+ }
122
148
  });
149
+
123
150
  $("#node-input-dptLightState").val(this.dptLightState)
124
151
  })
125
152
 
@@ -130,7 +157,7 @@
130
157
  $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
131
158
  response($.map(data, function (value, key) {
132
159
  var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
133
- if (fullSearch(sSearch, request.term)) {
160
+ if (fullSearch(sSearch, request.term + " 1.")) {
134
161
  return {
135
162
  label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
136
163
  value: value.ga // Value
@@ -159,11 +186,15 @@
159
186
  // ########################
160
187
  $.getJSON('knxUltimateDpts', (data) => {
161
188
  data.forEach(dpt => {
162
- $("#node-input-dptLightDIM").append($("<option></option>")
163
- .attr("value", dpt.value)
164
- .text(dpt.text))
189
+ if (dpt.value === "3.007") {
190
+ $("#node-input-dptLightDIM").append($("<option></option>")
191
+ .attr("value", dpt.value)
192
+ .text(dpt.text))
193
+ }
165
194
  });
195
+
166
196
  $("#node-input-dptLightDIM").val(this.dptLightDIM)
197
+
167
198
  })
168
199
 
169
200
  // Autocomplete suggestion with ETS csv File
@@ -173,7 +204,7 @@
173
204
  $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
174
205
  response($.map(data, function (value, key) {
175
206
  var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
176
- if (fullSearch(sSearch, request.term)) {
207
+ if (fullSearch(sSearch, request.term + " 3.007")) {
177
208
  return {
178
209
  label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
179
210
  value: value.ga // Value
@@ -198,18 +229,186 @@
198
229
  });
199
230
 
200
231
 
232
+ // DPT dptLightColor and dptLightColorStateƒ
233
+ // ########################
234
+ $.getJSON('knxUltimateDpts', (data) => {
235
+ data.forEach(dpt => {
236
+ if (dpt.value === "232.600") {
237
+ $("#node-input-dptLightColor").append($("<option></option>")
238
+ .attr("value", dpt.value)
239
+ .text(dpt.text))
240
+ $("#node-input-dptLightColorState").append($("<option></option>")
241
+ .attr("value", dpt.value)
242
+ .text(dpt.text))
243
+ }
244
+ });
245
+
246
+ $("#node-input-dptLightColor").val(this.dptLightColor)
247
+ $("#node-input-dptLightColorState").val(this.dptLightColorState)
248
+
249
+ })
250
+
251
+ // Autocomplete suggestion with ETS csv File
252
+ $("#node-input-GALightColor").autocomplete({
253
+ minLength: 1,
254
+ source: function (request, response) {
255
+ $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
256
+ response($.map(data, function (value, key) {
257
+ var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
258
+ if (fullSearch(sSearch, request.term + " 232.600")) {
259
+ return {
260
+ label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
261
+ value: value.ga // Value
262
+ }
263
+ } else {
264
+ return null;
265
+ }
266
+ }));
267
+ });
268
+ }, select: function (event, ui) {
269
+ // Sets Datapoint and device name automatically
270
+ var sDevName = ui.item.label.split("#")[1].trim();
271
+ try {
272
+ sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
273
+ } catch (error) {
274
+ }
275
+ $('#node-input-nameLightColor').val(sDevName);
276
+ var optVal = $("#node-input-dptLightColor option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
277
+ // Select the option value
278
+ $("#node-input-dptLightColor").val(optVal);
279
+ }
280
+ });
281
+
282
+ // Autocomplete suggestion with ETS csv File
283
+ $("#node-input-GALightColorState").autocomplete({
284
+ minLength: 1,
285
+ source: function (request, response) {
286
+ $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
287
+ response($.map(data, function (value, key) {
288
+ var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
289
+ if (fullSearch(sSearch, request.term + " 232.600")) {
290
+ return {
291
+ label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
292
+ value: value.ga // Value
293
+ }
294
+ } else {
295
+ return null;
296
+ }
297
+ }));
298
+ });
299
+ }, select: function (event, ui) {
300
+ // Sets Datapoint and device name automatically
301
+ var sDevName = ui.item.label.split("#")[1].trim();
302
+ try {
303
+ sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
304
+ } catch (error) {
305
+ }
306
+ $('#node-input-nameLightColorState').val(sDevName);
307
+ var optVal = $("#node-input-dptLightColorState option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
308
+ // Select the option value
309
+ $("#node-input-dptLightColorState").val(optVal);
310
+ }
311
+ });
312
+
313
+
314
+
315
+ // DPT dptLightBrightness and dptLightBrightnessState
316
+ // ########################
317
+ $.getJSON('knxUltimateDpts', (data) => {
318
+ data.forEach(dpt => {
319
+ if (dpt.value === "5.001") {
320
+ $("#node-input-dptLightBrightness").append($("<option></option>")
321
+ .attr("value", dpt.value)
322
+ .text(dpt.text))
323
+ $("#node-input-dptLightBrightnessState").append($("<option></option>")
324
+ .attr("value", dpt.value)
325
+ .text(dpt.text))
326
+ }
327
+ });
328
+
329
+ $("#node-input-dptLightBrightness").val(this.dptLightBrightness)
330
+ $("#node-input-dptLightBrightnessState").val(this.dptLightBrightnessState)
331
+
332
+ })
333
+
334
+ // Autocomplete suggestion with ETS csv File
335
+ $("#node-input-GALightBrightness").autocomplete({
336
+ minLength: 1,
337
+ source: function (request, response) {
338
+ $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
339
+ response($.map(data, function (value, key) {
340
+ var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
341
+ if (fullSearch(sSearch, request.term + " 5.001")) {
342
+ return {
343
+ label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
344
+ value: value.ga // Value
345
+ }
346
+ } else {
347
+ return null;
348
+ }
349
+ }));
350
+ });
351
+ }, select: function (event, ui) {
352
+ // Sets Datapoint and device name automatically
353
+ var sDevName = ui.item.label.split("#")[1].trim();
354
+ try {
355
+ sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
356
+ } catch (error) {
357
+ }
358
+ $('#node-input-nameLightBrightness').val(sDevName);
359
+ var optVal = $("#node-input-dptLightBrightness option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
360
+ // Select the option value
361
+ $("#node-input-dptLightBrightness").val(optVal);
362
+ }
363
+ });
364
+
365
+ // Autocomplete suggestion with ETS csv File
366
+ $("#node-input-GALightBrightnessState").autocomplete({
367
+ minLength: 1,
368
+ source: function (request, response) {
369
+ $.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
370
+ response($.map(data, function (value, key) {
371
+ var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
372
+ if (fullSearch(sSearch, request.term + " 5.001")) {
373
+ return {
374
+ label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
375
+ value: value.ga // Value
376
+ }
377
+ } else {
378
+ return null;
379
+ }
380
+ }));
381
+ });
382
+ }, select: function (event, ui) {
383
+ // Sets Datapoint and device name automatically
384
+ var sDevName = ui.item.label.split("#")[1].trim();
385
+ try {
386
+ sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
387
+ } catch (error) {
388
+ }
389
+ $('#node-input-nameLightBrightnessState').val(sDevName);
390
+ var optVal = $("#node-input-dptLightBrightnessState option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
391
+ // Select the option value
392
+ $("#node-input-dptLightBrightnessState").val(optVal);
393
+ }
394
+ });
395
+
396
+
397
+
398
+
399
+
201
400
  // Autocomplete suggestion with HUE Lights
202
- $("#node-input-hueLight").autocomplete({
401
+ $("#node-input-name").autocomplete({
203
402
  minLength: 1,
204
403
  source: function (request, response) {
205
- $.getJSON("KNXUltimateGetAllLightsHUE", (data) => {
206
- response($.map(data.lights, function (value, key) {
404
+ $.getJSON("KNXUltimateGetDevicesHUE?rtype=light&nodeID=" + oNodeServerHue.id, (data) => {
405
+ response($.map(data.devices, function (value, key) {
207
406
  //alert(JSON.stringify(value) + " "+ key)
208
- var sSearch = (value.metadata.name + " (" + value.metadata.archetype + " " + value.type + ") #" + value.id);
407
+ var sSearch = (value.name);
209
408
  if (fullSearch(sSearch, request.term)) {
210
409
  return {
211
- label: value.metadata.name + " (" + value.metadata.archetype + " " + value.type + ") #" + value.id, // Label for Display
212
- value: value.metadata.name + " (" + value.metadata.archetype + " " + value.type + ") #" + value.id // Value
410
+ hueDevice: value.id, // Label for Display
411
+ value: value.name // Value
213
412
  }
214
413
  } else {
215
414
  return null;
@@ -217,9 +416,8 @@
217
416
  }));
218
417
  });
219
418
  }, select: function (event, ui) {
220
- // Sets the field
221
- var sDevName = ui.item.label;
222
- $('#node-input-hueLight').val(sDevName);
419
+ // Sets the fields
420
+ $('#node-input-hueDevice').val(ui.item.hueDevice);
223
421
  }
224
422
  });
225
423
 
@@ -243,32 +441,27 @@
243
441
 
244
442
 
245
443
  <div class="form-row">
246
- <b><span data-i18n="knxUltimateHueLight.title"></span></b>&nbsp&nbsp<span style="color:red"
247
- data-i18n="[html]knxUltimateHueLight.helplink"></span>
444
+ <b>HUE Light</b>&nbsp&nbsp<span style="color:red"
445
+ &nbsp<i class="fa fa-question-circle"></i></span>
446
+ &nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/en-hue-configuration"><u>Configuration</u></a>
248
447
  <br />
448
+ <p align="center"><img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-knx-ultimate/master/img/hueLight.png'></p>
249
449
  <br />
250
450
  <label for="node-input-server" >
251
- <i class="fa fa-square-o"></i>
252
- <span data-i18n="knxUltimateHueLight.advanced.node-input-server"></span>
451
+ <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>
452
+ KNX GW
253
453
  </label>
254
454
  <input type="text" id="node-input-server" />
255
455
  </div>
256
456
 
257
457
  <div class="form-row">
258
458
  <label for="node-input-serverHue">
259
- <i class="fa fa-lightbulb-o"></i>
260
- <span data-i18n="knxUltimateHueLight.advanced.node-input-serverHue"></span>
459
+ <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABFUlEQVQ4EZWSsWoCQRCG1yiENEFEi6QSkjqWWoqFoBYJ+Br6JHkMn8Iibd4ihQpaJIhWNkry/ZtdGZY78Qa+m39nZ+dm9s4550awglNBluS/gVtAX6KgDclf68w2OThgfR9iT/jnoEv4TtByDThWTCDKW4SSZTf/zj9/eZbN+izTDuKGimu0vPF8B/YN8aC8LmcOj/AAn9CFTEs70Js/oGqy79C69bqJ5XbQI2kGO5N8QL9D08S8zBtBF5ZaVsznpCMoqJnVdjTpb1Db0fwIWmQV6BLXzFOYgA6/gDVfQN9bBWp2J2hdWDPoBV5FrKnAJutHikk/CHHR8i7x4iG7qQ720IYvu3GFbpHjx3pFrOFYkA354z/5bkK826phyAAAAABJRU5ErkJggg=="/>
460
+ HUE Bridge
261
461
  </label>
262
462
  <input type="text" id="node-input-serverHue" />
263
463
  </div>
264
464
 
265
- <div class="form-row">
266
- <label for="node-input-name" >
267
- <i class="fa fa-tag"></i>
268
- <span data-i18n="knxUltimateHueLight.node-input-name"></span>
269
- </label>
270
- <input style="width:35%;" type="text" id="node-input-name" data-i18n="[placeholder]knxUltimateHueLight.node-input-name" />
271
- </div>
272
465
 
273
466
  <br/>
274
467
  <p>
@@ -276,17 +469,19 @@
276
469
  </p>
277
470
 
278
471
  <div class="form-row">
279
- <label for="node-input-hueLight" >
280
- <i class="fa fa-lightbulb-o"></i>&nbsp<span data-i18n="knxUltimateHueLight.node-input-hueLight"></span></label>
281
- <input type="text" id="node-input-hueLight" />
472
+ <label for="node-input-hueDevice" >
473
+ <i class="fa fa-play-circle"></i>&nbspName</label>
474
+ <input type="text" id="node-input-name" placeholder="Enter your hue device name"/>
475
+ <input type="hidden" id="node-input-hueDevice"/>
282
476
  </div>
283
477
 
284
478
  <br/>
479
+
480
+ <!-- <p> <img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-knx-ultimate/master/img/knx.png' width='32px'> -> <img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-knx-ultimate/master/img/hue.png' width='32px'></p> -->
481
+
285
482
  <p>
286
- <b>KONNEX</b>
483
+ <b>KNX COMMANDS -> TO PHILIPS HUE</b>
287
484
  </p>
288
-
289
- <div id="GAandDPT">
290
485
  <div class="form-row">
291
486
  <label for="node-input-nameLightSwitch" style="width:100px;"><i class="fa fa-play-circle-o"></i> <span data-i18n="knxUltimateHueLight.node-input-nameLightSwitch"></span></label>
292
487
 
@@ -300,10 +495,59 @@
300
495
  <label for="node-input-nameLightSwitch" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
301
496
  <input type="text" id="node-input-nameLightSwitch" style="width:200px;margin-left: 5px; text-align: left;">
302
497
  </div>
498
+ </div>
499
+ <div class="form-row">
500
+ <label for="node-input-nameLightDIM" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbspDimming</label>
501
+
502
+ <label for="node-input-GALightDIM" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
503
+ <input type="text" id="node-input-GALightDIM" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
504
+
505
+ <label for="node-input-dptLightDIM" style="width:40px; margin-left: 0px; text-align: right;">
506
+ <span data-i18n="knxUltimateHueLight.node-input-dptLightState"></span> </label>
507
+ <select id="node-input-dptLightDIM" style="width:140px;"></select>
508
+
509
+ <label for="node-input-nameLightDIM" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
510
+ <input type="text" id="node-input-nameLightDIM" style="width:200px;margin-left: 5px; text-align: left;">
511
+ </div>
512
+ </div>
513
+ <div class="form-row">
514
+ <label for="node-input-nameLightColor" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbspColor</label>
515
+
516
+ <label for="node-input-GALightColor" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
517
+ <input type="text" id="node-input-GALightColor" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
518
+
519
+ <label for="node-input-dptLightColor" style="width:40px; margin-left: 0px; text-align: right;">
520
+ <span data-i18n="knxUltimateHueLight.node-input-dptLightState"></span> </label>
521
+ <select id="node-input-dptLightColor" style="width:140px;"></select>
522
+
523
+ <label for="node-input-nameLightColor" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
524
+ <input type="text" id="node-input-nameLightColor" style="width:200px;margin-left: 5px; text-align: left;">
525
+ </div>
526
+ </div>
527
+ </div>
528
+ <div class="form-row">
529
+ <label for="node-input-nameLightBrightness" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbspBrightness</label>
530
+
531
+ <label for="node-input-GALightBrightness" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
532
+ <input type="text" id="node-input-GALightBrightness" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
533
+
534
+ <label for="node-input-dptLightBrightness" style="width:40px; margin-left: 0px; text-align: right;">
535
+ <span data-i18n="knxUltimateHueLight.node-input-dptLightState"></span> </label>
536
+ <select id="node-input-dptLightBrightness" style="width:140px;"></select>
537
+
538
+ <label for="node-input-nameLightBrightness" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
539
+ <input type="text" id="node-input-nameLightBrightness" style="width:200px;margin-left: 5px; text-align: left;">
540
+ </div>
541
+
542
+ <br/>
543
+ <p>
544
+ <b>PHILIPS HUE LIGHT STATE -> TO KNX</b>
545
+ </p>
546
+
303
547
  <div class="form-row">
304
- <label for="node-input-nameLightState" style="width:100px;"><i class="fa fa-play-circle-o"></i> <span data-i18n="knxUltimateHueLight.node-input-nameLightState"></span></label>
548
+ <label for="node-input-nameLightState" style="width:100px;"><i class="fa fa-play-circle-o"></i> Switch</label>
305
549
 
306
- <label for="node-input-GALightState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
550
+ <label for="node-input-GALightState" style="width:20px;">GA</label>
307
551
  <input type="text" id="node-input-GALightState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
308
552
 
309
553
  <label for="node-input-dptLightState" style="width:40px; margin-left: 0px; text-align: right;">
@@ -314,19 +558,83 @@
314
558
  <input type="text" id="node-input-nameLightState" style="width:200px;margin-left: 5px; text-align: left;">
315
559
  </div>
316
560
  <div class="form-row">
317
- <label for="node-input-nameLightDIM" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbsp DIM (3.007)</label>
561
+ <label for="node-input-nameLightColorState" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbspColor</label>
318
562
 
319
- <label for="node-input-GALightDIM" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
320
- <input type="text" id="node-input-GALightDIM" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
563
+ <label for="node-input-GALightColorState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
564
+ <input type="text" id="node-input-GALightColorState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
321
565
 
322
- <label for="node-input-dptLightDIM" style="width:40px; margin-left: 0px; text-align: right;">
323
- <span data-i18n="knxUltimateHueLight.node-input-dptLightDIM"></span> </label>
324
- <select id="node-input-dptLightDIM" style="width:140px;"></select>
566
+ <label for="node-input-dptLightColorState" style="width:40px; margin-left: 0px; text-align: right;">
567
+ <span data-i18n="knxUltimateHueLight.node-input-dptLightState"></span> </label>
568
+ <select id="node-input-dptLightColorState" style="width:140px;"></select>
325
569
 
326
- <label for="node-input-nameLightDIM" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
327
- <input type="text" id="node-input-nameLightDIM" style="width:200px;margin-left: 5px; text-align: left;">
570
+ <label for="node-input-nameLightColorState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
571
+ <input type="text" id="node-input-nameLightColorState" style="width:200px;margin-left: 5px; text-align: left;">
328
572
  </div>
329
- </div>
573
+ </div>
574
+ <div class="form-row">
575
+ <label for="node-input-nameLightBrightnessState" style="width:100px;"><i class="fa fa-play-circle-o"></i>&nbspBrightness</label>
576
+
577
+ <label for="node-input-GALightBrightnessState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
578
+ <input type="text" id="node-input-GALightBrightnessState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
579
+
580
+ <label for="node-input-dptLightBrightnessState" style="width:40px; margin-left: 0px; text-align: right;">
581
+ <span data-i18n="knxUltimateHueLight.node-input-dptLightState"></span> </label>
582
+ <select id="node-input-dptLightBrightnessState" style="width:140px;"></select>
583
+
584
+ <label for="node-input-nameLightBrightnessState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
585
+ <input type="text" id="node-input-nameLightBrightnessState" style="width:200px;margin-left: 5px; text-align: left;">
586
+ </div>
587
+
588
+ <br/>
589
+ <br/>
590
+ <br/>
591
+ <br/>
592
+ <br/>
593
+ <br/>
594
+ <br/>
595
+ <br/>
596
+
597
+
598
+ </script>
330
599
 
331
600
 
601
+ <script type="text/markdown" data-help-name="knxUltimateHueLight">
602
+
603
+ [Find it useful?](https://www.paypal.me/techtoday)
604
+
605
+ This node lets you control your Philips HUE light and also get the states of this lights.
606
+
607
+ **General**
608
+ |Property|Description|
609
+ |--|--|
610
+ | KNX GW | Select the KNX gateway to be used |
611
+ | HUE Bridge | Select the HUE Bridge to be used |
612
+ | Name | HUE light to be used. The avaiable lights start showing up while you're typing.|
613
+
614
+ <br/>
615
+
616
+ **KNX COMMANDS -> TO PHILIPS HUE**
617
+ Here you can choose the KNX addresses to be linked to the avaiable HUE light commands.<br/>
618
+ Start typing in the GA field, the name or group address of your KNX device, the avaiable devices start showing up while you're typing.
619
+
620
+ |Property|Description|
621
+ |--|--|
622
+ | Switch | This command is used to turn on/off the HUE light via a boolean KNX value true/false|
623
+ | Dimming | This command is used to DIM the HUE light via a KNX relative DIM datapoint |
624
+ | Color | This command is used to change the HUE light's color. Accepted datapoint is RGB triplet (r,g,b)|
625
+ | Brightness | This command is used to change the absolute HUE light's brightness |
626
+
627
+ <br/>
628
+
629
+ **PHILIPS HUE LIGHT STATE -> TO KNX**
630
+ Here you can link the state changes of your HUE light, to any KNX group address you want.<br/>
631
+ Start typing in the GA field, the name or group address of your KNX device, the avaiable devices start showing up while you're typing.
632
+
633
+ |Property|Description|
634
+ |--|--|
635
+ | Switch | This state is used to send on/off value to the selected KNX group address |
636
+ | Color | This state is used to send changes of the HUE light's color. Accepted datapoint is RGB triplet (r,g,b)|
637
+ | Brightness | This state is used to send changes of your absolute HUE light's brightness, to a KNX group address |
638
+
639
+ <br/>
332
640
  </script>