node-red-contrib-knx-ultimate 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +12 -12
- package/CHANGELOG.md +13 -1
- package/nodes/hue-config.js +60 -71
- package/nodes/knxUltimate-config.js +6 -4
- package/nodes/knxUltimateHueBattery.js +69 -68
- package/nodes/knxUltimateHueLight.html +844 -835
- package/nodes/knxUltimateHueLight.js +147 -115
- package/nodes/knxUltimateHueLightSensor.js +53 -62
- package/nodes/knxUltimateHueMotion.html +3 -4
- package/nodes/knxUltimateHueMotion.js +73 -61
- package/nodes/knxUltimateHueScene.js +1 -1
- package/nodes/knxUltimateHueTemperatureSensor.js +70 -71
- package/nodes/knxUltimateViewer.html +28 -0
- package/nodes/utils/hueEngine.js +57 -42
- package/package.json +25 -4
|
@@ -1,109 +1,107 @@
|
|
|
1
1
|
<script type="text/javascript">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// ####################################
|
|
106
|
-
const content = `<html>
|
|
2
|
+
RED.nodes.registerType("knxUltimateHueLight", {
|
|
3
|
+
category: "KNX Ultimate",
|
|
4
|
+
color: "#C0C7E9",
|
|
5
|
+
defaults: {
|
|
6
|
+
//buttonState: {value: true},
|
|
7
|
+
server: { type: "knxUltimate-config", required: true },
|
|
8
|
+
serverHue: { type: "hue-config", required: true },
|
|
9
|
+
name: { value: "" },
|
|
10
|
+
|
|
11
|
+
nameLightSwitch: { value: "" },
|
|
12
|
+
GALightSwitch: { value: "" },
|
|
13
|
+
dptLightSwitch: { value: "" },
|
|
14
|
+
|
|
15
|
+
nameLightState: { value: "" },
|
|
16
|
+
GALightState: { value: "" },
|
|
17
|
+
dptLightState: { value: "" },
|
|
18
|
+
|
|
19
|
+
nameLightDIM: { value: "" },
|
|
20
|
+
GALightDIM: { value: "" },
|
|
21
|
+
dptLightDIM: { value: "" },
|
|
22
|
+
|
|
23
|
+
nameLightColor: { value: "" },
|
|
24
|
+
GALightColor: { value: "" },
|
|
25
|
+
dptLightColor: { value: "" },
|
|
26
|
+
|
|
27
|
+
nameLightColorState: { value: "" },
|
|
28
|
+
GALightColorState: { value: "" },
|
|
29
|
+
dptLightColorState: { value: "" },
|
|
30
|
+
|
|
31
|
+
nameLightHSV: { value: "" },
|
|
32
|
+
GALightHSV: { value: "" },
|
|
33
|
+
dptLightHSV: { value: "" },
|
|
34
|
+
|
|
35
|
+
nameLightHSVPercentage: { value: "" },
|
|
36
|
+
GALightHSVPercentage: { value: "" },
|
|
37
|
+
dptLightHSVPercentage: { value: "" },
|
|
38
|
+
|
|
39
|
+
nameLightHSVState: { value: "" },
|
|
40
|
+
GALightHSVState: { value: "" },
|
|
41
|
+
dptLightHSVState: { value: "" },
|
|
42
|
+
|
|
43
|
+
nameLightBrightness: { value: "" },
|
|
44
|
+
GALightBrightness: { value: "" },
|
|
45
|
+
dptLightBrightness: { value: "" },
|
|
46
|
+
|
|
47
|
+
nameLightBrightnessState: { value: "" },
|
|
48
|
+
GALightBrightnessState: { value: "" },
|
|
49
|
+
dptLightBrightnessState: { value: "" },
|
|
50
|
+
|
|
51
|
+
nameLightBlink: { value: "" },
|
|
52
|
+
GALightBlink: { value: "" },
|
|
53
|
+
dptLightBlink: { value: "" },
|
|
54
|
+
|
|
55
|
+
nameLightColorCycle: { value: "" },
|
|
56
|
+
GALightColorCycle: { value: "" },
|
|
57
|
+
dptLightColorCycle: { value: "" },
|
|
58
|
+
|
|
59
|
+
enableDayNightLighting: { value: "no" },
|
|
60
|
+
colorAtSwitchOnDayTime: { value: '{"red":255, "green":255, "blue":255}' },
|
|
61
|
+
colorAtSwitchOnNightTime: { value: '{"red":23, "green":4, "blue":0}' },
|
|
62
|
+
invertDayNight: { value: false },
|
|
63
|
+
|
|
64
|
+
nameDaylightSensor: { value: "" },
|
|
65
|
+
GADaylightSensor: { value: "" },
|
|
66
|
+
dptDaylightSensor: { value: "" },
|
|
67
|
+
|
|
68
|
+
specifySwitchOnBrightness: { value: "yes" },
|
|
69
|
+
updateKNXBrightnessStatusOnHUEOnOff: { value: "no" },
|
|
70
|
+
dimSpeed: { value: 5000, required: false },
|
|
71
|
+
minDimLevelLight: { value: 10, required: false },
|
|
72
|
+
maxDimLevelLight: { value: 100, required: false },
|
|
73
|
+
|
|
74
|
+
hueDevice: { value: "" },
|
|
75
|
+
},
|
|
76
|
+
inputs: 0,
|
|
77
|
+
outputs: 0,
|
|
78
|
+
icon: "node-hue-icon.svg",
|
|
79
|
+
label: function () {
|
|
80
|
+
return this.name;
|
|
81
|
+
},
|
|
82
|
+
paletteLabel: "Hue Light",
|
|
83
|
+
// button: {
|
|
84
|
+
// enabled: function() {
|
|
85
|
+
// // return whether or not the button is enabled, based on the current
|
|
86
|
+
// // configuration of the node
|
|
87
|
+
// return !this.changed
|
|
88
|
+
// },
|
|
89
|
+
// visible: function() {
|
|
90
|
+
// // return whether or not the button is visible, based on the current
|
|
91
|
+
// // configuration of the node
|
|
92
|
+
// return this.hasButton
|
|
93
|
+
// },
|
|
94
|
+
// //toggle: "buttonState",
|
|
95
|
+
// onclick: function() {}
|
|
96
|
+
// },
|
|
97
|
+
oneditprepare: function () {
|
|
98
|
+
var node = this;
|
|
99
|
+
var oNodeServer = RED.nodes.node($("#node-input-server").val()); // Store the config-node
|
|
100
|
+
var oNodeServerHue = RED.nodes.node($("#node-input-serverHue").val()); // Store the config-node
|
|
101
|
+
|
|
102
|
+
// Create the TAB in Node-Red
|
|
103
|
+
// ####################################
|
|
104
|
+
const content = `<html>
|
|
107
105
|
|
|
108
106
|
<head>
|
|
109
107
|
<div class="red-ui-sidebar-header">Color Selector</div>
|
|
@@ -136,784 +134,795 @@
|
|
|
136
134
|
</html>
|
|
137
135
|
`;
|
|
138
136
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
137
|
+
// COLOR BAR HANDLING ###########################
|
|
138
|
+
RED.sidebar.addTab({
|
|
139
|
+
id: "tabNRColor",
|
|
140
|
+
label: "Color Picker",
|
|
141
|
+
name: "Color Picker",
|
|
142
|
+
iconClass: "fa fa-pencil",
|
|
143
|
+
content: content,
|
|
144
|
+
enableOnEdit: true,
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Temperature
|
|
148
|
+
node.kelvinPicker = new iro.ColorPicker("#kelvinPicker", {
|
|
149
|
+
width: 250,
|
|
150
|
+
color: "rgb(255, 0, 0)",
|
|
151
|
+
borderWidth: 1,
|
|
152
|
+
borderColor: "#fff",
|
|
153
|
+
layoutDirection: "vertical",
|
|
154
|
+
layout: [
|
|
155
|
+
{
|
|
156
|
+
component: iro.ui.Slider,
|
|
157
|
+
options: {
|
|
158
|
+
sliderType: "kelvin",
|
|
159
|
+
sliderSize: 20,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
});
|
|
164
|
+
// color:change callbacks receive the current color
|
|
165
|
+
node.kelvinPicker.on("color:change", function (color) {
|
|
166
|
+
const resultRGBForNode = '{"red": ' + color.rgb.r + ', "green": ' + color.rgb.g + ', "blue": ' + color.rgb.b + "}";
|
|
167
|
+
$("#resultRGB").val(resultRGBForNode);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Color
|
|
171
|
+
node.colorPicker = new iro.ColorPicker("#colorPicker", {
|
|
172
|
+
width: 250,
|
|
173
|
+
color: "rgb(255, 0, 0)",
|
|
174
|
+
borderWidth: 1,
|
|
175
|
+
borderColor: "#fff",
|
|
176
|
+
layout: [
|
|
177
|
+
{
|
|
178
|
+
component: iro.ui.Box,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
component: iro.ui.Slider,
|
|
182
|
+
options: {
|
|
183
|
+
id: "hue-slider",
|
|
184
|
+
sliderType: "hue",
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
});
|
|
189
|
+
// color:change callbacks receive the current color
|
|
190
|
+
node.colorPicker.on("color:change", function (color) {
|
|
191
|
+
// Transform to compatible value for the node { "red": 255, "green": 255, "blue": 255 }
|
|
192
|
+
const resultRGBForNode = '{"red": ' + color.rgb.r + ', "green": ' + color.rgb.g + ', "blue": ' + color.rgb.b + "}";
|
|
193
|
+
$("#resultRGB").val(resultRGBForNode);
|
|
194
|
+
});
|
|
195
|
+
$("#resultRGB").on("keyup", function () {
|
|
196
|
+
setIroColor();
|
|
197
|
+
});
|
|
198
|
+
function setIroColor() {
|
|
199
|
+
try {
|
|
200
|
+
const color = JSON.parse($("#resultRGB").val());
|
|
201
|
+
node.colorPicker.color.setChannel("rgb", "r", color.red);
|
|
202
|
+
node.colorPicker.color.setChannel("rgb", "g", color.green);
|
|
203
|
+
node.colorPicker.color.setChannel("rgb", "b", color.blue);
|
|
204
|
+
} catch (error) { }
|
|
205
|
+
}
|
|
206
|
+
// Copy to clipboard button
|
|
207
|
+
$("#tabNRColor_colorSelectorTABApplyTextButton").on("click", function () {
|
|
208
|
+
// const aa = $("#resultRGB").val()
|
|
209
|
+
// navigator.clipboard.writeText(aa)
|
|
210
|
+
const destTextBox = "#" + $("#tabNRColor_destinationTextbox").val();
|
|
211
|
+
const resultRGB = $("#resultRGB").val();
|
|
212
|
+
$(destTextBox).val(resultRGB);
|
|
213
|
+
// Flash the destination control
|
|
214
|
+
$(destTextBox).css("background-color", "lightgreen");
|
|
215
|
+
$("#tabNRColor_divApplyCancel").hide();
|
|
216
|
+
RED.sidebar.show("help");
|
|
217
|
+
setTimeout(() => {
|
|
218
|
+
$(destTextBox).css("background-color", "");
|
|
219
|
+
}, 500);
|
|
220
|
+
});
|
|
221
|
+
$("#tabNRColor_colorSelectorTABCancelTextButton").on("click", function () {
|
|
222
|
+
$("#tabNRColor_destinationTextbox").val("");
|
|
223
|
+
RED.sidebar.show("help");
|
|
224
|
+
$("#tabNRColor_divApplyCancel").hide();
|
|
225
|
+
});
|
|
226
|
+
$("#node-input-colorAtSwitchOnDayTime").on("focus", function () {
|
|
227
|
+
RED.sidebar.show("tabNRColor"); // Node-Red custom color TAB
|
|
228
|
+
$("#tabNRColor_destinationTextbox").val("node-input-colorAtSwitchOnDayTime");
|
|
229
|
+
$("#tabNRColor_divApplyCancel").show();
|
|
230
|
+
const color = $("#node-input-colorAtSwitchOnDayTime").val();
|
|
231
|
+
$("#resultRGB").val(color);
|
|
232
|
+
setIroColor();
|
|
233
|
+
});
|
|
234
|
+
// $("#node-input-colorAtSwitchOnDayTime").on("blur", function () {
|
|
235
|
+
// RED.sidebar.show("help");
|
|
236
|
+
// });
|
|
237
|
+
$("#node-input-colorAtSwitchOnNightTime").on("focus", function () {
|
|
238
|
+
RED.sidebar.show("tabNRColor"); // Node-Red custom color TAB
|
|
239
|
+
$("#tabNRColor_destinationTextbox").val("node-input-colorAtSwitchOnNightTime");
|
|
240
|
+
$("#tabNRColor_divApplyCancel").show();
|
|
241
|
+
const color = $("#node-input-colorAtSwitchOnNightTime").val();
|
|
242
|
+
$("#resultRGB").val(color);
|
|
243
|
+
setIroColor();
|
|
244
|
+
});
|
|
245
|
+
// ####################################
|
|
246
|
+
|
|
247
|
+
$("#tabs").tabs(); // Tabs gestione KNX
|
|
248
|
+
|
|
249
|
+
// 19/02/2020 Used to get the server sooner als deploy.
|
|
250
|
+
$("#node-input-server").change(function () {
|
|
251
|
+
try {
|
|
252
|
+
oNodeServer = RED.nodes.node($(this).val());
|
|
253
|
+
} catch (error) { }
|
|
254
|
+
});
|
|
255
|
+
// 19/02/2020 Used to get the server sooner als deploy.
|
|
256
|
+
$("#node-input-serverHue").change(function () {
|
|
257
|
+
try {
|
|
258
|
+
oNodeServerHue = RED.nodes.node($(this).val());
|
|
259
|
+
} catch (error) { }
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
// 31/03/2020 Search Helper
|
|
263
|
+
function fullSearch(sourceText, searchString) {
|
|
264
|
+
// This searches for all words in a string
|
|
265
|
+
var aSearchWords = searchString.toLowerCase().split(" ");
|
|
266
|
+
var i = 0;
|
|
267
|
+
for (let index = 0; index < aSearchWords.length; index++) {
|
|
268
|
+
if (sourceText.toLowerCase().indexOf(aSearchWords[index]) > -1) i += 1;
|
|
269
|
+
}
|
|
270
|
+
return i == aSearchWords.length;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function getDPT(_dpt, _destinationWidget) {
|
|
274
|
+
// DPT Switch command
|
|
275
|
+
// ########################
|
|
276
|
+
$.getJSON("knxUltimateDpts", (data) => {
|
|
277
|
+
data.forEach((dpt) => {
|
|
278
|
+
if (dpt.value.startsWith(_dpt)) {
|
|
279
|
+
$(_destinationWidget).append($("<option></option>").attr("value", dpt.value).text(dpt.text));
|
|
208
280
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
setIroColor();
|
|
236
|
-
});
|
|
237
|
-
// $("#node-input-colorAtSwitchOnDayTime").on("blur", function () {
|
|
238
|
-
// RED.sidebar.show("help");
|
|
239
|
-
// });
|
|
240
|
-
$("#node-input-colorAtSwitchOnNightTime").on("focus", function () {
|
|
241
|
-
RED.sidebar.show("tabNRColor"); // Node-Red custom color TAB
|
|
242
|
-
$("#tabNRColor_destinationTextbox").val("node-input-colorAtSwitchOnNightTime")
|
|
243
|
-
$("#tabNRColor_divApplyCancel").show()
|
|
244
|
-
const color = $("#node-input-colorAtSwitchOnNightTime").val()
|
|
245
|
-
$("#resultRGB").val(color)
|
|
246
|
-
setIroColor();
|
|
247
|
-
});
|
|
248
|
-
// ####################################
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
$("#tabs").tabs(); // Tabs gestione KNX
|
|
252
|
-
|
|
253
|
-
// 19/02/2020 Used to get the server sooner als deploy.
|
|
254
|
-
$("#node-input-server").change(function () {
|
|
255
|
-
try {
|
|
256
|
-
oNodeServer = RED.nodes.node($(this).val());
|
|
257
|
-
} catch (error) { }
|
|
258
|
-
});
|
|
259
|
-
// 19/02/2020 Used to get the server sooner als deploy.
|
|
260
|
-
$("#node-input-serverHue").change(function () {
|
|
261
|
-
try {
|
|
262
|
-
oNodeServerHue = RED.nodes.node($(this).val());
|
|
263
|
-
} catch (error) { }
|
|
281
|
+
});
|
|
282
|
+
// Eval
|
|
283
|
+
const format = "node." + _destinationWidget.replace("#node-input-", "");
|
|
284
|
+
$(_destinationWidget).val(eval(format).toString());
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function getGroupAddress(_sourceWidgetAutocomplete, _destinationWidgetName, _destinationWidgetDPT, _additionalSearchTerm) {
|
|
289
|
+
$(_sourceWidgetAutocomplete).autocomplete({
|
|
290
|
+
minLength: 1,
|
|
291
|
+
source: function (request, response) {
|
|
292
|
+
//$.getJSON("csv", request, function( data, status, xhr ) {
|
|
293
|
+
$.getJSON("knxUltimatecsv?nodeID=" + oNodeServer.id, (data) => {
|
|
294
|
+
response(
|
|
295
|
+
$.map(data, function (value, key) {
|
|
296
|
+
var sSearch = value.ga + " (" + value.devicename + ") DPT" + value.dpt;
|
|
297
|
+
if (fullSearch(sSearch, request.term + _additionalSearchTerm)) {
|
|
298
|
+
return {
|
|
299
|
+
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
300
|
+
value: value.ga, // Value
|
|
301
|
+
};
|
|
302
|
+
} else {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
})
|
|
306
|
+
);
|
|
264
307
|
});
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
308
|
+
},
|
|
309
|
+
select: function (event, ui) {
|
|
310
|
+
// Sets Datapoint and device name automatically
|
|
311
|
+
var sDevName = ui.item.label.split("#")[1].trim();
|
|
312
|
+
try {
|
|
313
|
+
sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
|
|
314
|
+
} catch (error) { }
|
|
315
|
+
$(_destinationWidgetName).val(sDevName);
|
|
316
|
+
var optVal = $(_destinationWidgetDPT + " option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr("value");
|
|
317
|
+
// Select the option value
|
|
318
|
+
$(_destinationWidgetDPT).val(optVal);
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
getDPT("1.", "#node-input-dptLightSwitch");
|
|
324
|
+
getGroupAddress("#node-input-GALightSwitch", "#node-input-nameLightSwitch", "#node-input-dptLightSwitch", " 1.");
|
|
325
|
+
|
|
326
|
+
getDPT("1.", "#node-input-dptLightState");
|
|
327
|
+
getGroupAddress("#node-input-GALightState", "#node-input-nameLightState", "#node-input-dptLightState", " 1.");
|
|
328
|
+
|
|
329
|
+
getDPT("3.007", "#node-input-dptLightDIM");
|
|
330
|
+
getGroupAddress("#node-input-GALightDIM", "#node-input-nameLightDIM", "#node-input-dptLightDIM", " 3.007");
|
|
331
|
+
|
|
332
|
+
getDPT("5.001", "#node-input-dptLightBrightness");
|
|
333
|
+
getGroupAddress("#node-input-GALightBrightness", "#node-input-nameLightBrightness", "#node-input-dptLightBrightness", " 5.001");
|
|
334
|
+
|
|
335
|
+
getDPT("5.001", "#node-input-dptLightBrightnessState");
|
|
336
|
+
getGroupAddress("#node-input-GALightBrightnessState", "#node-input-nameLightBrightnessState", "#node-input-dptLightBrightnessState", " 5.001");
|
|
337
|
+
|
|
338
|
+
getDPT("232.600", "#node-input-dptLightColor");
|
|
339
|
+
getGroupAddress("#node-input-GALightColor", "#node-input-nameLightColor", "#node-input-dptLightColor", " 232.600");
|
|
340
|
+
|
|
341
|
+
getDPT("232.600", "#node-input-dptLightColorState");
|
|
342
|
+
getGroupAddress("#node-input-GALightColorState", "#node-input-nameLightColorState", "#node-input-dptLightColorState", " 232.600");
|
|
343
|
+
|
|
344
|
+
getDPT("3.007", "#node-input-dptLightHSV");
|
|
345
|
+
getGroupAddress("#node-input-GALightHSV", "#node-input-nameLightHSV", "#node-input-dptLightHSV", " 3.007");
|
|
346
|
+
|
|
347
|
+
getDPT("5.001", "#node-input-dptLightHSVPercentage");
|
|
348
|
+
getGroupAddress("#node-input-GALightHSVPercentage", "#node-input-nameLightHSVPercentage", "#node-input-dptLightHSVPercentage", " 5.001");
|
|
349
|
+
|
|
350
|
+
getDPT("5.001", "#node-input-dptLightHSVState");
|
|
351
|
+
getGroupAddress("#node-input-GALightHSVState", "#node-input-nameLightHSVState", "#node-input-dptLightHSVState", " 5.001");
|
|
352
|
+
|
|
353
|
+
getDPT("1.", "#node-input-dptLightBlink");
|
|
354
|
+
getGroupAddress("#node-input-GALightBlink", "#node-input-nameLightBlink", "#node-input-dptLightBlink", " 1.");
|
|
355
|
+
|
|
356
|
+
getDPT("1.", "#node-input-dptLightColorCycle");
|
|
357
|
+
getGroupAddress("#node-input-GALightColorCycle", "#node-input-nameLightColorCycle", "#node-input-dptLightColorCycle", " 1.");
|
|
358
|
+
|
|
359
|
+
getDPT("1.", "#node-input-dptDaylightSensor");
|
|
360
|
+
getGroupAddress("#node-input-GADaylightSensor", "#node-input-nameDaylightSensor", "#node-input-dptDaylightSensor", " 1.");
|
|
361
|
+
|
|
362
|
+
// Show/Hide and enable/disable day/night Lighting behaviour
|
|
363
|
+
if (this.enableDayNightLighting === "yes") {
|
|
364
|
+
$("#divEnableDayNightLighting").show();
|
|
365
|
+
$("#divCCSBoxayNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
366
|
+
} else {
|
|
367
|
+
$("#divEnableDayNightLighting").hide();
|
|
368
|
+
$("#divCCSBoxayNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
$("#node-input-enableDayNightLighting").on("change", function () {
|
|
372
|
+
if ($("#node-input-enableDayNightLighting").val() === "yes") {
|
|
373
|
+
$("#divEnableDayNightLighting").show();
|
|
374
|
+
$("#divCCSBoxayNightLighting").css({ border: "1px solid dimgrey", "border-radius": "12px", padding: "5px" }); // Add little box to better understand the property page
|
|
375
|
+
} else {
|
|
376
|
+
$("#divEnableDayNightLighting").hide();
|
|
377
|
+
$("#divCCSBoxayNightLighting").css({ border: "", "border-radius": "", padding: "" });
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
// Show/Hide the div of the color at swich on
|
|
382
|
+
if (this.specifySwitchOnBrightness === "yes") {
|
|
383
|
+
$("#divColorsAtSwitchOn").show();
|
|
384
|
+
} else {
|
|
385
|
+
$("#divColorsAtSwitchOn").hide();
|
|
386
|
+
$("#node-input-colorAtSwitchOnDayTime").val("");
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
$("#node-input-specifySwitchOnBrightness").on("change", function () {
|
|
390
|
+
if ($("#node-input-specifySwitchOnBrightness").val() === "yes") {
|
|
391
|
+
$("#divColorsAtSwitchOn").show();
|
|
392
|
+
if ($("#node-input-colorAtSwitchOnDayTime").val() === "") $("#node-input-colorAtSwitchOnDayTime").val('{ "red": 255, "green": 255, "blue": 255 }');
|
|
393
|
+
} else {
|
|
394
|
+
$("#divColorsAtSwitchOn").hide();
|
|
395
|
+
$("#node-input-colorAtSwitchOnDayTime").val("");
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
// Autocomplete suggestion with HUE Lights
|
|
400
|
+
$("#node-input-name").autocomplete({
|
|
401
|
+
minLength: 1,
|
|
402
|
+
source: function (request, response) {
|
|
403
|
+
$.getJSON("KNXUltimateGetResourcesHUE?rtype=light&nodeID=" + oNodeServerHue.id, (data) => {
|
|
404
|
+
response(
|
|
405
|
+
$.map(data.devices, function (value, key) {
|
|
406
|
+
//alert(JSON.stringify(value) + " "+ key)
|
|
407
|
+
var sSearch = value.name;
|
|
408
|
+
if (fullSearch(sSearch, request.term)) {
|
|
409
|
+
return {
|
|
410
|
+
hueDevice: value.id,
|
|
411
|
+
value: value.name,
|
|
412
|
+
};
|
|
413
|
+
} else {
|
|
414
|
+
return null;
|
|
273
415
|
}
|
|
274
|
-
|
|
416
|
+
})
|
|
417
|
+
);
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
select: function (event, ui) {
|
|
421
|
+
// Distinguish between group of lights an single light.
|
|
422
|
+
if (ui.item.value.toLowerCase().startsWith("grouped_light")) {
|
|
423
|
+
$("#node-input-hueDevice").val(ui.item.hueDevice + "#grouped_light");
|
|
424
|
+
$("#getColorAtSwitchOnDayTimeButton").hide();
|
|
425
|
+
$("#getColorAtSwitchOnNightTimeButton").hide();
|
|
426
|
+
} else {
|
|
427
|
+
$("#node-input-hueDevice").val(ui.item.hueDevice + "#light");
|
|
428
|
+
$("#getColorAtSwitchOnDayTimeButton").show();
|
|
429
|
+
$("#getColorAtSwitchOnNightTimeButton").show();
|
|
430
|
+
}
|
|
431
|
+
$("#tabs").show();
|
|
432
|
+
},
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
// Get the HUE capabilities to enable/disable UI parts
|
|
436
|
+
$.getJSON("KNXUltimateGetResourcesHUE?rtype=light&nodeID=" + oNodeServerHue.id, (data) => {
|
|
437
|
+
data.devices.forEach((element) => {
|
|
438
|
+
if (element.id === this.hueDevice.split("#")[0] && element.deviceObject !== undefined) {
|
|
439
|
+
// Check dimming
|
|
440
|
+
if (element.deviceObject.dimming === undefined) {
|
|
441
|
+
$("#tabs").tabs("disable", "#tabs-2");
|
|
442
|
+
$("#divColorsAtSwitchOn").hide();
|
|
443
|
+
$("#divColorCycle").hide();
|
|
275
444
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (dpt.value.startsWith(_dpt)) {
|
|
283
|
-
$(_destinationWidget).append($("<option></option>")
|
|
284
|
-
.attr("value", dpt.value)
|
|
285
|
-
.text(dpt.text))
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
// Eval
|
|
289
|
-
const format = "node." + _destinationWidget.replace("#node-input-", "");
|
|
290
|
-
$(_destinationWidget).val(eval(format).toString());
|
|
291
|
-
})
|
|
445
|
+
// Check color
|
|
446
|
+
if (element.deviceObject.color_temperature === undefined) $("#tabs").tabs("disable", "#tabs-3");
|
|
447
|
+
if (element.deviceObject.color === undefined) {
|
|
448
|
+
$("#tabs").tabs("disable", "#tabs-4");
|
|
449
|
+
$("#divColorsAtSwitchOn").hide();
|
|
450
|
+
$("#divColorCycle").hide();
|
|
292
451
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
response($.map(data, function (value, key) {
|
|
301
|
-
var sSearch = (value.ga + " (" + value.devicename + ") DPT" + value.dpt);
|
|
302
|
-
if (fullSearch(sSearch, request.term + _additionalSearchTerm)) {
|
|
303
|
-
return {
|
|
304
|
-
label: value.ga + " # " + value.devicename + " # " + value.dpt, // Label for Display
|
|
305
|
-
value: value.ga // Value
|
|
306
|
-
}
|
|
307
|
-
} else {
|
|
308
|
-
return null;
|
|
309
|
-
}
|
|
310
|
-
}));
|
|
311
|
-
});
|
|
312
|
-
}, select: function (event, ui) {
|
|
313
|
-
// Sets Datapoint and device name automatically
|
|
314
|
-
var sDevName = ui.item.label.split("#")[1].trim();
|
|
315
|
-
try {
|
|
316
|
-
sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim();
|
|
317
|
-
} catch (error) {
|
|
318
|
-
}
|
|
319
|
-
$(_destinationWidgetName).val(sDevName);
|
|
320
|
-
var optVal = $(_destinationWidgetDPT + " option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
|
|
321
|
-
// Select the option value
|
|
322
|
-
$(_destinationWidgetDPT).val(optVal);
|
|
323
|
-
}
|
|
324
|
-
});
|
|
452
|
+
// Check if grouped, to hide/show the "Get current" buttons
|
|
453
|
+
if (element.deviceObject.type === "grouped_light") {
|
|
454
|
+
$("#getColorAtSwitchOnDayTimeButton").hide();
|
|
455
|
+
$("#getColorAtSwitchOnNightTimeButton").hide();
|
|
456
|
+
} else {
|
|
457
|
+
$("#getColorAtSwitchOnDayTimeButton").show();
|
|
458
|
+
$("#getColorAtSwitchOnNightTimeButton").show();
|
|
325
459
|
}
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
$("#getColorAtSwitchOnDayTimeButton").on("click", function () {
|
|
466
|
+
// Get the HUE capabilities to enable/disable UI parts
|
|
467
|
+
$("#getColorAtSwitchOnDayTimeButton").text("Wait...");
|
|
468
|
+
$.getJSON("knxUltimateGetHueColor?id=" + $("#node-input-hueDevice").val().split("#")[0], (data) => {
|
|
469
|
+
$("#node-input-colorAtSwitchOnDayTime").val(data.toString());
|
|
470
|
+
$("#node-input-colorAtSwitchOnDayTime").css("background-color", "lightgreen");
|
|
471
|
+
setTimeout(() => {
|
|
472
|
+
$("#node-input-colorAtSwitchOnDayTime").css("background-color", "");
|
|
473
|
+
}, 500);
|
|
474
|
+
$("#getColorAtSwitchOnDayTimeButton").text("Get current");
|
|
475
|
+
});
|
|
476
|
+
});
|
|
477
|
+
$("#getColorAtSwitchOnNightTimeButton").on("click", function () {
|
|
478
|
+
// Get the HUE capabilities to enable/disable UI parts
|
|
479
|
+
$("#getColorAtSwitchOnNightTimeButton").text("Wait...");
|
|
480
|
+
$.getJSON("knxUltimateGetHueColor?id=" + $("#node-input-hueDevice").val().split("#")[0], (data) => {
|
|
481
|
+
$("#node-input-colorAtSwitchOnNightTime").val(data.toString());
|
|
482
|
+
$("#node-input-colorAtSwitchOnNightTime").css("background-color", "lightgreen");
|
|
483
|
+
setTimeout(() => {
|
|
484
|
+
$("#node-input-colorAtSwitchOnNightTime").css("background-color", "");
|
|
485
|
+
}, 500);
|
|
486
|
+
$("#getColorAtSwitchOnNightTimeButton").text("Get current");
|
|
487
|
+
});
|
|
488
|
+
});
|
|
489
|
+
|
|
490
|
+
// Fill options for minDimLevel and maxDimLevel
|
|
491
|
+
for (let index = 0; index <= 90; index++) {
|
|
492
|
+
if (index === 0){
|
|
493
|
+
$("#node-input-minDimLevelLight").append($("<option>").val(index).text(index.toString() + "% (Switch Off)"));
|
|
494
|
+
}else{
|
|
495
|
+
$("#node-input-minDimLevelLight").append($("<option>").val(index).text(index.toString() + "%"));
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
}
|
|
499
|
+
$("#node-input-minDimLevelLight").val(node.minDimLevelLight);
|
|
500
|
+
for (let index = 100; index >= 10; index--) {
|
|
501
|
+
$("#node-input-maxDimLevelLight").append(
|
|
502
|
+
$("<option>")
|
|
503
|
+
.val(index)
|
|
504
|
+
.text(index.toString() + "%")
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
$("#node-input-maxDimLevelLight").val(node.maxDimLevelLight);
|
|
508
|
+
|
|
509
|
+
if (this.hueDevice !== "") $("#tabs").show();
|
|
510
|
+
},
|
|
511
|
+
oneditsave: function () {
|
|
512
|
+
RED.sidebar.removeTab("tabNRColor");
|
|
513
|
+
RED.sidebar.show("help");
|
|
514
|
+
},
|
|
515
|
+
oneditcancel: function () {
|
|
516
|
+
RED.sidebar.removeTab("tabNRColor");
|
|
517
|
+
RED.sidebar.show("help");
|
|
518
|
+
},
|
|
519
|
+
});
|
|
520
|
+
</script>
|
|
521
|
+
<script src="https://kit.fontawesome.com/11f26b4500.js" crossorigin="anonymous"></script>
|
|
522
|
+
<script src="https://cdn.jsdelivr.net/npm/@jaames/iro@5"></script>
|
|
326
523
|
|
|
327
|
-
|
|
328
|
-
getGroupAddress("#node-input-GALightSwitch", "#node-input-nameLightSwitch", "#node-input-dptLightSwitch", " 1.")
|
|
329
|
-
|
|
330
|
-
getDPT("1.", "#node-input-dptLightState")
|
|
331
|
-
getGroupAddress("#node-input-GALightState", "#node-input-nameLightState", "#node-input-dptLightState", " 1.")
|
|
332
|
-
|
|
333
|
-
getDPT("3.007", "#node-input-dptLightDIM")
|
|
334
|
-
getGroupAddress("#node-input-GALightDIM", "#node-input-nameLightDIM", "#node-input-dptLightDIM", " 3.007")
|
|
524
|
+
<script type="text/html" data-template-name="knxUltimateHueLight">
|
|
335
525
|
|
|
336
|
-
getDPT("5.001", "#node-input-dptLightBrightness")
|
|
337
|
-
getGroupAddress("#node-input-GALightBrightness", "#node-input-nameLightBrightness", "#node-input-dptLightBrightness", " 5.001")
|
|
338
526
|
|
|
339
|
-
|
|
340
|
-
|
|
527
|
+
<div class="form-row">
|
|
528
|
+
<b>HUE Light/Group node</b>  <span style="color:red"
|
|
529
|
+
 
|
|
530
|
+
 <i class="fa fa-youtube"></i></span> <a target="_blank" href="https://youtu.be/jjEUI1J8bkA"><u>Youtube sample</u></a>
|
|
531
|
+
<br />
|
|
532
|
+
<br />
|
|
533
|
+
<p align="center">
|
|
534
|
+
<i class="fa-regular fa-lightbulb fa-bounce fa-8x"></i>
|
|
535
|
+
</p>
|
|
536
|
+
<br />
|
|
537
|
+
<label for="node-input-server" >
|
|
538
|
+
<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>
|
|
539
|
+
KNX GW
|
|
540
|
+
</label>
|
|
541
|
+
<input type="text" id="node-input-server" />
|
|
542
|
+
</div>
|
|
543
|
+
|
|
544
|
+
<div class="form-row">
|
|
545
|
+
<label for="node-input-serverHue">
|
|
546
|
+
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABFUlEQVQ4EZWSsWoCQRCG1yiENEFEi6QSkjqWWoqFoBYJ+Br6JHkMn8Iibd4ihQpaJIhWNkry/ZtdGZY78Qa+m39nZ+dm9s4550awglNBluS/gVtAX6KgDclf68w2OThgfR9iT/jnoEv4TtByDThWTCDKW4SSZTf/zj9/eZbN+izTDuKGimu0vPF8B/YN8aC8LmcOj/AAn9CFTEs70Js/oGqy79C69bqJ5XbQI2kGO5N8QL9D08S8zBtBF5ZaVsznpCMoqJnVdjTpb1Db0fwIWmQV6BLXzFOYgA6/gDVfQN9bBWp2J2hdWDPoBV5FrKnAJutHikk/CHHR8i7x4iG7qQ720IYvu3GFbpHjx3pFrOFYkA354z/5bkK826phyAAAAABJRU5ErkJggg=="/>
|
|
547
|
+
HUE Bridge
|
|
548
|
+
</label>
|
|
549
|
+
<input type="text" id="node-input-serverHue" />
|
|
550
|
+
</div>
|
|
551
|
+
|
|
552
|
+
<br/>
|
|
553
|
+
<p>
|
|
554
|
+
<b>Philips HUE</b>
|
|
555
|
+
</p>
|
|
556
|
+
|
|
557
|
+
<div class="form-row">
|
|
558
|
+
<label for="node-input-hueDevice" >
|
|
559
|
+
<i class="fa fa-play-circle"></i> Name</label>
|
|
560
|
+
<input type="text" id="node-input-name" placeholder="Enter your hue device name"/>
|
|
561
|
+
<input type="hidden" id="node-input-hueDevice"/>
|
|
562
|
+
</div>
|
|
563
|
+
|
|
564
|
+
<br/>
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
<div id="tabs" style="width:680px" hidden>
|
|
568
|
+
<ul>
|
|
569
|
+
<li><a href="#tabs-1">Switching</a></li>
|
|
570
|
+
<li><a href="#tabs-2">Dim/Brightness</a></li>
|
|
571
|
+
<li><a href="#tabs-3">Tunable white</a></li>
|
|
572
|
+
<li><a href="#tabs-4">Colors</a></li>
|
|
573
|
+
<li><a href="#tabs-5">Effects</a></li>
|
|
574
|
+
<li><a href="#tabs-6">Behaviour</a></li>
|
|
575
|
+
</ul>
|
|
576
|
+
<div id="tabs-1">
|
|
577
|
+
<p>
|
|
578
|
+
<div class="form-row">
|
|
579
|
+
<label for="node-input-nameLightSwitch" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
341
580
|
|
|
342
|
-
|
|
343
|
-
|
|
581
|
+
<label for="node-input-GALightSwitch" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightSwitch"></span></label>
|
|
582
|
+
<input type="text" id="node-input-GALightSwitch" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
344
583
|
|
|
345
|
-
|
|
346
|
-
|
|
584
|
+
<label for="node-input-dptLightSwitch" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
585
|
+
<select id="node-input-dptLightSwitch" style="width:140px;"></select>
|
|
347
586
|
|
|
348
|
-
|
|
349
|
-
|
|
587
|
+
<label for="node-input-nameLightSwitch" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
588
|
+
<input type="text" id="node-input-nameLightSwitch" style="width:190px;margin-left: 5px; text-align: left;">
|
|
589
|
+
</div>
|
|
590
|
+
<div class="form-row">
|
|
591
|
+
<label for="node-input-nameLightState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
350
592
|
|
|
351
|
-
|
|
352
|
-
|
|
593
|
+
<label for="node-input-GALightState" style="width:20px;">GA</label>
|
|
594
|
+
<input type="text" id="node-input-GALightState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
353
595
|
|
|
354
|
-
|
|
355
|
-
|
|
596
|
+
<label for="node-input-dptLightState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
597
|
+
<select id="node-input-dptLightState" style="width:140px;"></select>
|
|
356
598
|
|
|
357
|
-
|
|
358
|
-
|
|
599
|
+
<label for="node-input-nameLightState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
600
|
+
<input type="text" id="node-input-nameLightState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
601
|
+
</div>
|
|
602
|
+
</p>
|
|
603
|
+
</div>
|
|
604
|
+
<div id="tabs-2">
|
|
605
|
+
<p>
|
|
606
|
+
<div class="form-row">
|
|
607
|
+
<label for="node-input-nameLightDIM" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
359
608
|
|
|
360
|
-
|
|
361
|
-
|
|
609
|
+
<label for="node-input-GALightDIM" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
610
|
+
<input type="text" id="node-input-GALightDIM" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
362
611
|
|
|
363
|
-
|
|
364
|
-
|
|
612
|
+
<label for="node-input-dptLightDIM" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
613
|
+
<select id="node-input-dptLightDIM" style="width:140px;"></select>
|
|
365
614
|
|
|
615
|
+
<label for="node-input-nameLightDIM" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
616
|
+
<input type="text" id="node-input-nameLightDIM" style="width:190px;margin-left: 5px; text-align: left;">
|
|
617
|
+
</div>
|
|
618
|
+
<div class="form-row">
|
|
619
|
+
<label for="node-input-nameLightBrightness" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control %</label>
|
|
366
620
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
$("#DivEnableDayNightLighting").show()
|
|
370
|
-
} else {
|
|
371
|
-
$("#DivEnableDayNightLighting").hide()
|
|
372
|
-
}
|
|
621
|
+
<label for="node-input-GALightBrightness" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
622
|
+
<input type="text" id="node-input-GALightBrightness" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
373
623
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
$("#DivEnableDayNightLighting").show()
|
|
377
|
-
} else {
|
|
378
|
-
$("#DivEnableDayNightLighting").hide()
|
|
379
|
-
}
|
|
380
|
-
})
|
|
624
|
+
<label for="node-input-dptLightBrightness" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
625
|
+
<select id="node-input-dptLightBrightness" style="width:140px;"></select>
|
|
381
626
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
} else {
|
|
386
|
-
$("#divColorsAtSwitchOn").hide()
|
|
387
|
-
$("#node-input-colorAtSwitchOnDayTime").val('')
|
|
388
|
-
}
|
|
627
|
+
<label for="node-input-nameLightBrightness" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
628
|
+
<input type="text" id="node-input-nameLightBrightness" style="width:190px;margin-left: 5px; text-align: left;">
|
|
629
|
+
</div>
|
|
389
630
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
$("#divColorsAtSwitchOn").show()
|
|
393
|
-
if ($("#node-input-colorAtSwitchOnDayTime").val() === '') $("#node-input-colorAtSwitchOnDayTime").val('{ "red": 255, "green": 255, "blue": 255 }')
|
|
394
|
-
} else {
|
|
395
|
-
$("#divColorsAtSwitchOn").hide()
|
|
396
|
-
$("#node-input-colorAtSwitchOnDayTime").val('')
|
|
397
|
-
}
|
|
398
|
-
})
|
|
399
|
-
|
|
400
|
-
// Autocomplete suggestion with HUE Lights
|
|
401
|
-
$("#node-input-name").autocomplete({
|
|
402
|
-
minLength: 1,
|
|
403
|
-
source: function (request, response) {
|
|
404
|
-
$.getJSON("KNXUltimateGetResourcesHUE?rtype=light&nodeID=" + oNodeServerHue.id, (data) => {
|
|
405
|
-
response($.map(data.devices, function (value, key) {
|
|
406
|
-
//alert(JSON.stringify(value) + " "+ key)
|
|
407
|
-
var sSearch = (value.name);
|
|
408
|
-
if (fullSearch(sSearch, request.term)) {
|
|
409
|
-
return {
|
|
410
|
-
hueDevice: value.id,
|
|
411
|
-
value: value.name
|
|
412
|
-
}
|
|
413
|
-
} else {
|
|
414
|
-
return null;
|
|
415
|
-
}
|
|
416
|
-
}));
|
|
417
|
-
});
|
|
418
|
-
}, select: function (event, ui) {
|
|
419
|
-
// Distinguish between group of lights an single light.
|
|
420
|
-
if (ui.item.value.toLowerCase().startsWith('grouped_light')) {
|
|
421
|
-
$('#node-input-hueDevice').val(ui.item.hueDevice + "#grouped_light");
|
|
422
|
-
$("#getColorAtSwitchOnDayTimeButton").hide();
|
|
423
|
-
$("#getColorAtSwitchOnNightTimeButton").hide();
|
|
424
|
-
} else {
|
|
425
|
-
$('#node-input-hueDevice').val(ui.item.hueDevice + "#light");
|
|
426
|
-
$("#getColorAtSwitchOnDayTimeButton").show();
|
|
427
|
-
$("#getColorAtSwitchOnNightTimeButton").show();
|
|
428
|
-
}
|
|
429
|
-
$('#tabs').show();
|
|
430
|
-
}
|
|
431
|
-
});
|
|
631
|
+
<div class="form-row">
|
|
632
|
+
<label for="node-input-nameLightBrightnessState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
432
633
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
data.devices.forEach(element => {
|
|
436
|
-
if (element.id === this.hueDevice.split('#')[0] && element.deviceObject !== undefined) {
|
|
437
|
-
// Check dimming
|
|
438
|
-
if (element.deviceObject.dimming === undefined) {
|
|
439
|
-
$('#tabs').tabs("disable", "#tabs-2");
|
|
440
|
-
$('#divColorsAtSwitchOn').hide()
|
|
441
|
-
$('#divColorCycle').hide()
|
|
442
|
-
}
|
|
443
|
-
// Check color
|
|
444
|
-
if (element.deviceObject.color_temperature === undefined) $('#tabs').tabs("disable", "#tabs-3");
|
|
445
|
-
if (element.deviceObject.color === undefined) {
|
|
446
|
-
$('#tabs').tabs("disable", "#tabs-4");
|
|
447
|
-
$('#divColorsAtSwitchOn').hide()
|
|
448
|
-
$('#divColorCycle').hide()
|
|
449
|
-
}
|
|
450
|
-
// Check if grouped, to hide/show the "Get current" buttons
|
|
451
|
-
if (element.deviceObject.type === "grouped_light") {
|
|
452
|
-
$("#getColorAtSwitchOnDayTimeButton").hide();
|
|
453
|
-
$("#getColorAtSwitchOnNightTimeButton").hide();
|
|
454
|
-
} else {
|
|
455
|
-
$("#getColorAtSwitchOnDayTimeButton").show();
|
|
456
|
-
$("#getColorAtSwitchOnNightTimeButton").show();
|
|
457
|
-
}
|
|
458
|
-
return
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
});
|
|
634
|
+
<label for="node-input-GALightBrightnessState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
635
|
+
<input type="text" id="node-input-GALightBrightnessState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
462
636
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
$("#getColorAtSwitchOnDayTimeButton").text("Wait...")
|
|
466
|
-
$.getJSON("knxUltimateGetHueColor?id=" + $('#node-input-hueDevice').val().split('#')[0], (data) => {
|
|
467
|
-
$('#node-input-colorAtSwitchOnDayTime').val(data.toString());
|
|
468
|
-
$("#node-input-colorAtSwitchOnDayTime").css("background-color", "lightgreen");
|
|
469
|
-
setTimeout(() => {
|
|
470
|
-
$("#node-input-colorAtSwitchOnDayTime").css("background-color", "");
|
|
471
|
-
}, 500);
|
|
472
|
-
$("#getColorAtSwitchOnDayTimeButton").text("Get current")
|
|
473
|
-
});
|
|
474
|
-
});
|
|
475
|
-
$("#getColorAtSwitchOnNightTimeButton").on("click", function () {
|
|
476
|
-
// Get the HUE capabilities to enable/disable UI parts
|
|
477
|
-
$("#getColorAtSwitchOnNightTimeButton").text("Wait...")
|
|
478
|
-
$.getJSON("knxUltimateGetHueColor?id=" + $('#node-input-hueDevice').val().split('#')[0], (data) => {
|
|
479
|
-
$('#node-input-colorAtSwitchOnNightTime').val(data.toString());
|
|
480
|
-
$("#node-input-colorAtSwitchOnNightTime").css("background-color", "lightgreen");
|
|
481
|
-
setTimeout(() => {
|
|
482
|
-
$("#node-input-colorAtSwitchOnNightTime").css("background-color", "");
|
|
483
|
-
}, 500);
|
|
484
|
-
$("#getColorAtSwitchOnNightTimeButton").text("Get current")
|
|
485
|
-
});
|
|
486
|
-
});
|
|
637
|
+
<label for="node-input-dptLightBrightnessState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
638
|
+
<select id="node-input-dptLightBrightnessState" style="width:140px;"></select>
|
|
487
639
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
640
|
+
<label for="node-input-nameLightBrightnessState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
641
|
+
<input type="text" id="node-input-nameLightBrightnessState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
642
|
+
</div>
|
|
643
|
+
</p>
|
|
644
|
+
</div>
|
|
645
|
+
<div id="tabs-3">
|
|
646
|
+
<p>
|
|
647
|
+
<div class="form-row">
|
|
648
|
+
<label for="node-input-nameLightHSV" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
496
649
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
oneditsave: function () {
|
|
500
|
-
RED.sidebar.removeTab("tabNRColor");
|
|
501
|
-
RED.sidebar.show("help")
|
|
502
|
-
},
|
|
503
|
-
oneditcancel: function () {
|
|
504
|
-
RED.sidebar.removeTab("tabNRColor");
|
|
505
|
-
RED.sidebar.show("help")
|
|
506
|
-
}
|
|
507
|
-
})
|
|
650
|
+
<label for="node-input-GALightHSV" style="width:20px;">GA</label>
|
|
651
|
+
<input type="text" id="node-input-GALightHSV" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
508
652
|
|
|
509
|
-
</
|
|
510
|
-
<
|
|
511
|
-
<script src="https://cdn.jsdelivr.net/npm/@jaames/iro@5"></script>
|
|
653
|
+
<label for="node-input-dptLightHSV" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
654
|
+
<select id="node-input-dptLightHSV" style="width:140px;"></select>
|
|
512
655
|
|
|
513
|
-
<
|
|
656
|
+
<label for="node-input-nameLightHSV" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
657
|
+
<input type="text" id="node-input-nameLightHSV" style="width:190px;margin-left: 5px; text-align: left;">
|
|
658
|
+
</div>
|
|
659
|
+
<div class="form-row">
|
|
660
|
+
<label for="node-input-nameLightHSVPercentage" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control %</label>
|
|
514
661
|
|
|
662
|
+
<label for="node-input-GALightHSVPercentage" style="width:20px;">GA</label>
|
|
663
|
+
<input type="text" id="node-input-GALightHSVPercentage" placeholder="Ex: 1/1/1"
|
|
664
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
515
665
|
|
|
516
|
-
<
|
|
517
|
-
|
|
518
|
-
 
|
|
519
|
-
 <i class="fa fa-youtube"></i></span> <a target="_blank" href="https://youtu.be/jjEUI1J8bkA"><u>Youtube sample</u></a>
|
|
520
|
-
<br />
|
|
521
|
-
<br />
|
|
522
|
-
<p align="center">
|
|
523
|
-
<i class="fa-regular fa-lightbulb fa-bounce fa-8x"></i>
|
|
524
|
-
</p>
|
|
525
|
-
<br />
|
|
526
|
-
<label for="node-input-server" >
|
|
527
|
-
<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>
|
|
528
|
-
KNX GW
|
|
529
|
-
</label>
|
|
530
|
-
<input type="text" id="node-input-server" />
|
|
531
|
-
</div>
|
|
666
|
+
<label for="node-input-dptLightHSVPercentage" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
667
|
+
<select id="node-input-dptLightHSVPercentage" style="width:140px;"></select>
|
|
532
668
|
|
|
533
|
-
<
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
<input type="text" id="node-input-serverHue" />
|
|
539
|
-
</div>
|
|
669
|
+
<label for="node-input-nameLightHSVPercentage" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
670
|
+
<input type="text" id="node-input-nameLightHSVPercentage" style="width:190px;margin-left: 5px; text-align: left;">
|
|
671
|
+
</div>
|
|
672
|
+
<div class="form-row">
|
|
673
|
+
<label for="node-input-nameLightHSVState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
540
674
|
|
|
541
|
-
<
|
|
542
|
-
<
|
|
543
|
-
<b>Philips HUE</b>
|
|
544
|
-
</p>
|
|
545
|
-
|
|
546
|
-
<div class="form-row">
|
|
547
|
-
<label for="node-input-hueDevice" >
|
|
548
|
-
<i class="fa fa-play-circle"></i> Name</label>
|
|
549
|
-
<input type="text" id="node-input-name" placeholder="Enter your hue device name"/>
|
|
550
|
-
<input type="hidden" id="node-input-hueDevice"/>
|
|
551
|
-
</div>
|
|
675
|
+
<label for="node-input-GALightHSVState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
676
|
+
<input type="text" id="node-input-GALightHSVState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
552
677
|
|
|
553
|
-
<
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
<div id="tabs" style="width:680px" hidden>
|
|
557
|
-
<ul>
|
|
558
|
-
<li><a href="#tabs-1">Switching</a></li>
|
|
559
|
-
<li><a href="#tabs-2">Dim/Brightness</a></li>
|
|
560
|
-
<li><a href="#tabs-3">Tunable white</a></li>
|
|
561
|
-
<li><a href="#tabs-4">Colors</a></li>
|
|
562
|
-
<li><a href="#tabs-5">Effects</a></li>
|
|
563
|
-
<li><a href="#tabs-6">Behaviour</a></li>
|
|
564
|
-
</ul>
|
|
565
|
-
<div id="tabs-1">
|
|
566
|
-
<p>
|
|
567
|
-
<div class="form-row">
|
|
568
|
-
<label for="node-input-nameLightSwitch" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
569
|
-
|
|
570
|
-
<label for="node-input-GALightSwitch" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightSwitch"></span></label>
|
|
571
|
-
<input type="text" id="node-input-GALightSwitch" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
572
|
-
|
|
573
|
-
<label for="node-input-dptLightSwitch" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
574
|
-
<select id="node-input-dptLightSwitch" style="width:140px;"></select>
|
|
575
|
-
|
|
576
|
-
<label for="node-input-nameLightSwitch" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
577
|
-
<input type="text" id="node-input-nameLightSwitch" style="width:190px;margin-left: 5px; text-align: left;">
|
|
578
|
-
</div>
|
|
579
|
-
<div class="form-row">
|
|
580
|
-
<label for="node-input-nameLightState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
678
|
+
<label for="node-input-dptLightHSVState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
679
|
+
<select id="node-input-dptLightHSVState" style="width:140px;"></select>
|
|
581
680
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
</div>
|
|
648
|
-
<div class="form-row">
|
|
649
|
-
<label for="node-input-nameLightHSVPercentage" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control %</label>
|
|
650
|
-
|
|
651
|
-
<label for="node-input-GALightHSVPercentage" style="width:20px;">GA</label>
|
|
652
|
-
<input type="text" id="node-input-GALightHSVPercentage" placeholder="Ex: 1/1/1"
|
|
653
|
-
style="width:70px;margin-left: 5px; text-align: left;">
|
|
654
|
-
|
|
655
|
-
<label for="node-input-dptLightHSVPercentage" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
656
|
-
<select id="node-input-dptLightHSVPercentage" style="width:140px;"></select>
|
|
657
|
-
|
|
658
|
-
<label for="node-input-nameLightHSVPercentage" style="width:50px; margin-left: 0px; text-align: right;">Name</label>
|
|
659
|
-
<input type="text" id="node-input-nameLightHSVPercentage" style="width:190px;margin-left: 5px; text-align: left;">
|
|
660
|
-
</div>
|
|
661
|
-
<div class="form-row">
|
|
662
|
-
<label for="node-input-nameLightHSVState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
663
|
-
|
|
664
|
-
<label for="node-input-GALightHSVState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
665
|
-
<input type="text" id="node-input-GALightHSVState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
666
|
-
|
|
667
|
-
<label for="node-input-dptLightHSVState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
668
|
-
<select id="node-input-dptLightHSVState" style="width:140px;"></select>
|
|
669
|
-
|
|
670
|
-
<label for="node-input-nameLightHSVState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
671
|
-
<input type="text" id="node-input-nameLightHSVState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
672
|
-
</div>
|
|
673
|
-
</p>
|
|
674
|
-
</div>
|
|
675
|
-
<div id="tabs-4">
|
|
676
|
-
<p>
|
|
677
|
-
<div class="form-row">
|
|
678
|
-
<label for="node-input-nameLightColor" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
679
|
-
|
|
680
|
-
<label for="node-input-GALightColor" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
681
|
-
<input type="text" id="node-input-GALightColor" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
682
|
-
|
|
683
|
-
<label for="node-input-dptLightColor" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
684
|
-
<select id="node-input-dptLightColor" style="width:140px;"></select>
|
|
685
|
-
|
|
686
|
-
<label for="node-input-nameLightColor" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
687
|
-
<input type="text" id="node-input-nameLightColor" style="width:190px;margin-left: 5px; text-align: left;">
|
|
688
|
-
</div>
|
|
689
|
-
<div class="form-row">
|
|
690
|
-
<label for="node-input-nameLightColorState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
691
|
-
|
|
692
|
-
<label for="node-input-GALightColorState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
693
|
-
<input type="text" id="node-input-GALightColorState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
694
|
-
|
|
695
|
-
<label for="node-input-dptLightColorState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
696
|
-
<select id="node-input-dptLightColorState" style="width:140px;"></select>
|
|
697
|
-
|
|
698
|
-
<label for="node-input-nameLightColorState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
699
|
-
<input type="text" id="node-input-nameLightColorState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
700
|
-
</div>
|
|
701
|
-
</p>
|
|
702
|
-
</div>
|
|
703
|
-
|
|
704
|
-
<div id="tabs-5">
|
|
681
|
+
<label for="node-input-nameLightHSVState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
682
|
+
<input type="text" id="node-input-nameLightHSVState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
683
|
+
</div>
|
|
684
|
+
</p>
|
|
685
|
+
</div>
|
|
686
|
+
<div id="tabs-4">
|
|
687
|
+
<p>
|
|
688
|
+
<div class="form-row">
|
|
689
|
+
<label for="node-input-nameLightColor" style="width:110px;"><i class="fa fa-play-circle-o"></i> Control</label>
|
|
690
|
+
|
|
691
|
+
<label for="node-input-GALightColor" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
692
|
+
<input type="text" id="node-input-GALightColor" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
693
|
+
|
|
694
|
+
<label for="node-input-dptLightColor" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
695
|
+
<select id="node-input-dptLightColor" style="width:140px;"></select>
|
|
696
|
+
|
|
697
|
+
<label for="node-input-nameLightColor" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
698
|
+
<input type="text" id="node-input-nameLightColor" style="width:190px;margin-left: 5px; text-align: left;">
|
|
699
|
+
</div>
|
|
700
|
+
<div class="form-row">
|
|
701
|
+
<label for="node-input-nameLightColorState" style="width:110px;"><i class="fa fa-play-circle-o"></i> Status</label>
|
|
702
|
+
|
|
703
|
+
<label for="node-input-GALightColorState" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
704
|
+
<input type="text" id="node-input-GALightColorState" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
705
|
+
|
|
706
|
+
<label for="node-input-dptLightColorState" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
707
|
+
<select id="node-input-dptLightColorState" style="width:140px;"></select>
|
|
708
|
+
|
|
709
|
+
<label for="node-input-nameLightColorState" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
710
|
+
<input type="text" id="node-input-nameLightColorState" style="width:190px;margin-left: 5px; text-align: left;">
|
|
711
|
+
</div>
|
|
712
|
+
</p>
|
|
713
|
+
</div>
|
|
714
|
+
<div id="tabs-5">
|
|
715
|
+
<p>
|
|
716
|
+
<div class="form-row">
|
|
717
|
+
<label for="node-input-nameLightBlink" style="width:110px;"><i class="fa fa-play-circle-o"></i> Blink</label>
|
|
718
|
+
|
|
719
|
+
<label for="node-input-GALightBlink" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
720
|
+
<input type="text" id="node-input-GALightBlink" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
721
|
+
|
|
722
|
+
<label for="node-input-dptLightBlink" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
723
|
+
<select id="node-input-dptLightBlink" style="width:140px;"></select>
|
|
724
|
+
|
|
725
|
+
<label for="node-input-nameLightBlink" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
726
|
+
<input type="text" id="node-input-nameLightBlink" style="width:190px;margin-left: 5px; text-align: left;">
|
|
727
|
+
</div>
|
|
728
|
+
|
|
729
|
+
<div id="divColorCycle">
|
|
730
|
+
<div class="form-row">
|
|
731
|
+
<label for="node-input-nameLightColorCycle" style="width:110px;"><i class="fa fa-play-circle-o"></i> Color Cycle</label>
|
|
732
|
+
|
|
733
|
+
<label for="node-input-GALightColorCycle" style="width:20px;">GA</label>
|
|
734
|
+
<input type="text" id="node-input-GALightColorCycle" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
735
|
+
|
|
736
|
+
<label for="node-input-dptLightColorCycle" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
737
|
+
<select id="node-input-dptLightColorCycle" style="width:140px;"></select>
|
|
738
|
+
|
|
739
|
+
<label for="node-input-nameLightColorCycle" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
740
|
+
<input type="text" id="node-input-nameLightColorCycle" style="width:190px;margin-left: 5px; text-align: left;">
|
|
741
|
+
</div>
|
|
742
|
+
</div>
|
|
743
|
+
</p>
|
|
744
|
+
</div>
|
|
745
|
+
<div id="tabs-6">
|
|
705
746
|
<p>
|
|
747
|
+
<div class="form-row">
|
|
748
|
+
<label for="node-input-updateKNXBrightnessStatusOnHUEOnOff" style="width:260px;">
|
|
749
|
+
<i class="fa fa-tag"></i> KNX Brightness Status
|
|
750
|
+
</label>
|
|
751
|
+
<select id="node-input-updateKNXBrightnessStatusOnHUEOnOff">
|
|
752
|
+
<option value="onhueoff">When HUE light is Off, send 0% (Default KNX behaviour)</option>
|
|
753
|
+
<option value="no">Leave as is (default HUE behaviour)</option>
|
|
754
|
+
</select>
|
|
755
|
+
</div>
|
|
756
|
+
<div class="form-row">
|
|
757
|
+
<label for="node-input-specifySwitchOnBrightness" style="width:260px;">
|
|
758
|
+
<i class="fa fa-tag"></i> Specify switch on brightness
|
|
759
|
+
</label>
|
|
760
|
+
<select id="node-input-specifySwitchOnBrightness">
|
|
761
|
+
<option value="yes">Yes</option>
|
|
762
|
+
<option value="no">No</option>
|
|
763
|
+
</select>
|
|
764
|
+
</div>
|
|
765
|
+
|
|
766
|
+
<div class="form-row" id="divColorsAtSwitchOn">
|
|
767
|
+
<label for="node-input-colorAtSwitchOnDayTime" style="width:260px">
|
|
768
|
+
<i class="fa fa-sun-o"></i> Switch On - color/brightness
|
|
769
|
+
</label>
|
|
770
|
+
<input type="text" id="node-input-colorAtSwitchOnDayTime"
|
|
771
|
+
placeholder='For example, {"red":255, "green":255, "blue":255}' style="width:260px">
|
|
772
|
+
<button id="getColorAtSwitchOnDayTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
773
|
+
</div>
|
|
774
|
+
<div id="divCCSBoxayNightLighting">
|
|
706
775
|
<div class="form-row">
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
<label for="node-input-GALightBlink" style="width:20px;"><span data-i18n="knxUltimateHueLight.node-input-GALightState"></span></label>
|
|
710
|
-
<input type="text" id="node-input-GALightBlink" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
711
|
-
|
|
712
|
-
<label for="node-input-dptLightBlink" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
713
|
-
<select id="node-input-dptLightBlink" style="width:140px;"></select>
|
|
714
|
-
|
|
715
|
-
<label for="node-input-nameLightBlink" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
716
|
-
<input type="text" id="node-input-nameLightBlink" style="width:190px;margin-left: 5px; text-align: left;">
|
|
717
|
-
</div>
|
|
718
|
-
|
|
719
|
-
<div id="divColorCycle">
|
|
720
|
-
<div class="form-row">
|
|
721
|
-
<label for="node-input-nameLightColorCycle" style="width:110px;"><i class="fa fa-play-circle-o"></i> Color Cycle</label>
|
|
722
|
-
|
|
723
|
-
<label for="node-input-GALightColorCycle" style="width:20px;">GA</label>
|
|
724
|
-
<input type="text" id="node-input-GALightColorCycle" placeholder="Ex: 1/1/1" style="width:70px;margin-left: 5px; text-align: left;">
|
|
725
|
-
|
|
726
|
-
<label for="node-input-dptLightColorCycle" style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
727
|
-
<select id="node-input-dptLightColorCycle" style="width:140px;"></select>
|
|
728
|
-
|
|
729
|
-
<label for="node-input-nameLightColorCycle" style="width:50px; margin-left: 0px; text-align: right;"><span data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
730
|
-
<input type="text" id="node-input-nameLightColorCycle" style="width:190px;margin-left: 5px; text-align: left;">
|
|
731
|
-
</div>
|
|
732
|
-
</div>
|
|
733
|
-
</p>
|
|
734
|
-
</div>
|
|
735
|
-
<div id="tabs-6">
|
|
736
|
-
<p>
|
|
737
|
-
<div class="form-row">
|
|
738
|
-
<label for="node-input-updateKNXBrightnessStatusOnHUEOnOff" style="width:260px;">
|
|
739
|
-
<i class="fa fa-tag"></i> KNX Brightness Status
|
|
776
|
+
<label for="node-input-enableDayNightLighting" style="width:260px;">
|
|
777
|
+
<i class="fa fa-clone"></i> Night Lighting
|
|
740
778
|
</label>
|
|
741
|
-
<select id="node-input-
|
|
742
|
-
<option value="onhueoff">When HUE light is Off, send 0% (Default KNX behaviour)</option>
|
|
743
|
-
<option value="no">Leave as is (default HUE behaviour)</option>
|
|
744
|
-
</select>
|
|
745
|
-
</div>
|
|
746
|
-
<div class="form-row">
|
|
747
|
-
<label for="node-input-specifySwitchOnBrightness" style="width:260px;">
|
|
748
|
-
<i class="fa fa-tag"></i> Specify switch on brightness
|
|
749
|
-
</label>
|
|
750
|
-
<select id="node-input-specifySwitchOnBrightness">
|
|
779
|
+
<select id="node-input-enableDayNightLighting">
|
|
751
780
|
<option value="yes">Yes</option>
|
|
752
781
|
<option value="no">No</option>
|
|
753
782
|
</select>
|
|
754
|
-
</div>
|
|
755
|
-
|
|
756
|
-
<div class="form-row" >
|
|
757
|
-
<label for="node-input-colorAtSwitchOnDayTime" style="width:260px">
|
|
758
|
-
<i class="fa fa-sun-o"></i> Switch On - color/brightness
|
|
759
|
-
</label>
|
|
760
|
-
<input type="text" id="node-input-colorAtSwitchOnDayTime"
|
|
761
|
-
placeholder='For example, {"red":255, "green":255, "blue":255}' style="width:260px">
|
|
762
|
-
<button id="getColorAtSwitchOnDayTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
763
|
-
</div>
|
|
764
|
-
<div class="form-row">
|
|
765
|
-
<label for="node-input-enableDayNightLighting" style="width:260px;">
|
|
766
|
-
<i class="fa fa-clone"></i> Night Lighting
|
|
767
|
-
</label>
|
|
768
|
-
<select id="node-input-enableDayNightLighting">
|
|
769
|
-
<option value="yes">Yes</option>
|
|
770
|
-
<option value="no">No</option>
|
|
771
|
-
</select>
|
|
772
|
-
</div>
|
|
773
|
-
|
|
774
|
-
<div id="DivEnableDayNightLighting">
|
|
775
|
-
<div class="form-row">
|
|
776
|
-
<label for="node-input-colorAtSwitchOnNightTime" style="width:260px">
|
|
777
|
-
<i class="fa fa-moon-o"></i> Switch On color/brigh. at Night
|
|
778
|
-
</label>
|
|
779
|
-
<input type="text" id="node-input-colorAtSwitchOnNightTime"
|
|
780
|
-
placeholder='Example {"red":100, "green":0, "blue":50}' style="width:260px">
|
|
781
|
-
<button id="getColorAtSwitchOnNightTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
782
|
-
</div>
|
|
783
|
-
<div class="form-row">
|
|
784
|
-
<label for="node-input-nameDaylightSensor" style="width:110px;"><i class="fa fa-clock-o"></i>
|
|
785
|
-
Day/Night</label>
|
|
786
|
-
|
|
787
|
-
<label for="node-input-GADaylightSensor" style="width:20px;">GA</label>
|
|
788
|
-
<input type="text" id="node-input-GADaylightSensor" placeholder="Ex: 1/1/1"
|
|
789
|
-
style="width:70px;margin-left: 5px; text-align: left;">
|
|
790
|
-
|
|
791
|
-
<label for="node-input-dptDaylightSensor"
|
|
792
|
-
style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
793
|
-
<select id="node-input-dptDaylightSensor" style="width:140px;"></select>
|
|
794
|
-
|
|
795
|
-
<label for="node-input-nameDaylightSensor" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
796
|
-
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
797
|
-
<input type="text" id="node-input-nameDaylightSensor"
|
|
798
|
-
style="width:190px;margin-left: 5px; text-align: left;">
|
|
799
|
-
</div>
|
|
800
|
-
<div class="form-row">
|
|
801
|
-
<label style="width:170px" for="node-input-invertDayNight">
|
|
802
|
-
<i class="fa fa-shuffle"></i> Invert day/night values
|
|
803
|
-
</label>
|
|
804
|
-
<input type="checkbox" id="node-input-invertDayNight"
|
|
805
|
-
style="display:inline-block; width:auto; vertical-align:top;" />
|
|
806
|
-
|
|
807
|
-
</div>
|
|
808
|
-
</div>
|
|
809
|
-
</div>
|
|
783
|
+
</div>
|
|
784
|
+
<div id="divEnableDayNightLighting">
|
|
810
785
|
<div class="form-row">
|
|
811
|
-
<label for="node-input-
|
|
812
|
-
<i class="fa fa-
|
|
786
|
+
<label for="node-input-colorAtSwitchOnNightTime" style="width:260px">
|
|
787
|
+
<i class="fa fa-moon-o"></i> Switch On color/brigh. at Night
|
|
813
788
|
</label>
|
|
814
|
-
<input type="text" id="node-input-
|
|
789
|
+
<input type="text" id="node-input-colorAtSwitchOnNightTime"
|
|
790
|
+
placeholder='Example {"red":100, "green":0, "blue":50}' style="width:260px">
|
|
791
|
+
<button id="getColorAtSwitchOnNightTimeButton" type="button" class="red-ui-button">Get current</button>
|
|
815
792
|
</div>
|
|
816
793
|
<div class="form-row">
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
794
|
+
<label for="node-input-nameDaylightSensor" style="width:110px;"><i class="fa fa-clock-o"></i>
|
|
795
|
+
Day/Night</label>
|
|
796
|
+
<label for="node-input-GADaylightSensor" style="width:20px;">GA</label>
|
|
797
|
+
<input type="text" id="node-input-GADaylightSensor" placeholder="Ex: 1/1/1"
|
|
798
|
+
style="width:70px;margin-left: 5px; text-align: left;">
|
|
799
|
+
|
|
800
|
+
<label for="node-input-dptDaylightSensor"
|
|
801
|
+
style="width:40px; margin-left: 0px; text-align: right;">DPT</label>
|
|
802
|
+
<select id="node-input-dptDaylightSensor" style="width:140px;"></select>
|
|
803
|
+
|
|
804
|
+
<label for="node-input-nameDaylightSensor" style="width:50px; margin-left: 0px; text-align: right;"><span
|
|
805
|
+
data-i18n="knxUltimateHueLight.node-input-name"></span></label>
|
|
806
|
+
<input type="text" id="node-input-nameDaylightSensor"
|
|
807
|
+
style="width:190px;margin-left: 5px; text-align: left;">
|
|
823
808
|
</div>
|
|
824
809
|
<div class="form-row">
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
810
|
+
<label style="width:170px" for="node-input-invertDayNight">
|
|
811
|
+
<i class="fa fa-shuffle"></i> Invert day/night values
|
|
812
|
+
</label>
|
|
813
|
+
<input type="checkbox" id="node-input-invertDayNight"
|
|
814
|
+
style="display:inline-block; width:auto; vertical-align:top;" />
|
|
815
|
+
</div>
|
|
816
|
+
</div>
|
|
817
|
+
</div>
|
|
818
|
+
<br />
|
|
819
|
+
<div class="form-row">
|
|
820
|
+
<label for="node-input-dimSpeed" style="width:260px">
|
|
821
|
+
<i class="fa fa-bolt"></i> Dim Speed (ms)
|
|
822
|
+
</label>
|
|
823
|
+
<input type="text" id="node-input-dimSpeed" placeholder='Default is 5000' style="width:260px">
|
|
824
|
+
</div>
|
|
825
|
+
<div class="form-row">
|
|
826
|
+
<label for="node-input-minDimLevelLight" style="width:260px;">
|
|
827
|
+
<i class="fa fa-clone"></i> Min Dim Brightness
|
|
828
|
+
</label>
|
|
829
|
+
<select id="node-input-minDimLevelLight">
|
|
830
|
+
<option value="useHueLightLevel">Use minimum brightness specified in the HUE light</option>
|
|
831
|
+
</select>
|
|
832
|
+
</div>
|
|
833
|
+
<div class="form-row">
|
|
834
|
+
<label for="node-input-maxDimLevelLight" style="width:260px;">
|
|
835
|
+
<i class="fa fa-clone"></i> Max Dim Brightness
|
|
836
|
+
</label>
|
|
837
|
+
<select id="node-input-maxDimLevelLight"></select>
|
|
838
|
+
</div>
|
|
831
839
|
</p>
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
<br/>
|
|
840
|
+
</div>
|
|
841
|
+
|
|
842
|
+
<br/>
|
|
835
843
|
</script>
|
|
836
844
|
|
|
837
845
|
<script type="text/markdown" data-help-name="knxUltimateHueLight">
|
|
838
|
-
<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>
|
|
839
|
-
|
|
840
|
-
**General**
|
|
841
|
-
|Property|Description|
|
|
842
|
-
|--|--|
|
|
843
|
-
| KNX GW | Select the KNX gateway to be used |
|
|
844
|
-
| HUE Bridge | Select the HUE Bridge to be used |
|
|
845
|
-
| Name | HUE light or HUE grouped light to be used. The avaiable lights and groups start showing up while you're typing.|
|
|
846
|
-
|
|
847
|
-
<br/>
|
|
848
|
-
|
|
849
|
-
**OPTIONS**
|
|
850
|
-
|
|
851
|
-
Here you can choose the KNX addresses to be linked to the avaiable HUE light commands/states.<br/>
|
|
852
|
-
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.
|
|
853
|
-
|
|
854
|
-
**Switching**
|
|
855
|
-
|Property|Description|
|
|
856
|
-
|--|--|
|
|
857
|
-
| Control | This GA is used to turn on/off the HUE light via a boolean KNX value true/false|
|
|
858
|
-
| Status | Link this to the light's switch status group address|
|
|
859
|
-
|
|
860
|
-
<br/>
|
|
861
|
-
|
|
862
|
-
**Dim/Brightness**
|
|
863
|
-
|Property|Description|
|
|
864
|
-
|--|--|
|
|
865
|
-
| Control | Relative DIM the HUE light. You can set the dimming speed in the
|
|
866
|
-
| Control % | Changes the absolute HUE light's brightness (0-100%)|
|
|
867
|
-
| Status| Link this to the light's brightness status group address |
|
|
868
|
-
|
|
869
|
-
<br/>
|
|
870
|
-
|
|
871
|
-
**Tunable white**
|
|
872
|
-
|Property|Description|
|
|
873
|
-
|--|--|
|
|
874
|
-
| Control| Changes the HUE light's white temperature, using DPT 3.007 dimming. You can set the dimming speed in the
|
|
875
|
-
| 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.|
|
|
876
|
-
| Status | Link this to the light temperature status group address. Datapoint is 5.001 absolute value. 0 is full warm, 100 is full cold.|
|
|
877
|
-
|
|
878
|
-
<br/>
|
|
879
|
-
|
|
880
|
-
**Colors**
|
|
881
|
-
|Property|Description|
|
|
882
|
-
|--|--|
|
|
883
|
-
| Control | This command is used to change the HUE light's color. Accepted datapoint is RGB triplet (r,g,b). The node handles the gamut color correction. As soon as you send a color KNX telegran, the light turns on and sets color and brightness, derived from the brightness human perception. As soon as you send a KNX telegram with r,g,b set to zero, the light turns off |
|
|
884
|
-
| Status | Link this to the light's color status group address. Accepted datapoint is RGB triplet (r,g,b)|
|
|
885
|
-
|
|
886
|
-
<br/>
|
|
887
|
-
|
|
888
|
-
**Effects**
|
|
889
|
-
|Property|Description|
|
|
890
|
-
|--|--|
|
|
891
|
-
| Blink |
|
|
892
|
-
| Color Cycle |
|
|
893
|
-
|
|
894
|
-
<br/>
|
|
895
|
-
|
|
896
|
-
**Behaviour**
|
|
897
|
-
|
|
898
|
-
|Property|Description|
|
|
899
|
-
|
|
900
|
-
| KNX Brightness Status
|
|
901
|
-
| Specify switch on brightness
|
|
902
|
-
| Switch On - color/brightness
|
|
903
|
-
| Night Lighting
|
|
904
|
-
| 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 }**
|
|
905
|
-
| Day/Night
|
|
906
|
-
| Invert day/night values
|
|
907
|
-
| Dim Speed (ms)
|
|
908
|
-
| Min Dim brightness
|
|
909
|
-
| Max Dim brightness
|
|
910
|
-
|
|
911
|
-
### Note
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
846
|
+
<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>
|
|
847
|
+
|
|
848
|
+
**General**
|
|
849
|
+
|Property|Description|
|
|
850
|
+
|--|--|
|
|
851
|
+
| KNX GW | Select the KNX gateway to be used |
|
|
852
|
+
| HUE Bridge | Select the HUE Bridge to be used |
|
|
853
|
+
| Name | HUE light or HUE grouped light to be used. The avaiable lights and groups start showing up while you're typing.|
|
|
854
|
+
|
|
855
|
+
<br/>
|
|
856
|
+
|
|
857
|
+
**OPTIONS**
|
|
858
|
+
|
|
859
|
+
Here you can choose the KNX addresses to be linked to the avaiable HUE light commands/states.<br/>
|
|
860
|
+
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.
|
|
861
|
+
|
|
862
|
+
**Switching**
|
|
863
|
+
|Property|Description|
|
|
864
|
+
|--|--|
|
|
865
|
+
| Control | This GA is used to turn on/off the HUE light via a boolean KNX value true/false|
|
|
866
|
+
| Status | Link this to the light's switch status group address|
|
|
867
|
+
|
|
868
|
+
<br/>
|
|
869
|
+
|
|
870
|
+
**Dim/Brightness**
|
|
871
|
+
|Property|Description|
|
|
872
|
+
|--|--|
|
|
873
|
+
| Control | Relative DIM the HUE light. You can set the dimming speed in the **_Behaviour_** tab. |
|
|
874
|
+
| Control % | Changes the absolute HUE light's brightness (0-100%)|
|
|
875
|
+
| Status| Link this to the light's brightness status group address |
|
|
876
|
+
|
|
877
|
+
<br/>
|
|
878
|
+
|
|
879
|
+
**Tunable white**
|
|
880
|
+
|Property|Description|
|
|
881
|
+
|--|--|
|
|
882
|
+
| Control| Changes the HUE light's white temperature, using DPT 3.007 dimming. You can set the dimming speed in the **_Behaviour_** tab.|
|
|
883
|
+
| 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.|
|
|
884
|
+
| Status | Link this to the light temperature status group address. Datapoint is 5.001 absolute value. 0 is full warm, 100 is full cold.|
|
|
885
|
+
|
|
886
|
+
<br/>
|
|
887
|
+
|
|
888
|
+
**Colors**
|
|
889
|
+
|Property|Description|
|
|
890
|
+
|--|--|
|
|
891
|
+
| Control | This command is used to change the HUE light's color. Accepted datapoint is RGB triplet (r,g,b). The node handles the gamut color correction. As soon as you send a color KNX telegran, the light turns on and sets color and brightness, derived from the brightness human perception. As soon as you send a KNX telegram with r,g,b set to zero, the light turns off |
|
|
892
|
+
| Status | Link this to the light's color status group address. Accepted datapoint is RGB triplet (r,g,b)|
|
|
893
|
+
|
|
894
|
+
<br/>
|
|
895
|
+
|
|
896
|
+
**Effects**
|
|
897
|
+
|Property|Description|
|
|
898
|
+
|--|--|
|
|
899
|
+
| Blink | _true_ Blink the light, _false_ Stop blinking. Blinks the light on and off. Useful for signalling. Works with all HUE lights. |
|
|
900
|
+
| Color Cycle | _true_ start cycle, _false_ Stop cycle. Randomly changes the HUE light's color at regular interval. Works with all HUE lights having color capabilities. The color effect will start 10 seconds after set. |
|
|
901
|
+
|
|
902
|
+
<br/>
|
|
903
|
+
|
|
904
|
+
**Behaviour**
|
|
905
|
+
|
|
906
|
+
| Property | Description |
|
|
907
|
+
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
908
|
+
| KNX Brightness Status | Updates the KNX brightness group address 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)` |
|
|
909
|
+
| Specify switch on brightness | It enables the brightness value to follow the on/off status of the light. If you change the HUE brightness value to 0% (from the HUE App), an "off" telegram is also sent to the KNX bus; if you set it other than 0%, an "on" telegram is also sent to the KNX bus. This is valid also vice-versa: if you change the brightness via KNX bus, the HUE on/off value is also sent to the lamp. If you set it to **No**, the previous HUE light brightness value is retained. Default value is **Yes**. |
|
|
910
|
+
| 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 }** |
|
|
911
|
+
| 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_. |
|
|
912
|
+
| 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 }** |
|
|
913
|
+
| Day/Night | Select the group address used to set the day/night behaviour. The group address value is _true_ if daytime, _false_ if nighttime. |
|
|
914
|
+
| Invert day/night values | Invert the values of _Day/Night_ group address. Default value is **unchecked**. |
|
|
915
|
+
| 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%. |
|
|
916
|
+
| Min Dim brightness | Tha Minimum brightness that the lamp can reach. For example, if you are dimming the light down, the light will stop dimming at the specified brightness %. |
|
|
917
|
+
| Max Dim brightness | Tha Maximum brightness that the lamp can reach. For example, if you are dimming the light up, the light will stop dimming at the specified brightness %. |
|
|
918
|
+
|
|
919
|
+
### Note
|
|
920
|
+
|
|
921
|
+
The Dimming function works in **KNX mode `start` and `stop`**. To start dimming, send only one "start" KNX telegram. To stop dimming, send a "stop" KNX telegram. Please **remember that**, when you set your wall swiches properties.
|
|
922
|
+
|
|
923
|
+
<br/>
|
|
924
|
+
|
|
925
|
+
[Find it useful?](https://www.paypal.me/techtoday)
|
|
926
|
+
|
|
927
|
+
<br/>
|
|
919
928
|
</script>
|