node-red-contrib-knx-ultimate 2.2.20 → 2.2.21
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/CHANGELOG.md +6 -0
- package/nodes/hue-config.js +25 -5
- package/nodes/knxUltimateHueBattery.html +2 -2
- package/nodes/knxUltimateHueButton.html +2 -2
- package/nodes/knxUltimateHueLight.html +632 -546
- package/nodes/knxUltimateHueLight.js +84 -50
- package/nodes/knxUltimateHueLightSensor.html +3 -2
- package/nodes/knxUltimateHueMotion.html +2 -2
- package/nodes/knxUltimateHueScene.html +2 -2
- package/nodes/knxUltimateHueTapDial.html +2 -2
- package/nodes/knxUltimateHueTemperatureSensor.html +2 -2
- package/nodes/utils/hueColorConverter.js +195 -36
- package/package.json +1 -2
- package/resources/iro@5 +0 -7
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
<!-- <script type="application/javascript;charset=utf-8" src="https://kit.fontawesome.com/11f26b4500.js"
|
|
2
|
-
|
|
3
|
-
<script src="resources/node-red-contrib-knx-ultimate/
|
|
4
|
-
|
|
5
|
-
crossorigin="anonymous"></script>
|
|
6
|
-
<script type="application/javascript;charset=utf-8" src="https://cdn.jsdelivr.net/npm/@jaames/iro@5"></script>
|
|
1
|
+
<!-- <script type="application/javascript;charset=utf-8" src="https://kit.fontawesome.com/11f26b4500.js" crossorigin="anonymous"></script>
|
|
2
|
+
<script type="application/javascript;charset=utf-8" src="https://cdn.jsdelivr.net/npm/@jaames/iro@5"></script> -->
|
|
3
|
+
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
|
|
4
|
+
|
|
7
5
|
<script type="text/javascript">
|
|
8
6
|
|
|
9
7
|
RED.nodes.registerType("knxUltimateHueLight", {
|
|
@@ -63,11 +61,6 @@
|
|
|
63
61
|
GALightColorCycle: { value: "" },
|
|
64
62
|
dptLightColorCycle: { value: "" },
|
|
65
63
|
|
|
66
|
-
enableDayNightLighting: { value: "no" },
|
|
67
|
-
colorAtSwitchOnDayTime: { value: '{"red":255, "green":255, "blue":255}' },
|
|
68
|
-
colorAtSwitchOnNightTime: { value: '{"red":23, "green":4, "blue":0}' },
|
|
69
|
-
invertDayNight: { value: false },
|
|
70
|
-
|
|
71
64
|
nameDaylightSensor: { value: "" },
|
|
72
65
|
GADaylightSensor: { value: "" },
|
|
73
66
|
dptDaylightSensor: { value: "" },
|
|
@@ -81,6 +74,13 @@
|
|
|
81
74
|
dptLightKelvinState: { value: "" },
|
|
82
75
|
|
|
83
76
|
specifySwitchOnBrightness: { value: "yes" },
|
|
77
|
+
colorAtSwitchOnDayTime: { value: '{"red":255, "green":255, "blue":255}' },
|
|
78
|
+
|
|
79
|
+
enableDayNightLighting: { value: "no" },
|
|
80
|
+
colorAtSwitchOnNightTime: { value: '{"red":23, "green":4, "blue":0}' },
|
|
81
|
+
|
|
82
|
+
invertDayNight: { value: false },
|
|
83
|
+
|
|
84
84
|
updateKNXBrightnessStatusOnHUEOnOff: { value: "no" },
|
|
85
85
|
dimSpeed: { value: 5000, required: false },
|
|
86
86
|
minDimLevelLight: { value: 10, required: false },
|
|
@@ -105,170 +105,6 @@
|
|
|
105
105
|
var oNodeServer = RED.nodes.node($("#node-input-server").val()); // Store the config-node
|
|
106
106
|
var oNodeServerHue = RED.nodes.node($("#node-input-serverHue").val()); // Store the config-node
|
|
107
107
|
|
|
108
|
-
// Create the TAB in Node-Red
|
|
109
|
-
// ####################################
|
|
110
|
-
const content = `<html>
|
|
111
|
-
|
|
112
|
-
<head>
|
|
113
|
-
<div class="red-ui-sidebar-header">Color Selector</div>
|
|
114
|
-
</head>
|
|
115
|
-
<div style='position:relative;height:100%;margin:10px'>
|
|
116
|
-
<p>Choose the desired color/temperature, then click <b>Apply</b></p>
|
|
117
|
-
<div>
|
|
118
|
-
<h3>Color RGB</h3>
|
|
119
|
-
<div id="colorPicker"></div>
|
|
120
|
-
</div>
|
|
121
|
-
</br>
|
|
122
|
-
<div>
|
|
123
|
-
<input style="width:100%" type="text" id="resultRGB">
|
|
124
|
-
<input type="hidden" id="tabNRColor_destinationTextbox">
|
|
125
|
-
</div>
|
|
126
|
-
</br>
|
|
127
|
-
<div>
|
|
128
|
-
<h3>Temperature Kelvin</h3>
|
|
129
|
-
<div id="kelvinPicker"></div>
|
|
130
|
-
</div>
|
|
131
|
-
</br>
|
|
132
|
-
<div>
|
|
133
|
-
<input style="width:100%" type="text" id="resultKelvin">
|
|
134
|
-
<input type="hidden" id="tabNRColor_destinationTextbox">
|
|
135
|
-
</div>
|
|
136
|
-
<div id="tabNRColor_divApplyCancel" hidden>
|
|
137
|
-
<button id="tabNRColor_colorSelectorTABApplyTextButton" type="button" class="red-ui-button">Apply</button>
|
|
138
|
-
<button id="tabNRColor_colorSelectorTABCancelTextButton" type="button" class="red-ui-button">Cancel</button>
|
|
139
|
-
</div>
|
|
140
|
-
|
|
141
|
-
</div>
|
|
142
|
-
</html>
|
|
143
|
-
`;
|
|
144
|
-
|
|
145
|
-
// COLOR BAR HANDLING ###########################
|
|
146
|
-
RED.sidebar.addTab({
|
|
147
|
-
id: "tabNRColor",
|
|
148
|
-
label: "Color Picker",
|
|
149
|
-
name: "Color Picker",
|
|
150
|
-
iconClass: "fa fa-pencil",
|
|
151
|
-
content: content,
|
|
152
|
-
enableOnEdit: true,
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
// Temperature
|
|
156
|
-
this.kelvinPicker = new iro.ColorPicker("#kelvinPicker", {
|
|
157
|
-
width: 250,
|
|
158
|
-
color: "rgb(255, 0, 0)",
|
|
159
|
-
borderWidth: 1,
|
|
160
|
-
borderColor: "#fff",
|
|
161
|
-
layoutDirection: "vertical",
|
|
162
|
-
layout: [
|
|
163
|
-
{
|
|
164
|
-
component: iro.ui.Slider,
|
|
165
|
-
options: {
|
|
166
|
-
sliderType: "kelvin",
|
|
167
|
-
sliderSize: 20,
|
|
168
|
-
},
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
});
|
|
172
|
-
// color:change callbacks receive the current color
|
|
173
|
-
this.kelvinPicker.on("color:change", function (color) {
|
|
174
|
-
const resultRGBForNode = '{"red": ' + color.rgb.r + ', "green": ' + color.rgb.g + ', "blue": ' + color.rgb.b + "}";
|
|
175
|
-
$("#resultRGB").val(resultRGBForNode);
|
|
176
|
-
$("#resultKelvin").val(Math.round(color.kelvin, 0));
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
$("#resultKelvin").on("keyup", function () {
|
|
180
|
-
setIroColorKelvin();
|
|
181
|
-
});
|
|
182
|
-
function setIroColorKelvin() {
|
|
183
|
-
try {
|
|
184
|
-
const color = JSON.parse($("#resultKelvin").val());
|
|
185
|
-
this.kelvinPicker.color.setChannel("kelvin", color);
|
|
186
|
-
} catch (error) { }
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Color
|
|
190
|
-
this.colorPicker = new iro.ColorPicker("#colorPicker", {
|
|
191
|
-
width: 250,
|
|
192
|
-
color: "rgb(255, 0, 0)",
|
|
193
|
-
borderWidth: 1,
|
|
194
|
-
borderColor: "#fff",
|
|
195
|
-
layout: [
|
|
196
|
-
{
|
|
197
|
-
component: iro.ui.Box,
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
component: iro.ui.Slider,
|
|
201
|
-
options: {
|
|
202
|
-
id: "hue-slider",
|
|
203
|
-
sliderType: "hue",
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
],
|
|
207
|
-
});
|
|
208
|
-
// color:change callbacks receive the current color
|
|
209
|
-
this.colorPicker.on("color:change", function (color) {
|
|
210
|
-
// Transform to compatible value for the node { "red": 255, "green": 255, "blue": 255 }
|
|
211
|
-
const resultRGBForNode = '{"red": ' + color.rgb.r + ', "green": ' + color.rgb.g + ', "blue": ' + color.rgb.b + "}";
|
|
212
|
-
$("#resultRGB").val(resultRGBForNode);
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
$("#resultRGB").on("keyup", function () {
|
|
216
|
-
setIroColor();
|
|
217
|
-
});
|
|
218
|
-
function setIroColor() {
|
|
219
|
-
try {
|
|
220
|
-
const color = JSON.parse($("#resultRGB").val());
|
|
221
|
-
this.colorPicker.color.setChannel("rgb", "r", color.red);
|
|
222
|
-
this.colorPicker.color.setChannel("rgb", "g", color.green);
|
|
223
|
-
this.colorPicker.color.setChannel("rgb", "b", color.blue);
|
|
224
|
-
} catch (error) { }
|
|
225
|
-
}
|
|
226
|
-
// Copy to clipboard button
|
|
227
|
-
$("#tabNRColor_colorSelectorTABApplyTextButton").on("click", function () {
|
|
228
|
-
// const aa = $("#resultRGB").val()
|
|
229
|
-
// navigator.clipboard.writeText(aa)
|
|
230
|
-
const destTextBox = "#" + $("#tabNRColor_destinationTextbox").val();
|
|
231
|
-
const resultRGB = $("#resultRGB").val();
|
|
232
|
-
const resultKelvin = node.kelvinPicker.colors[0].kelvin;
|
|
233
|
-
if (destTextBox === "#node-input-colorAtSwitchOnNightTime" || destTextBox === "#node-input-colorAtSwitchOnDayTime") {
|
|
234
|
-
$(destTextBox).val(resultRGB);
|
|
235
|
-
} else {
|
|
236
|
-
$(destTextBox).val(resultKelvin);
|
|
237
|
-
}
|
|
238
|
-
// Flash the destination control
|
|
239
|
-
$(destTextBox).css("background-color", "lightgreen");
|
|
240
|
-
$("#tabNRColor_divApplyCancel").hide();
|
|
241
|
-
RED.sidebar.show("help");
|
|
242
|
-
setTimeout(() => {
|
|
243
|
-
$(destTextBox).css("background-color", "");
|
|
244
|
-
}, 500);
|
|
245
|
-
});
|
|
246
|
-
$("#tabNRColor_colorSelectorTABCancelTextButton").on("click", function () {
|
|
247
|
-
$("#tabNRColor_destinationTextbox").val("");
|
|
248
|
-
RED.sidebar.show("help");
|
|
249
|
-
$("#tabNRColor_divApplyCancel").hide();
|
|
250
|
-
});
|
|
251
|
-
$("#node-input-colorAtSwitchOnDayTime").on("focus", function () {
|
|
252
|
-
RED.sidebar.show("tabNRColor"); // Node-Red custom color TAB
|
|
253
|
-
$("#tabNRColor_destinationTextbox").val("node-input-colorAtSwitchOnDayTime");
|
|
254
|
-
$("#tabNRColor_divApplyCancel").show();
|
|
255
|
-
const color = $("#node-input-colorAtSwitchOnDayTime").val();
|
|
256
|
-
$("#resultRGB").val(color);
|
|
257
|
-
setIroColor();
|
|
258
|
-
});
|
|
259
|
-
// $("#node-input-colorAtSwitchOnDayTime").on("blur", function () {
|
|
260
|
-
// RED.sidebar.show("help");
|
|
261
|
-
// });
|
|
262
|
-
$("#node-input-colorAtSwitchOnNightTime").on("focus", function () {
|
|
263
|
-
RED.sidebar.show("tabNRColor"); // Node-Red custom color TAB
|
|
264
|
-
$("#tabNRColor_destinationTextbox").val("node-input-colorAtSwitchOnNightTime");
|
|
265
|
-
$("#tabNRColor_divApplyCancel").show();
|
|
266
|
-
const color = $("#node-input-colorAtSwitchOnNightTime").val();
|
|
267
|
-
$("#resultRGB").val(color);
|
|
268
|
-
setIroColor();
|
|
269
|
-
});
|
|
270
|
-
// ####################################
|
|
271
|
-
|
|
272
108
|
$("#tabs").tabs(); // Tabs gestione KNX
|
|
273
109
|
|
|
274
110
|
// 19/02/2020 Used to get the server sooner als deploy.
|
|
@@ -301,7 +137,14 @@
|
|
|
301
137
|
$.getJSON("knxUltimateDpts", (data) => {
|
|
302
138
|
data.forEach((dpt) => {
|
|
303
139
|
if (dpt.value.startsWith(_dpt)) {
|
|
304
|
-
|
|
140
|
+
// Adjustment for HUE Temperature
|
|
141
|
+
if (dpt.value.startsWith("7.600")) {
|
|
142
|
+
$(_destinationWidget).append($("<option></option>").attr("value", dpt.value).text(dpt.text + " - KNX Kelvin range (0K-65535K)"));
|
|
143
|
+
} else if (dpt.value.startsWith("9.002")) {
|
|
144
|
+
$(_destinationWidget).append($("<option></option>").attr("value", dpt.value).text(dpt.text + " - HUE Kelvin range (Default 2000K-6535K"));
|
|
145
|
+
} else {
|
|
146
|
+
$(_destinationWidget).append($("<option></option>").attr("value", dpt.value).text(dpt.text));
|
|
147
|
+
}
|
|
305
148
|
}
|
|
306
149
|
});
|
|
307
150
|
// Eval
|
|
@@ -393,44 +236,73 @@
|
|
|
393
236
|
getDPT("7.600", "#node-input-dptLightKelvinState");
|
|
394
237
|
getGroupAddress("#node-input-GALightKelvinState", "#node-input-nameLightKelvinState", "#node-input-dptLightKelvinState", " 7.600");
|
|
395
238
|
|
|
239
|
+
getDPT("9.002", "#node-input-dptLightKelvin");
|
|
240
|
+
getGroupAddress("#node-input-GALightKelvin", "#node-input-nameLightKelvin", "#node-input-dptLightKelvin", " 9.002");
|
|
396
241
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
$("#divEnableDayNightLighting").show();
|
|
400
|
-
$("#divCCSBoxayNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
401
|
-
} else {
|
|
402
|
-
$("#divEnableDayNightLighting").hide();
|
|
403
|
-
$("#divCCSBoxayNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
404
|
-
}
|
|
242
|
+
getDPT("9.002", "#node-input-dptLightKelvinState");
|
|
243
|
+
getGroupAddress("#node-input-GALightKelvinState", "#node-input-nameLightKelvinState", "#node-input-dptLightKelvinState", " 9.002");
|
|
405
244
|
|
|
406
|
-
$("#node-input-enableDayNightLighting").on("change", function () {
|
|
407
|
-
if ($("#node-input-enableDayNightLighting").val() === "yes") {
|
|
408
|
-
$("#divEnableDayNightLighting").show();
|
|
409
|
-
$("#divCCSBoxayNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
410
|
-
} else {
|
|
411
|
-
$("#divEnableDayNightLighting").hide();
|
|
412
|
-
$("#divCCSBoxayNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
413
|
-
}
|
|
414
|
-
});
|
|
415
245
|
|
|
416
246
|
// Show/Hide the div of the color at swich on
|
|
417
247
|
if (this.specifySwitchOnBrightness === "yes") {
|
|
418
248
|
$("#divColorsAtSwitchOn").show();
|
|
249
|
+
$("#divTemperatureAtSwitchOn").hide();
|
|
250
|
+
} else if (this.specifySwitchOnBrightness === "temperature") {
|
|
251
|
+
$("#divColorsAtSwitchOn").hide();
|
|
252
|
+
$("#divTemperatureAtSwitchOn").show();
|
|
419
253
|
} else {
|
|
420
254
|
$("#divColorsAtSwitchOn").hide();
|
|
421
|
-
$("#
|
|
255
|
+
$("#divTemperatureAtSwitchOn").hide();
|
|
422
256
|
}
|
|
423
257
|
|
|
424
258
|
$("#node-input-specifySwitchOnBrightness").on("change", function () {
|
|
425
259
|
if ($("#node-input-specifySwitchOnBrightness").val() === "yes") {
|
|
426
260
|
$("#divColorsAtSwitchOn").show();
|
|
427
|
-
|
|
261
|
+
$("#divTemperatureAtSwitchOn").hide();
|
|
262
|
+
} else if ($("#node-input-specifySwitchOnBrightness").val() === "temperature") {
|
|
263
|
+
$("#divColorsAtSwitchOn").hide();
|
|
264
|
+
$("#divTemperatureAtSwitchOn").show();
|
|
428
265
|
} else {
|
|
429
266
|
$("#divColorsAtSwitchOn").hide();
|
|
430
|
-
$("#
|
|
267
|
+
$("#divTemperatureAtSwitchOn").hide();
|
|
431
268
|
}
|
|
432
269
|
});
|
|
433
270
|
|
|
271
|
+
// Show/Hide and enable/disable day/night Lighting behaviour
|
|
272
|
+
if (this.enableDayNightLighting === "yes") {
|
|
273
|
+
$("#divEnableDayNightLighting").show();
|
|
274
|
+
$("#divCCSBoxAtNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
275
|
+
$("#divColorsAtSwitchOnNightTime").show();
|
|
276
|
+
$("#divTemperatureAtSwitchOnNightTime").hide();
|
|
277
|
+
} else if (this.enableDayNightLighting === "temperature") {
|
|
278
|
+
$("#divEnableDayNightLighting").show();
|
|
279
|
+
$("#divCCSBoxAtNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
280
|
+
$("#divColorsAtSwitchOnNightTime").hide();
|
|
281
|
+
$("#divTemperatureAtSwitchOnNightTime").show();
|
|
282
|
+
} else {
|
|
283
|
+
$("#divEnableDayNightLighting").hide();
|
|
284
|
+
$("#divCCSBoxAtNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
$("#node-input-enableDayNightLighting").on("change", function () {
|
|
288
|
+
if ($("#node-input-enableDayNightLighting").val() === "yes") {
|
|
289
|
+
$("#divEnableDayNightLighting").show();
|
|
290
|
+
$("#divCCSBoxAtNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
291
|
+
$("#divColorsAtSwitchOnNightTime").show();
|
|
292
|
+
$("#divTemperatureAtSwitchOnNightTime").hide();
|
|
293
|
+
} else if ($("#node-input-enableDayNightLighting").val() === "temperature") {
|
|
294
|
+
$("#divEnableDayNightLighting").show();
|
|
295
|
+
$("#divCCSBoxAtNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
296
|
+
$("#divColorsAtSwitchOnNightTime").hide();
|
|
297
|
+
$("#divTemperatureAtSwitchOnNightTime").show();
|
|
298
|
+
} else {
|
|
299
|
+
$("#divEnableDayNightLighting").hide();
|
|
300
|
+
$("#divCCSBoxAtNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
434
306
|
// Autocomplete suggestion with HUE Lights
|
|
435
307
|
$("#node-input-name").autocomplete({
|
|
436
308
|
minLength: 1,
|
|
@@ -506,36 +378,131 @@
|
|
|
506
378
|
|
|
507
379
|
$("#getColorAtSwitchOnDayTimeButton").on("click", function () {
|
|
508
380
|
$("#getColorAtSwitchOnDayTimeButton").text("Wait...");
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
381
|
+
let jRet;
|
|
382
|
+
let sQuery;
|
|
383
|
+
if ($("#node-input-specifySwitchOnBrightness").val() === "yes") sQuery = "knxUltimateGetHueColor";
|
|
384
|
+
if ($("#node-input-specifySwitchOnBrightness").val() === "temperature") sQuery = "knxUltimateGetKelvinColor";
|
|
385
|
+
$.getJSON(sQuery + "?id=" + $("#node-input-hueDevice").val().split("#")[0], (data) => {
|
|
386
|
+
$("#node-input-colorAtSwitchOnDayTime").val(data);
|
|
387
|
+
$("#colorPickerDay").val(data);
|
|
388
|
+
$("#colorPickerDay").css("background-color", "lightgreen");
|
|
512
389
|
setTimeout(() => {
|
|
513
|
-
$("#
|
|
390
|
+
$("#colorPickerDay").css("background-color", "");
|
|
514
391
|
}, 500);
|
|
515
|
-
$("#getColorAtSwitchOnDayTimeButton").text("Get
|
|
392
|
+
$("#getColorAtSwitchOnDayTimeButton").text("Get again");
|
|
516
393
|
});
|
|
517
394
|
});
|
|
395
|
+
|
|
518
396
|
$("#getColorAtSwitchOnNightTimeButton").on("click", function () {
|
|
519
397
|
$("#getColorAtSwitchOnNightTimeButton").text("Wait...");
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
398
|
+
let jRet;
|
|
399
|
+
let sQuery;
|
|
400
|
+
if ($("#node-input-enableDayNightLighting").val() === "yes") sQuery = "knxUltimateGetHueColor";
|
|
401
|
+
if ($("#node-input-enableDayNightLighting").val() === "temperature") sQuery = "knxUltimateGetKelvinColor";
|
|
402
|
+
$.getJSON(sQuery + "?id=" + $("#node-input-hueDevice").val().split("#")[0], (data) => {
|
|
403
|
+
$("#node-input-colorAtSwitchOnNightTime").val(data);
|
|
404
|
+
$("#colorPickerNight").val(data);
|
|
405
|
+
$("#colorPickerNight").css("background-color", "lightgreen");
|
|
523
406
|
setTimeout(() => {
|
|
524
|
-
$("#
|
|
407
|
+
$("#colorPickerNight").css("background-color", "");
|
|
525
408
|
}, 500);
|
|
526
|
-
$("#getColorAtSwitchOnNightTimeButton").text("Get
|
|
409
|
+
$("#getColorAtSwitchOnNightTimeButton").text("Get again");
|
|
527
410
|
});
|
|
528
411
|
});
|
|
529
412
|
|
|
530
|
-
// Fill options for minDimLevel and maxDimLevel
|
|
531
|
-
for (let index = 0; index <=
|
|
413
|
+
// Fill options for minDimLevel and maxDimLevel and comboBrightnessAtSwitchOn (for color brightness at switch on, with temperature toghedher)
|
|
414
|
+
for (let index = 0; index <= 100; index += 5) {
|
|
532
415
|
if (index === 0) {
|
|
533
416
|
$("#node-input-minDimLevelLight").append($("<option>").val(index).text(index.toString() + "% (Switch Off)"));
|
|
417
|
+
$("#comboBrightnessAtSwitchOn").append($("<option>").val(index).text(index.toString() + "% (Switch Off)"));
|
|
418
|
+
$("#comboBrightnessAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "% (Switch Off)"));
|
|
534
419
|
} else {
|
|
535
420
|
$("#node-input-minDimLevelLight").append($("<option>").val(index).text(index.toString() + "%"));
|
|
421
|
+
$("#comboBrightnessAtSwitchOn").append($("<option>").val(index).text(index.toString() + "%"));
|
|
422
|
+
$("#comboBrightnessAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "%"));
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Temperatures, from 2000 to 6535K (circa)
|
|
426
|
+
for (let index = 2000; index <= 6500; index += 100) {
|
|
427
|
+
if (index === 2200) {
|
|
428
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (start of philips white ambiance lights range)"));
|
|
429
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (start of philips white ambiance lights range)"));
|
|
430
|
+
} else if (index === 2700) {
|
|
431
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (warm white, intimate, cozy, personal, for living rooms)"));
|
|
432
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (warm white, intimate, cozy, personal, for living rooms)"));
|
|
433
|
+
} else if (index === 3000) {
|
|
434
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (soft white, warm, calming, for bathrooms and kitchens)"));
|
|
435
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (soft white, warm, calming, for bathrooms and kitchens)"));
|
|
436
|
+
} else if (index === 3500) {
|
|
437
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (neutral white, balanced, friendly, inviting, for office spaces and retail)"));
|
|
438
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (not recommended for night time - neutral white, for office spaces and retail)"));
|
|
439
|
+
} else if (index === 4100) {
|
|
440
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (cool white, precise, clean, focused, for garages and grocery stores)"));
|
|
441
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (not recommended for night time - cool white, precise, clean, focused, for garages and grocery stores)"));
|
|
442
|
+
} else if (index === 5000) {
|
|
443
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (bright white, vibrant, crisp, for warehouses, sports stadiums and healthcare)"));
|
|
444
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (not recommended for night time - bright white, vibrant, crisp, for warehouses, sports stadiums and healthcare)"));
|
|
445
|
+
} else if (index === 6500) {
|
|
446
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K (daylight, alert, energetic, for indoor agriculture)"));
|
|
447
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K (not recommended for night time - daylight, alert, energetic, for indoor agriculture)"));
|
|
448
|
+
} else {
|
|
449
|
+
$("#comboTemperatureAtSwitchOn").append($("<option>").val(index).text(index.toString() + "K"));
|
|
450
|
+
$("#comboTemperatureAtSwitchOnNightTime").append($("<option>").val(index).text(index.toString() + "K"));
|
|
536
451
|
}
|
|
452
|
+
}
|
|
453
|
+
|
|
537
454
|
|
|
455
|
+
// Calculate kelvin/color
|
|
456
|
+
let json;
|
|
457
|
+
try {
|
|
458
|
+
json = JSON.parse(this.colorAtSwitchOnDayTime);
|
|
459
|
+
} catch (error) { }
|
|
460
|
+
if (json !== undefined && json.kelvin !== undefined) {
|
|
461
|
+
// Kelvin
|
|
462
|
+
$("#comboTemperatureAtSwitchOn").val(json.kelvin);
|
|
463
|
+
$("#comboBrightnessAtSwitchOn").val(json.brightness);
|
|
464
|
+
} else if (json !== undefined && json.red !== undefined) {
|
|
465
|
+
// Must transform RGB into HTML HEX color
|
|
466
|
+
$("#node-input-colorAtSwitchOnDayTime").val("#" + rgbHex(json.red, json.green, json.blue));
|
|
467
|
+
$("#colorPickerDay").val($("#node-input-colorAtSwitchOnDayTime").val());
|
|
468
|
+
} else {
|
|
469
|
+
// It's already an HEX color
|
|
470
|
+
$("#colorPickerDay").val(this.colorAtSwitchOnDayTime);
|
|
538
471
|
}
|
|
472
|
+
//Night
|
|
473
|
+
json = undefined;
|
|
474
|
+
try {
|
|
475
|
+
json = JSON.parse(this.colorAtSwitchOnNightTime);
|
|
476
|
+
} catch (error) { }
|
|
477
|
+
if (json !== undefined && json.kelvin !== undefined) {
|
|
478
|
+
// Kelvin
|
|
479
|
+
$("#comboTemperatureAtSwitchOnNightTime").val(json.kelvin);
|
|
480
|
+
$("#comboBrightnessAtSwitchOnNightTime").val(json.brightness);
|
|
481
|
+
} else if (json !== undefined && json.red !== undefined) {
|
|
482
|
+
// Must transform RGB into HTML HEX color
|
|
483
|
+
$("#node-input-colorAtSwitchOnNightTime").val("#" + rgbHex(json.red, json.green, json.blue));
|
|
484
|
+
$("#colorPickerNight").val($("#node-input-colorAtSwitchOnNightTime").val());
|
|
485
|
+
} else {
|
|
486
|
+
// It's already an HEX color
|
|
487
|
+
$("#colorPickerNight").val(this.colorAtSwitchOnNightTime);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
$("#comboTemperatureAtSwitchOn, #comboBrightnessAtSwitchOn").on("change", function () {
|
|
491
|
+
$("#node-input-colorAtSwitchOnDayTime").val('{ "kelvin":' + $("#comboTemperatureAtSwitchOn").val() + ', "brightness":' + $("#comboBrightnessAtSwitchOn").val() + ' }');
|
|
492
|
+
});
|
|
493
|
+
$("#comboTemperatureAtSwitchOnNightTime, #comboBrightnessAtSwitchOnNightTime").on("change", function () {
|
|
494
|
+
$("#node-input-colorAtSwitchOnNightTime").val('{ "kelvin":' + $("#comboTemperatureAtSwitchOnNightTime").val() + ', "brightness":' + $("#comboBrightnessAtSwitchOnNightTime").val() + ' }');
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
// Create and put the JSON to node-input-colorAtSwitchOnDayTime
|
|
498
|
+
$("#colorPickerDay").on("change", function () {
|
|
499
|
+
$("#node-input-colorAtSwitchOnDayTime").val(this.value);
|
|
500
|
+
});
|
|
501
|
+
$("#colorPickerNight").on("change", function () {
|
|
502
|
+
$("#node-input-colorAtSwitchOnNightTime").val(this.value);
|
|
503
|
+
});
|
|
504
|
+
|
|
505
|
+
|
|
539
506
|
$("#node-input-minDimLevelLight").val(this.minDimLevelLight);
|
|
540
507
|
for (let index = 100; index >= 10; index--) {
|
|
541
508
|
$("#node-input-maxDimLevelLight").append(
|
|
@@ -546,13 +513,12 @@
|
|
|
546
513
|
}
|
|
547
514
|
$("#node-input-maxDimLevelLight").val(this.maxDimLevelLight);
|
|
548
515
|
|
|
549
|
-
if (this.hueDevice !== "") $("#tabs").show();
|
|
550
|
-
|
|
516
|
+
if (this.hueDevice !== "") $("#tabs").show(); // Light options
|
|
551
517
|
|
|
552
518
|
},
|
|
553
519
|
oneditsave: function () {
|
|
554
|
-
RED.sidebar.removeTab("tabNRColor");
|
|
555
|
-
RED.sidebar.show("help");
|
|
520
|
+
//RED.sidebar.removeTab("tabNRColor");
|
|
521
|
+
//RED.sidebar.show("help");
|
|
556
522
|
if ($("#node-input-enableNodePINS").val() === "yes") {
|
|
557
523
|
this.outputs = 1;
|
|
558
524
|
this.inputs = 1;
|
|
@@ -562,12 +528,81 @@
|
|
|
562
528
|
}
|
|
563
529
|
},
|
|
564
530
|
oneditcancel: function () {
|
|
565
|
-
RED.sidebar.removeTab("tabNRColor");
|
|
566
|
-
RED.sidebar.show("help");
|
|
531
|
+
//RED.sidebar.removeTab("tabNRColor");
|
|
532
|
+
//RED.sidebar.show("help");
|
|
567
533
|
}
|
|
568
534
|
});
|
|
569
535
|
|
|
536
|
+
function rgbHex(red, green, blue, alpha) {
|
|
537
|
+
const toHex = (red, green, blue, alpha) => ((blue | green << 8 | red << 16) | 1 << 24).toString(16).slice(1) + alpha;
|
|
538
|
+
const parseCssRgbString = (input) => {
|
|
539
|
+
const parts = input.replace(/rgba?\(([^)]+)\)/, '$1').split(/[,\s/]+/).filter(Boolean);
|
|
540
|
+
if (parts.length < 3) {
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
const parseValue = (value, max) => {
|
|
545
|
+
value = value.trim();
|
|
546
|
+
|
|
547
|
+
if (value.endsWith('%')) {
|
|
548
|
+
return Math.min(Number.parseFloat(value) * max / 100, max);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
return Math.min(Number.parseFloat(value), max);
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
const red = parseValue(parts[0], 255);
|
|
555
|
+
const green = parseValue(parts[1], 255);
|
|
556
|
+
const blue = parseValue(parts[2], 255);
|
|
557
|
+
let alpha;
|
|
558
|
+
|
|
559
|
+
if (parts.length === 4) {
|
|
560
|
+
alpha = parseValue(parts[3], 1);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
return [red, green, blue, alpha];
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
let isPercent = (red + (alpha || '')).toString().includes('%');
|
|
567
|
+
|
|
568
|
+
if (typeof red === 'string' && !green) { // Single string parameter.
|
|
569
|
+
const parsed = parseCssRgbString(red);
|
|
570
|
+
if (!parsed) {
|
|
571
|
+
throw new TypeError('Invalid or unsupported color format.');
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
isPercent = false;
|
|
575
|
+
[red, green, blue, alpha] = parsed;
|
|
576
|
+
} else if (alpha !== undefined) {
|
|
577
|
+
alpha = Number.parseFloat(alpha);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
if (typeof red !== 'number'
|
|
581
|
+
|| typeof green !== 'number'
|
|
582
|
+
|| typeof blue !== 'number'
|
|
583
|
+
|| red > 255
|
|
584
|
+
|| green > 255
|
|
585
|
+
|| blue > 255
|
|
586
|
+
) {
|
|
587
|
+
throw new TypeError('Expected three numbers below 256');
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
if (typeof alpha === 'number') {
|
|
591
|
+
if (!isPercent && alpha >= 0 && alpha <= 1) {
|
|
592
|
+
alpha = Math.round(255 * alpha);
|
|
593
|
+
} else if (isPercent && alpha >= 0 && alpha <= 100) {
|
|
594
|
+
alpha = Math.round(255 * alpha / 100);
|
|
595
|
+
} else {
|
|
596
|
+
throw new TypeError(`Expected alpha value (${alpha}) as a fraction or percentage`);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
alpha = (alpha | 1 << 8).toString(16).slice(1); // eslint-disable-line no-mixed-operators
|
|
600
|
+
} else {
|
|
601
|
+
alpha = '';
|
|
602
|
+
}
|
|
570
603
|
|
|
604
|
+
return toHex(red, green, blue, alpha);
|
|
605
|
+
}
|
|
571
606
|
|
|
572
607
|
|
|
573
608
|
</script>
|
|
@@ -575,365 +610,418 @@
|
|
|
575
610
|
|
|
576
611
|
<script type="text/html" data-template-name="knxUltimateHueLight">
|
|
577
612
|
|
|
613
|
+
<div class="form-row">
|
|
614
|
+
<b>HUE Light/Group node</b>  <span style="color:red"    <i class="fa fa-youtube"></i></span> <a
|
|
615
|
+
target="_blank" href="https://youtu.be/jjEUI1J8bkA"><u>Youtube sample</u></a>
|
|
616
|
+
<br />
|
|
617
|
+
<br />
|
|
618
|
+
<p align="center">
|
|
619
|
+
<i class="fa-regular fa-lightbulb fa-bounce fa-8x"></i>
|
|
620
|
+
</p>
|
|
621
|
+
<br />
|
|
622
|
+
<label for="node-input-server">
|
|
623
|
+
<img
|
|
624
|
+
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>
|
|
625
|
+
KNX GW
|
|
626
|
+
</label>
|
|
627
|
+
<input type="text" id="node-input-server" />
|
|
628
|
+
</div>
|
|
578
629
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
</p>
|
|
588
|
-
<br />
|
|
589
|
-
<label for="node-input-server" >
|
|
590
|
-
<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>
|
|
591
|
-
KNX GW
|
|
592
|
-
</label>
|
|
593
|
-
<input type="text" id="node-input-server" />
|
|
594
|
-
</div>
|
|
630
|
+
<div class="form-row">
|
|
631
|
+
<label for="node-input-serverHue">
|
|
632
|
+
<img
|
|
633
|
+
src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABFUlEQVQ4EZWSsWoCQRCG1yiENEFEi6QSkjqWWoqFoBYJ+Br6JHkMn8Iibd4ihQpaJIhWNkry/ZtdGZY78Qa+m39nZ+dm9s4550awglNBluS/gVtAX6KgDclf68w2OThgfR9iT/jnoEv4TtByDThWTCDKW4SSZTf/zj9/eZbN+izTDuKGimu0vPF8B/YN8aC8LmcOj/AAn9CFTEs70Js/oGqy79C69bqJ5XbQI2kGO5N8QL9D08S8zBtBF5ZaVsznpCMoqJnVdjTpb1Db0fwIWmQV6BLXzFOYgA6/gDVfQN9bBWp2J2hdWDPoBV5FrKnAJutHikk/CHHR8i7x4iG7qQ720IYvu3GFbpHjx3pFrOFYkA354z/5bkK826phyAAAAABJRU5ErkJggg==" />
|
|
634
|
+
HUE Bridge
|
|
635
|
+
</label>
|
|
636
|
+
<input type="text" id="node-input-serverHue" />
|
|
637
|
+
</div>
|
|
595
638
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
639
|
+
<br />
|
|
640
|
+
<p>
|
|
641
|
+
<b>Philips HUE</b>
|
|
642
|
+
</p>
|
|
643
|
+
|
|
644
|
+
<div class="form-row">
|
|
645
|
+
<label for="node-input-hueDevice">
|
|
646
|
+
<i class="fa fa-play-circle"></i> Name</label>
|
|
647
|
+
<input type="text" id="node-input-name" placeholder="Enter your hue device name" />
|
|
648
|
+
<input type="hidden" id="node-input-hueDevice" />
|
|
649
|
+
</div>
|
|
650
|
+
|
|
651
|
+
<br />
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
<div id="tabs" style="width:680px" hidden>
|
|
655
|
+
<ul>
|
|
656
|
+
<li><a href="#tabs-1">Switching</a></li>
|
|
657
|
+
<li><a href="#tabs-2">Dim/Brightness</a></li>
|
|
658
|
+
<li><a href="#tabs-3">Tunable white</a></li>
|
|
659
|
+
<li><a href="#tabs-4">Colors</a></li>
|
|
660
|
+
<li><a href="#tabs-5">Effects</a></li>
|
|
661
|
+
<li><a href="#tabs-6">Behaviour</a></li>
|
|
662
|
+
</ul>
|
|
663
|
+
<div id="tabs-1">
|
|
664
|
+
<p>
|
|
665
|
+
<div class="form-row">
|
|
666
|
+
<label for="node-input-nameLightSwitch" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
667
|
+
|
|
668
|
+
<label for="node-input-GALightSwitch" style="width:20px;"><span
|
|
669
|
+
data-i18n="knxUltimateHueLight.node-input-GALightSwitch"></span></label>
|
|
670
|
+
<input type="text" id="node-input-GALightSwitch" placeholder="Ex: 1/1/1"
|
|
671
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
672
|
+
|
|
673
|
+
<label for="node-input-dptLightSwitch" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
674
|
+
<select id="node-input-dptLightSwitch" style="width:140px;"></select>
|
|
675
|
+
|
|
676
|
+
<label for="node-input-nameLightSwitch" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
677
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
678
|
+
<input type="text" id="node-input-nameLightSwitch" style="width:190px;margin-left: 5px; text-align: left;">
|
|
679
|
+
</div>
|
|
680
|
+
<div class="form-row">
|
|
681
|
+
<label for="node-input-nameLightState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
682
|
+
|
|
683
|
+
<label for="node-input-GALightState" style="width:20px;">GA</label>
|
|
684
|
+
<input type="text" id="node-input-GALightState" placeholder="Ex: 1/1/1"
|
|
685
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
686
|
+
|
|
687
|
+
<label for="node-input-dptLightState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
688
|
+
<select id="node-input-dptLightState" style="width:140px;"></select>
|
|
689
|
+
|
|
690
|
+
<label for="node-input-nameLightState" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
691
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
692
|
+
<input type="text" id="node-input-nameLightState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
693
|
+
</div>
|
|
694
|
+
</p>
|
|
602
695
|
</div>
|
|
696
|
+
<div id="tabs-2">
|
|
697
|
+
<p>
|
|
698
|
+
<div class="form-row">
|
|
699
|
+
<label for="node-input-nameLightDIM" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
700
|
+
|
|
701
|
+
<label for="node-input-GALightDIM" style="width:20px;"><span
|
|
702
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
703
|
+
<input type="text" id="node-input-GALightDIM" placeholder="Ex: 1/1/1"
|
|
704
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
705
|
+
|
|
706
|
+
<label for="node-input-dptLightDIM" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
707
|
+
<select id="node-input-dptLightDIM" style="width:140px;"></select>
|
|
708
|
+
|
|
709
|
+
<label for="node-input-nameLightDIM" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
710
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
711
|
+
<input type="text" id="node-input-nameLightDIM" style="width:190px;margin-left: 5px; text-align: left;">
|
|
712
|
+
</div>
|
|
713
|
+
<div class="form-row">
|
|
714
|
+
<label for="node-input-nameLightBrightness" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control
|
|
715
|
+
%</label>
|
|
603
716
|
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
717
|
+
<label for="node-input-GALightBrightness" style="width:20px;"><span
|
|
718
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
719
|
+
<input type="text" id="node-input-GALightBrightness" placeholder="Ex: 1/1/1"
|
|
720
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
721
|
+
|
|
722
|
+
<label for="node-input-dptLightBrightness" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
723
|
+
<select id="node-input-dptLightBrightness" style="width:140px;"></select>
|
|
724
|
+
|
|
725
|
+
<label for="node-input-nameLightBrightness" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
726
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
727
|
+
<input type="text" id="node-input-nameLightBrightness" style="width:190px;margin-left: 5px; text-align: left;">
|
|
728
|
+
</div>
|
|
729
|
+
|
|
730
|
+
<div class="form-row">
|
|
731
|
+
<label for="node-input-nameLightBrightnessState" style="width:110px;"><i class="fa fa-play-circle-o"></i>
|
|
732
|
+
Status</label>
|
|
733
|
+
|
|
734
|
+
<label for="node-input-GALightBrightnessState" style="width:20px;"><span
|
|
735
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
736
|
+
<input type="text" id="node-input-GALightBrightnessState" placeholder="Ex: 1/1/1"
|
|
737
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
608
738
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
<
|
|
739
|
+
<label for="node-input-dptLightBrightnessState"
|
|
740
|
+
style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
741
|
+
<select id="node-input-dptLightBrightnessState" style="width:140px;"></select>
|
|
742
|
+
|
|
743
|
+
<label for="node-input-nameLightBrightnessState" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
744
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
745
|
+
<input type="text" id="node-input-nameLightBrightnessState"
|
|
746
|
+
style="width:190px;margin-left: 5px; text-align: left;">
|
|
747
|
+
</div>
|
|
748
|
+
</p>
|
|
614
749
|
</div>
|
|
750
|
+
<div id="tabs-3">
|
|
751
|
+
<p>
|
|
752
|
+
<div class="form-row">
|
|
753
|
+
<label for="node-input-nameLightHSV" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control dim</label>
|
|
615
754
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
<div id="tabs" style="width:680px" hidden>
|
|
620
|
-
<ul>
|
|
621
|
-
<li><a href="#tabs-1">Switching</a></li>
|
|
622
|
-
<li><a href="#tabs-2">Dim/Brightness</a></li>
|
|
623
|
-
<li><a href="#tabs-3">Tunable white</a></li>
|
|
624
|
-
<li><a href="#tabs-4">Colors</a></li>
|
|
625
|
-
<li><a href="#tabs-5">Effects</a></li>
|
|
626
|
-
<li><a href="#tabs-6">Behaviour</a></li>
|
|
627
|
-
</ul>
|
|
628
|
-
<div id="tabs-1">
|
|
629
|
-
<p>
|
|
630
|
-
<div class="form-row">
|
|
631
|
-
<label for="node-input-nameLightSwitch" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
632
|
-
|
|
633
|
-
<label for="node-input-GALightSwitch" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightSwitch"></span></label>
|
|
634
|
-
<input type="text" id="node-input-GALightSwitch" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
635
|
-
|
|
636
|
-
<label for="node-input-dptLightSwitch" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
637
|
-
<select id="node-input-dptLightSwitch" style="width:140px;"></select>
|
|
638
|
-
|
|
639
|
-
<label for="node-input-nameLightSwitch" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
640
|
-
<input type="text" id="node-input-nameLightSwitch" style="width:190px;margin-left: 5px; text-align: left;">
|
|
641
|
-
</div>
|
|
642
|
-
<div class="form-row">
|
|
643
|
-
<label for="node-input-nameLightState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
644
|
-
|
|
645
|
-
<label for="node-input-GALightState" style="width:20px;">GA</label>
|
|
646
|
-
<input type="text" id="node-input-GALightState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
647
|
-
|
|
648
|
-
<label for="node-input-dptLightState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
649
|
-
<select id="node-input-dptLightState" style="width:140px;"></select>
|
|
650
|
-
|
|
651
|
-
<label for="node-input-nameLightState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
652
|
-
<input type="text" id="node-input-nameLightState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
653
|
-
</div>
|
|
654
|
-
</p>
|
|
655
|
-
</div>
|
|
656
|
-
<div id="tabs-2">
|
|
657
|
-
<p>
|
|
658
|
-
<div class="form-row">
|
|
659
|
-
<label for="node-input-nameLightDIM" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
755
|
+
<label for="node-input-GALightHSV" style="width:20px;">GA</label>
|
|
756
|
+
<input type="text" id="node-input-GALightHSV" placeholder="Ex: 1/1/1"
|
|
757
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
660
758
|
|
|
661
|
-
|
|
662
|
-
|
|
759
|
+
<label for="node-input-dptLightHSV" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
760
|
+
<select id="node-input-dptLightHSV" style="width:140px;"></select>
|
|
663
761
|
|
|
664
|
-
|
|
665
|
-
|
|
762
|
+
<label for="node-input-nameLightHSV" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
763
|
+
<input type="text" id="node-input-nameLightHSV" style="width:190px;margin-left: 5px; text-align: left;">
|
|
764
|
+
</div>
|
|
765
|
+
<div class="form-row">
|
|
766
|
+
<label for="node-input-nameLightHSVPercentage" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control
|
|
767
|
+
%</label>
|
|
666
768
|
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
<div class="form-row">
|
|
671
|
-
<label for="node-input-nameLightBrightness" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control %</label>
|
|
769
|
+
<label for="node-input-GALightHSVPercentage" style="width:20px;">GA</label>
|
|
770
|
+
<input type="text" id="node-input-GALightHSVPercentage" placeholder="Ex: 1/1/1"
|
|
771
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
672
772
|
|
|
673
|
-
|
|
674
|
-
|
|
773
|
+
<label for="node-input-dptLightHSVPercentage" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
774
|
+
<select id="node-input-dptLightHSVPercentage" style="width:140px;"></select>
|
|
675
775
|
|
|
676
|
-
|
|
677
|
-
|
|
776
|
+
<label for="node-input-nameLightHSVPercentage"
|
|
777
|
+
style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
778
|
+
<input type="text" id="node-input-nameLightHSVPercentage" style="width:190px;margin-left: 5px; text-align: left;">
|
|
779
|
+
</div>
|
|
780
|
+
<div class="form-row">
|
|
781
|
+
<label for="node-input-nameLightKelvin" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control
|
|
782
|
+
Kelvin</label>
|
|
678
783
|
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
784
|
+
<label for="node-input-GALightKelvin" style="width:20px;">GA</label>
|
|
785
|
+
<input type="text" id="node-input-GALightKelvin" placeholder="Ex: 1/1/1"
|
|
786
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
682
787
|
|
|
683
|
-
|
|
684
|
-
|
|
788
|
+
<label for="node-input-dptLightKelvin" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
789
|
+
<select id="node-input-dptLightKelvin" style="width:140px;"></select>
|
|
685
790
|
|
|
686
|
-
|
|
687
|
-
|
|
791
|
+
<label for="node-input-nameLightKelvin" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
792
|
+
<input type="text" id="node-input-nameLightKelvin" style="width:190px;margin-left: 5px; text-align: left;">
|
|
793
|
+
</div>
|
|
794
|
+
<div class="form-row">
|
|
795
|
+
<label for="node-input-nameLightHSVState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status
|
|
796
|
+
%</label>
|
|
688
797
|
|
|
689
|
-
|
|
690
|
-
|
|
798
|
+
<label for="node-input-GALightHSVState" style="width:20px;"><span
|
|
799
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
800
|
+
<input type="text" id="node-input-GALightHSVState" placeholder="Ex: 1/1/1"
|
|
801
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
691
802
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
</div>
|
|
695
|
-
</p>
|
|
696
|
-
</div>
|
|
697
|
-
<div id="tabs-3">
|
|
698
|
-
<p>
|
|
699
|
-
<div class="form-row">
|
|
700
|
-
<label for="node-input-nameLightHSV" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control dim</label>
|
|
701
|
-
|
|
702
|
-
<label for="node-input-GALightHSV" style="width:20px;">GA</label>
|
|
703
|
-
<input type="text" id="node-input-GALightHSV" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
704
|
-
|
|
705
|
-
<label for="node-input-dptLightHSV" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
706
|
-
<select id="node-input-dptLightHSV" style="width:140px;"></select>
|
|
707
|
-
|
|
708
|
-
<label for="node-input-nameLightHSV" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
709
|
-
<input type="text" id="node-input-nameLightHSV" style="width:190px;margin-left: 5px; text-align: left;">
|
|
710
|
-
</div>
|
|
711
|
-
<div class="form-row">
|
|
712
|
-
<label for="node-input-nameLightHSVPercentage" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control %</label>
|
|
713
|
-
|
|
714
|
-
<label for="node-input-GALightHSVPercentage" style="width:20px;">GA</label>
|
|
715
|
-
<input type="text" id="node-input-GALightHSVPercentage" placeholder="Ex: 1/1/1"
|
|
716
|
-
style="width:70px;margin-left: 5px; text-align: left;">
|
|
717
|
-
|
|
718
|
-
<label for="node-input-dptLightHSVPercentage" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
719
|
-
<select id="node-input-dptLightHSVPercentage" style="width:140px;"></select>
|
|
720
|
-
|
|
721
|
-
<label for="node-input-nameLightHSVPercentage" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
722
|
-
<input type="text" id="node-input-nameLightHSVPercentage" style="width:190px;margin-left: 5px; text-align: left;">
|
|
723
|
-
</div>
|
|
724
|
-
<div class="form-row">
|
|
725
|
-
<label for="node-input-nameLightKelvin" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control Kelvin</label>
|
|
726
|
-
|
|
727
|
-
<label for="node-input-GALightKelvin" style="width:20px;">GA</label>
|
|
728
|
-
<input type="text" id="node-input-GALightKelvin" placeholder="Ex: 1/1/1"
|
|
729
|
-
style="width:70px;margin-left: 5px; text-align: left;">
|
|
730
|
-
|
|
731
|
-
<label for="node-input-dptLightKelvin" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
732
|
-
<select id="node-input-dptLightKelvin" style="width:140px;"></select>
|
|
733
|
-
|
|
734
|
-
<label for="node-input-nameLightKelvin" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
735
|
-
<input type="text" id="node-input-nameLightKelvin" style="width:190px;margin-left: 5px; text-align: left;">
|
|
736
|
-
</div>
|
|
737
|
-
<div class="form-row">
|
|
738
|
-
<label for="node-input-nameLightHSVState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status %</label>
|
|
739
|
-
|
|
740
|
-
<label for="node-input-GALightHSVState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
741
|
-
<input type="text" id="node-input-GALightHSVState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
742
|
-
|
|
743
|
-
<label for="node-input-dptLightHSVState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
744
|
-
<select id="node-input-dptLightHSVState" style="width:140px;"></select>
|
|
745
|
-
|
|
746
|
-
<label for="node-input-nameLightHSVState" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
747
|
-
<input type="text" id="node-input-nameLightHSVState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
748
|
-
</div>
|
|
749
|
-
<div class="form-row">
|
|
750
|
-
<label for="node-input-nameLightKelvinState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status Kelvin</label>
|
|
751
|
-
|
|
752
|
-
<label for="node-input-GALightKelvinState" style="width:20px;">GA</label>
|
|
753
|
-
<input type="text" id="node-input-GALightKelvinState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
754
|
-
|
|
755
|
-
<label for="node-input-dptLightKelvinState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
756
|
-
<select id="node-input-dptLightKelvinState" style="width:140px;"></select>
|
|
757
|
-
|
|
758
|
-
<label for="node-input-nameLightKelvinState" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
759
|
-
<input type="text" id="node-input-nameLightKelvinState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
760
|
-
</div>
|
|
761
|
-
</p>
|
|
762
|
-
</div>
|
|
763
|
-
<div id="tabs-4">
|
|
764
|
-
<p>
|
|
765
|
-
<div class="form-row">
|
|
766
|
-
<label for="node-input-nameLightColor" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
803
|
+
<label for="node-input-dptLightHSVState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
804
|
+
<select id="node-input-dptLightHSVState" style="width:140px;"></select>
|
|
767
805
|
|
|
768
|
-
|
|
769
|
-
|
|
806
|
+
<label for="node-input-nameLightHSVState" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
807
|
+
<input type="text" id="node-input-nameLightHSVState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
808
|
+
</div>
|
|
809
|
+
<div class="form-row">
|
|
810
|
+
<label for="node-input-nameLightKelvinState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status
|
|
811
|
+
Kelvin</label>
|
|
770
812
|
|
|
771
|
-
|
|
772
|
-
|
|
813
|
+
<label for="node-input-GALightKelvinState" style="width:20px;">GA</label>
|
|
814
|
+
<input type="text" id="node-input-GALightKelvinState" placeholder="Ex: 1/1/1"
|
|
815
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
773
816
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
</div>
|
|
777
|
-
<div class="form-row">
|
|
778
|
-
<label for="node-input-nameLightColorState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
817
|
+
<label for="node-input-dptLightKelvinState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
818
|
+
<select id="node-input-dptLightKelvinState" style="width:140px;"></select>
|
|
779
819
|
|
|
780
|
-
|
|
781
|
-
|
|
820
|
+
<label for="node-input-nameLightKelvinState" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
821
|
+
<input type="text" id="node-input-nameLightKelvinState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
822
|
+
</div>
|
|
823
|
+
</p>
|
|
824
|
+
</div>
|
|
825
|
+
<div id="tabs-4">
|
|
826
|
+
<p>
|
|
827
|
+
<div class="form-row">
|
|
828
|
+
<label for="node-input-nameLightColor" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
829
|
+
|
|
830
|
+
<label for="node-input-GALightColor" style="width:20px;"><span
|
|
831
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
832
|
+
<input type="text" id="node-input-GALightColor" placeholder="Ex: 1/1/1"
|
|
833
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
834
|
+
|
|
835
|
+
<label for="node-input-dptLightColor" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
836
|
+
<select id="node-input-dptLightColor" style="width:140px;"></select>
|
|
837
|
+
|
|
838
|
+
<label for="node-input-nameLightColor" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
839
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
840
|
+
<input type="text" id="node-input-nameLightColor" style="width:190px;margin-left: 5px; text-align: left;">
|
|
841
|
+
</div>
|
|
842
|
+
<div class="form-row">
|
|
843
|
+
<label for="node-input-nameLightColorState" style="width:110px;"><i class="fa fa-play-circle-o"></i>
|
|
844
|
+
Status</label>
|
|
782
845
|
|
|
783
|
-
|
|
784
|
-
|
|
846
|
+
<label for="node-input-GALightColorState" style="width:20px;"><span
|
|
847
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
848
|
+
<input type="text" id="node-input-GALightColorState" placeholder="Ex: 1/1/1"
|
|
849
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
785
850
|
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
</div>
|
|
789
|
-
</p>
|
|
790
|
-
</div>
|
|
791
|
-
<div id="tabs-5">
|
|
792
|
-
<p>
|
|
793
|
-
<div class="form-row">
|
|
794
|
-
<label for="node-input-nameLightBlink" style="width:110px;"><i class="fa fa-play-circle-o"></i> Blink</label>
|
|
851
|
+
<label for="node-input-dptLightColorState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
852
|
+
<select id="node-input-dptLightColorState" style="width:140px;"></select>
|
|
795
853
|
|
|
796
|
-
|
|
797
|
-
|
|
854
|
+
<label for="node-input-nameLightColorState" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
855
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
856
|
+
<input type="text" id="node-input-nameLightColorState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
857
|
+
</div>
|
|
858
|
+
</p>
|
|
859
|
+
</div>
|
|
860
|
+
<div id="tabs-5">
|
|
861
|
+
<p>
|
|
862
|
+
<div class="form-row">
|
|
863
|
+
<label for="node-input-nameLightBlink" style="width:110px;"><i class="fa fa-play-circle-o"></i> Blink</label>
|
|
864
|
+
|
|
865
|
+
<label for="node-input-GALightBlink" style="width:20px;"><span
|
|
866
|
+
data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
867
|
+
<input type="text" id="node-input-GALightBlink" placeholder="Ex: 1/1/1"
|
|
868
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
869
|
+
|
|
870
|
+
<label for="node-input-dptLightBlink" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
871
|
+
<select id="node-input-dptLightBlink" style="width:140px;"></select>
|
|
872
|
+
|
|
873
|
+
<label for="node-input-nameLightBlink" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
874
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
875
|
+
<input type="text" id="node-input-nameLightBlink" style="width:190px;margin-left: 5px; text-align: left;">
|
|
876
|
+
</div>
|
|
798
877
|
|
|
799
|
-
|
|
800
|
-
|
|
878
|
+
<div id="divColorCycle">
|
|
879
|
+
<div class="form-row">
|
|
880
|
+
<label for="node-input-nameLightColorCycle" style="width:110px;"><i class="fa fa-play-circle-o"></i> Color
|
|
881
|
+
Cycle</label>
|
|
801
882
|
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
883
|
+
<label for="node-input-GALightColorCycle" style="width:20px;">GA</label>
|
|
884
|
+
<input type="text" id="node-input-GALightColorCycle" placeholder="Ex: 1/1/1"
|
|
885
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
805
886
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
<label for="node-input-nameLightColorCycle" style="width:110px;"><i class="fa fa-play-circle-o"></i> Color Cycle</label>
|
|
887
|
+
<label for="node-input-dptLightColorCycle" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
888
|
+
<select id="node-input-dptLightColorCycle" style="width:140px;"></select>
|
|
809
889
|
|
|
810
|
-
|
|
811
|
-
|
|
890
|
+
<label for="node-input-nameLightColorCycle" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
891
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
892
|
+
<input type="text" id="node-input-nameLightColorCycle" style="width:190px;margin-left: 5px; text-align: left;">
|
|
893
|
+
</div>
|
|
894
|
+
</div>
|
|
895
|
+
</p>
|
|
896
|
+
</div>
|
|
897
|
+
<div id="tabs-6">
|
|
898
|
+
<p>
|
|
899
|
+
<div class="form-row">
|
|
900
|
+
<label style="width:260px;" for="node-input-readStatusAtStartup"><i class="fa fa-play-circle"></i> Read status at
|
|
901
|
+
startup</label>
|
|
902
|
+
<select id="node-input-readStatusAtStartup">
|
|
903
|
+
<option value="no">No</option>
|
|
904
|
+
<option value="yes">Yes, and emit KNX telegrams.</option>
|
|
905
|
+
</select>
|
|
906
|
+
</div>
|
|
907
|
+
<div class="form-row">
|
|
908
|
+
<label style="width:260px;" for="node-input-updateKNXBrightnessStatusOnHUEOnOff">
|
|
909
|
+
<i class="fa fa-tag"></i> KNX Brightness Status
|
|
910
|
+
</label>
|
|
911
|
+
<select id="node-input-updateKNXBrightnessStatusOnHUEOnOff">
|
|
912
|
+
<option value="onhueoff">When HUE light is Off, send 0% (Default KNX behaviour)</option>
|
|
913
|
+
<option value="no">Leave as is (default HUE behaviour)</option>
|
|
914
|
+
</select>
|
|
915
|
+
</div>
|
|
916
|
+
<div class="form-row">
|
|
917
|
+
<label for="node-input-specifySwitchOnBrightness" style="width:260px;">
|
|
918
|
+
<i class="fa fa-tag"></i> Switch on behaviour
|
|
919
|
+
</label>
|
|
920
|
+
<select id="node-input-specifySwitchOnBrightness">
|
|
921
|
+
<option value="temperature">Select temperature and brightness</option>
|
|
922
|
+
<option value="yes">Select color</option>
|
|
923
|
+
<option value="no">Last status</option>
|
|
924
|
+
</select>
|
|
925
|
+
</div>
|
|
812
926
|
|
|
813
|
-
|
|
814
|
-
|
|
927
|
+
<div class="form-row" id="divColorsAtSwitchOn">
|
|
928
|
+
<label for="node-input-colorAtSwitchOnDayTime" style="width:260px">
|
|
929
|
+
</label>
|
|
930
|
+
<input type="hidden" id="node-input-colorAtSwitchOnDayTime">
|
|
931
|
+
<input type="color" id="colorPickerDay" style="width:260px">
|
|
932
|
+
<button id="getColorAtSwitchOnDayTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
933
|
+
</div>
|
|
934
|
+
<div class="form-row" id="divTemperatureAtSwitchOn" hidden>
|
|
935
|
+
<label for="node-input-colorAtSwitchOnDayTime" style="width:260px">
|
|
936
|
+
</label>
|
|
937
|
+
<select style="width:180px;" id="comboTemperatureAtSwitchOn"></select>
|
|
938
|
+
<select style="width:180px;" id="comboBrightnessAtSwitchOn"></select>
|
|
939
|
+
</div>
|
|
815
940
|
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
941
|
+
<div id="divCCSBoxAtNightLighting">
|
|
942
|
+
<div class="form-row">
|
|
943
|
+
<label for="node-input-enableDayNightLighting" style="width:260px;">
|
|
944
|
+
<i class="fa fa-clone"></i> Night Lighting
|
|
945
|
+
</label>
|
|
946
|
+
<select id="node-input-enableDayNightLighting">
|
|
947
|
+
<option value="temperature">Select temperature and brightness</option>
|
|
948
|
+
<option value="yes">Select color</option>
|
|
949
|
+
<option value="no">Last status</option>
|
|
950
|
+
</select>
|
|
821
951
|
</div>
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
952
|
+
|
|
953
|
+
<div id="divEnableDayNightLighting">
|
|
954
|
+
|
|
955
|
+
<div class="form-row" id="divColorsAtSwitchOnNightTime">
|
|
956
|
+
<label for="node-input-colorAtSwitchOnNightTime" style="width:260px"></label>
|
|
957
|
+
<input type="hidden" id="node-input-colorAtSwitchOnNightTime">
|
|
958
|
+
<input type="color" id="colorPickerNight" style="width:260px">
|
|
959
|
+
<button id="getColorAtSwitchOnNightTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
960
|
+
</div>
|
|
961
|
+
<div class="form-row" id="divTemperatureAtSwitchOnNightTime" hidden>
|
|
962
|
+
<label for="node-input-colorAtSwitchOnNightTime" style="width:260px"></label>
|
|
963
|
+
<select style="width:25%;" id="comboTemperatureAtSwitchOnNightTime"></select>
|
|
964
|
+
<select style="width:25%;" id="comboBrightnessAtSwitchOnNightTime"></select>
|
|
965
|
+
</div>
|
|
966
|
+
|
|
967
|
+
<div class="form-row">
|
|
968
|
+
<label for="node-input-nameDaylightSensor" style="width:110px;"><i class="fa fa-clock-o"></i>
|
|
969
|
+
Day/Night</label>
|
|
970
|
+
<label for="node-input-GADaylightSensor" style="width:20px;">GA</label>
|
|
971
|
+
<input type="text" id="node-input-GADaylightSensor" placeholder="Ex: 1/1/1"
|
|
972
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
973
|
+
|
|
974
|
+
<label for="node-input-dptDaylightSensor" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
975
|
+
<select id="node-input-dptDaylightSensor" style="width:140px;"></select>
|
|
976
|
+
|
|
977
|
+
<label for="node-input-nameDaylightSensor" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
978
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
979
|
+
<input type="text" id="node-input-nameDaylightSensor" style="width:190px;margin-left: 5px; text-align: left;">
|
|
980
|
+
</div>
|
|
981
|
+
<div class="form-row">
|
|
982
|
+
<label style="width:170px" for="node-input-invertDayNight">
|
|
983
|
+
<i class="fa fa-shuffle"></i> Invert day/night values
|
|
984
|
+
</label>
|
|
985
|
+
<input type="checkbox" id="node-input-invertDayNight"
|
|
986
|
+
style="display:inline-block; width:auto; vertical-align:top;" />
|
|
830
987
|
</div>
|
|
831
|
-
<div class="form-row">
|
|
832
|
-
<label style="width:260px;" for="node-input-updateKNXBrightnessStatusOnHUEOnOff">
|
|
833
|
-
<i class="fa fa-tag"></i> KNX Brightness Status
|
|
834
|
-
</label>
|
|
835
|
-
<select id="node-input-updateKNXBrightnessStatusOnHUEOnOff">
|
|
836
|
-
<option value="onhueoff">When HUE light is Off, send 0% (Default KNX behaviour)</option>
|
|
837
|
-
<option value="no">Leave as is (default HUE behaviour)</option>
|
|
838
|
-
</select>
|
|
839
|
-
</div>
|
|
840
|
-
<div class="form-row">
|
|
841
|
-
<label for="node-input-specifySwitchOnBrightness" style="width:260px;">
|
|
842
|
-
<i class="fa fa-tag"></i> Specify switch on brightness
|
|
843
|
-
</label>
|
|
844
|
-
<select id="node-input-specifySwitchOnBrightness">
|
|
845
|
-
<option value="yes">Yes</option>
|
|
846
|
-
<option value="no">No</option>
|
|
847
|
-
</select>
|
|
848
|
-
</div>
|
|
849
|
-
|
|
850
|
-
<div class="form-row" id="divColorsAtSwitchOn">
|
|
851
|
-
<label for="node-input-colorAtSwitchOnDayTime" style="width:260px">
|
|
852
|
-
<i class="fa fa-sun-o"></i> Switch On - color/brightness
|
|
853
|
-
</label>
|
|
854
|
-
<input type="text" id="node-input-colorAtSwitchOnDayTime"
|
|
855
|
-
placeholder='For example, {"red":255, "green":255, "blue":255}' style="width:260px">
|
|
856
|
-
<button id="getColorAtSwitchOnDayTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
857
|
-
</div>
|
|
858
|
-
<div id="divCCSBoxayNightLighting">
|
|
859
|
-
<div class="form-row">
|
|
860
|
-
<label for="node-input-enableDayNightLighting" style="width:260px;">
|
|
861
|
-
<i class="fa fa-clone"></i> Night Lighting
|
|
862
|
-
</label>
|
|
863
|
-
<select id="node-input-enableDayNightLighting">
|
|
864
|
-
<option value="yes">Yes</option>
|
|
865
|
-
<option value="no">No</option>
|
|
866
|
-
</select>
|
|
867
|
-
</div>
|
|
868
|
-
<div id="divEnableDayNightLighting">
|
|
869
|
-
<div class="form-row">
|
|
870
|
-
<label for="node-input-colorAtSwitchOnNightTime" style="width:260px">
|
|
871
|
-
<i class="fa fa-moon-o"></i> Switch On color/brigh. at Night
|
|
872
|
-
</label>
|
|
873
|
-
<input type="text" id="node-input-colorAtSwitchOnNightTime"
|
|
874
|
-
placeholder='Example {"red":100, "green":0, "blue":50}' style="width:260px">
|
|
875
|
-
<button id="getColorAtSwitchOnNightTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
876
|
-
</div>
|
|
877
|
-
<div class="form-row">
|
|
878
|
-
<label for="node-input-nameDaylightSensor" style="width:110px;"><i class="fa fa-clock-o"></i>
|
|
879
|
-
Day/Night</label>
|
|
880
|
-
<label for="node-input-GADaylightSensor" style="width:20px;">GA</label>
|
|
881
|
-
<input type="text" id="node-input-GADaylightSensor" placeholder="Ex: 1/1/1"
|
|
882
|
-
style="width:70px;margin-left: 5px; text-align: left;">
|
|
883
|
-
|
|
884
|
-
<label for="node-input-dptDaylightSensor"
|
|
885
|
-
style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
886
|
-
<select id="node-input-dptDaylightSensor" style="width:140px;"></select>
|
|
887
|
-
|
|
888
|
-
<label for="node-input-nameDaylightSensor" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
889
|
-
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
890
|
-
<input type="text" id="node-input-nameDaylightSensor"
|
|
891
|
-
style="width:190px;margin-left: 5px; text-align: left;">
|
|
892
|
-
</div>
|
|
893
|
-
<div class="form-row">
|
|
894
|
-
<label style="width:170px" for="node-input-invertDayNight">
|
|
895
|
-
<i class="fa fa-shuffle"></i> Invert day/night values
|
|
896
|
-
</label>
|
|
897
|
-
<input type="checkbox" id="node-input-invertDayNight"
|
|
898
|
-
style="display:inline-block; width:auto; vertical-align:top;" />
|
|
899
|
-
</div>
|
|
900
|
-
</div>
|
|
901
|
-
</div>
|
|
902
|
-
<br />
|
|
903
|
-
<div class="form-row">
|
|
904
|
-
<label for="node-input-dimSpeed" style="width:260px">
|
|
905
|
-
<i class="fa fa-bolt"></i> Dim Speed (ms)
|
|
906
|
-
</label>
|
|
907
|
-
<input type="text" id="node-input-dimSpeed" placeholder='Default is 5000' style="width:260px">
|
|
908
|
-
</div>
|
|
909
|
-
<div class="form-row">
|
|
910
|
-
<label for="node-input-minDimLevelLight" style="width:260px;">
|
|
911
|
-
<i class="fa fa-clone"></i> Min Dim Brightness
|
|
912
|
-
</label>
|
|
913
|
-
<select id="node-input-minDimLevelLight">
|
|
914
|
-
<option value="useHueLightLevel">Use minimum brightness specified in the HUE light</option>
|
|
915
|
-
</select>
|
|
916
|
-
</div>
|
|
917
|
-
<div class="form-row">
|
|
918
|
-
<label for="node-input-maxDimLevelLight" style="width:260px;">
|
|
919
|
-
<i class="fa fa-clone"></i> Max Dim Brightness
|
|
920
|
-
</label>
|
|
921
|
-
<select id="node-input-maxDimLevelLight"></select>
|
|
922
|
-
</div>
|
|
923
|
-
<div class="form-row">
|
|
924
|
-
<label for="node-input-enableNodePINS" style="width:260px;">
|
|
925
|
-
<i class="fa fa-square-o"></i> Node Input/Output PINs
|
|
926
|
-
</label>
|
|
927
|
-
<select id="node-input-enableNodePINS">
|
|
928
|
-
<option value="no">Hide</option>
|
|
929
|
-
<option value="yes">Show node input/output PINs</option>
|
|
930
|
-
</select>
|
|
931
|
-
</div>
|
|
932
|
-
</p>
|
|
933
988
|
</div>
|
|
989
|
+
</div>
|
|
990
|
+
<br />
|
|
991
|
+
<div class="form-row">
|
|
992
|
+
<label for="node-input-dimSpeed" style="width:260px">
|
|
993
|
+
<i class="fa fa-bolt"></i> Dim Speed (ms)
|
|
994
|
+
</label>
|
|
995
|
+
<input type="text" id="node-input-dimSpeed" placeholder='Default is 5000' style="width:260px">
|
|
996
|
+
</div>
|
|
997
|
+
<div class="form-row">
|
|
998
|
+
<label for="node-input-minDimLevelLight" style="width:260px;">
|
|
999
|
+
<i class="fa fa-clone"></i> Min Dim Brightness
|
|
1000
|
+
</label>
|
|
1001
|
+
<select id="node-input-minDimLevelLight">
|
|
1002
|
+
<option value="useHueLightLevel">Use minimum brightness specified in the HUE light</option>
|
|
1003
|
+
</select>
|
|
1004
|
+
</div>
|
|
1005
|
+
<div class="form-row">
|
|
1006
|
+
<label for="node-input-maxDimLevelLight" style="width:260px;">
|
|
1007
|
+
<i class="fa fa-clone"></i> Max Dim Brightness
|
|
1008
|
+
</label>
|
|
1009
|
+
<select id="node-input-maxDimLevelLight"></select>
|
|
1010
|
+
</div>
|
|
1011
|
+
<div class="form-row">
|
|
1012
|
+
<label for="node-input-enableNodePINS" style="width:260px;">
|
|
1013
|
+
<i class="fa fa-square-o"></i> Node Input/Output PINs
|
|
1014
|
+
</label>
|
|
1015
|
+
<select id="node-input-enableNodePINS">
|
|
1016
|
+
<option value="no">Hide</option>
|
|
1017
|
+
<option value="yes">Show node input/output PINs</option>
|
|
1018
|
+
</select>
|
|
1019
|
+
</div>
|
|
1020
|
+
</p>
|
|
1021
|
+
</div>
|
|
934
1022
|
|
|
935
|
-
<br/>
|
|
936
|
-
</script>
|
|
1023
|
+
<br />
|
|
1024
|
+
</script>
|
|
937
1025
|
|
|
938
1026
|
<script type="text/markdown" data-help-name="knxUltimateHueLight">
|
|
939
1027
|
<p>This node lets you control your Philips HUE light and grouped lights and also gets the states of this lights, to be sent to the KNX bus.</p>
|
|
@@ -974,9 +1062,9 @@ Start typing in the GA field, the name or group address of your KNX device, the
|
|
|
974
1062
|
|--|--|
|
|
975
1063
|
| Control dim | Changes the HUE light's white temperature, using DPT 3.007 dimming. You can set the dimming speed in the **_Behaviour_** tab.|
|
|
976
1064
|
| Control % | Changes the HUE light's white temperature, using the DPT 5.001. A value of 0 is full warm, a value of 100 is full cold.|
|
|
977
|
-
| Control kelvin |
|
|
1065
|
+
| Control kelvin | **DPT 7.600:** set the HUE light's temperature in Kelvin degrees, using the KNX range from 0 to 65536. This range will be then transformed in mirek.<br/>**DPT 9.002:** set the temperature using Philips HUE range: 2000K - 6535K (Ambiance range starts at 2200K). Please be aware, conversion may produce slightly changes in Kelvin degrees value, due to KNX RGB or Kelvin degrees to HUE mirek degrees conversion.|
|
|
978
1066
|
| Status %| Link this to the light temperature status group address. Datapoint is 5.001 absolute value. 0 is full warm, 100 is full cold.|
|
|
979
|
-
| Status kelvin |
|
|
1067
|
+
| Status kelvin | **DPT 7.600:** get the HUE light's temperature in Kelvin degrees, using the KNX range from 0 to 65536. This range will be then transformed in kelvin degrees.<br/>**DPT 9.002:** get the temperature using Philips HUE range: 2000K - 6535K (Ambiance range starts at 2200K). Please be aware, conversion may produce slightly changes in Kelvin degrees value, due to KNX RGB or Kelvin degrees to HUE mirek degrees conversion. |
|
|
980
1068
|
|
|
981
1069
|
<br/>
|
|
982
1070
|
|
|
@@ -1000,11 +1088,9 @@ Start typing in the GA field, the name or group address of your KNX device, the
|
|
|
1000
1088
|
|
|
1001
1089
|
| Property | Description |
|
|
1002
1090
|
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1003
|
-
| KNX Brightness Status | Updates the KNX brightness group address whenever the HUE lamp is switched ON/OFF. The options are
|
|
1004
|
-
|
|
|
1005
|
-
| Switch On - color/brightness | You can choose the color/brightness of your light, at switch on. Set it as JSON object, for example **{ "red": 255, "green": 255, "blue": 255 }** |
|
|
1091
|
+
| KNX Brightness Status | Updates the KNX brightness group address status, whenever the HUE lamp is switched ON/OFF. The options are **When HUE light is Off, send 0% (Default KNX behaviour)** and **Leave as is (default HUE behaviour)** |
|
|
1092
|
+
| Switch on behaviour | It sets the behaviour of your lights when switched on. You can choose from differents behaviours.<br/>**Select color:** the light will be switched on with the color of your choice.<br/>**Select temperature and brightness:** the light will be switched on with the temperature (Kelvin) and brightness (0-100) of your choice.<br>**Last status:** the light will be switched on in the last status. |
|
|
1006
1093
|
| Night Lighting | It allows to set a particular light color/brightness at nighttime. If **checked**, a further set of option shows up and the light changes the behaviour based on these options, everytime you switch the light _on_. |
|
|
1007
|
-
| Switch On - color/brightness at Nighttime | You can choose the color/brightness of your light, at switch on, on night time. Set it as JSON object. Default value if you leave blank is **{ "red": 100, "green": 0, "blue": 0 }** |
|
|
1008
1094
|
| Day/Night | Select the group address used to set the day/night behaviour. The group address value is _true_ if daytime, _false_ if nighttime. |
|
|
1009
1095
|
| Invert day/night values | Invert the values of _Day/Night_ group address. Default value is **unchecked**. |
|
|
1010
1096
|
| Dim Speed (ms) | The dimming speed, in Milliseconds. This applies to the **light** and also to the **tunable white** dimming datapoints. It' calculated from 0% to 100%. |
|
|
@@ -1021,4 +1107,4 @@ The Dimming function works in **KNX mode `start` and `stop`**. To start dimming,
|
|
|
1021
1107
|
[Find it useful?](https://www.paypal.me/techtoday)
|
|
1022
1108
|
|
|
1023
1109
|
<br/>
|
|
1024
|
-
</script
|
|
1110
|
+
</script>-
|