node-red-contrib-knx-ultimate 4.0.5 → 4.0.6

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 CHANGED
@@ -6,7 +6,10 @@
6
6
 
7
7
  # CHANGELOG
8
8
 
9
- **Version 4.0.4** - September 2025<br/>
9
+ **Version 4.0.6** - September 2025<br/>
10
+ - Fixed regression in automatic datapoint selection, based on group address DPT.<br/>
11
+
12
+ **Version 4.0.5** - September 2025<br/>
10
13
  - NEW: You have now the choide to select multiple modes to authenticate to a KNX Gateway.<br/>
11
14
 
12
15
  **Version 4.0.4** - September 2025<br/>
@@ -1532,7 +1532,7 @@ module.exports = (RED) => {
1532
1532
  try {
1533
1533
  jsValue = dptlib.fromBuffer(_Rawvalue, dpt);
1534
1534
  if (jsValue === null) {
1535
- node.sysLogger?.error(
1535
+ node.sysLogger?.warn(
1536
1536
  "buildInputMessage: received a wrong datagram form KNX BUS, from device " +
1537
1537
  _srcGA +
1538
1538
  " Destination " +
@@ -417,9 +417,12 @@
417
417
  try { sDevName = sDevName.substr(sDevName.indexOf(")") + 1).trim(); } catch (error) { }
418
418
  $('#node-input-name').val(sDevName);
419
419
  var optVal = $("#node-input-dpt option:contains('" + (ui.item.dpt || '').trim() + "')").attr('value');
420
- // Select the option value
421
- $("#node-input-dpt").val(optVal);
422
- $("#node-input-dpt").trigger("change");
420
+ var $dptSelect = $("#node-input-dpt");
421
+ if (optVal !== undefined && optVal !== null) {
422
+ $dptSelect.val(optVal).trigger('change');
423
+ } else {
424
+ $dptSelect.trigger('change');
425
+ }
423
426
  // Persist secure flag for dynamic icon
424
427
  try {
425
428
  $("#node-input-gaSecure").val(ui.item.isSecure ? 'true' : 'false');
@@ -946,4 +949,4 @@
946
949
  </div>
947
950
  </div>
948
951
  <br /><br />
949
- </script>
952
+ </script>
@@ -106,8 +106,12 @@
106
106
  }
107
107
  $('#node-input-namebatterysensor').val(sDevName);
108
108
  var optVal = $("#node-input-dptbatterysensor option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
109
- // Select the option value
110
- $("#node-input-dptbatterysensor").val(optVal);
109
+ var $dptSelect = $("#node-input-dptbatterysensor");
110
+ if (optVal !== undefined && optVal !== null) {
111
+ $dptSelect.val(optVal).trigger('change');
112
+ } else {
113
+ $dptSelect.trigger('change');
114
+ }
111
115
  }
112
116
  }).focus(function () {
113
117
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -243,4 +247,3 @@
243
247
 
244
248
  </script>
245
249
 
246
-
@@ -144,8 +144,12 @@
144
144
  }
145
145
  $('#node-input-nameDim').val(sDevName);
146
146
  var optVal = $("#node-input-dptrepeat option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
147
- // Select the option value
148
- $("#node-input-dptrepeat").val(optVal);
147
+ var $dptSelect = $("#node-input-dptrepeat");
148
+ if (optVal !== undefined && optVal !== null) {
149
+ $dptSelect.val(optVal).trigger('change');
150
+ } else {
151
+ $dptSelect.trigger('change');
152
+ }
149
153
  }
150
154
  }).focus(function () {
151
155
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -194,8 +198,12 @@
194
198
  }
195
199
  $('#node-input-nameshort_release').val(sDevName);
196
200
  var optVal = $("#node-input-dptshort_release option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
197
- // Select the option value
198
- $("#node-input-dptshort_release").val(optVal);
201
+ var $dptSelect = $("#node-input-dptshort_release");
202
+ if (optVal !== undefined && optVal !== null) {
203
+ $dptSelect.val(optVal).trigger('change');
204
+ } else {
205
+ $dptSelect.trigger('change');
206
+ }
199
207
  }
200
208
  }).focus(function () {
201
209
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -227,8 +235,12 @@
227
235
  }
228
236
  $('#node-input-nameshort_releaseStatus').val(sDevName);
229
237
  var optVal = $("#node-input-dptshort_releaseStatus option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
230
- // Select the option value
231
- $("#node-input-dptshort_releaseStatus").val(optVal);
238
+ var $dptSelect = $("#node-input-dptshort_releaseStatus");
239
+ if (optVal !== undefined && optVal !== null) {
240
+ $dptSelect.val(optVal).trigger('change');
241
+ } else {
242
+ $dptSelect.trigger('change');
243
+ }
232
244
  }
233
245
  }).focus(function () {
234
246
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -261,8 +273,12 @@
261
273
  }
262
274
  $('#node-input-namedouble_short_release').val(sDevName);
263
275
  var optVal = $("#node-input-dptdouble_short_release option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
264
- // Select the option value
265
- $("#node-input-dptdouble_short_release").val(optVal);
276
+ var $dptSelect = $("#node-input-dptdouble_short_release");
277
+ if (optVal !== undefined && optVal !== null) {
278
+ $dptSelect.val(optVal).trigger('change');
279
+ } else {
280
+ $dptSelect.trigger('change');
281
+ }
266
282
  }
267
283
  }).focus(function () {
268
284
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -294,8 +310,12 @@
294
310
  }
295
311
  $('#node-input-namedouble_short_releaseStatus').val(sDevName);
296
312
  var optVal = $("#node-input-dptdouble_short_releaseStatus option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
297
- // Select the option value
298
- $("#node-input-dptdouble_short_releaseStatus").val(optVal);
313
+ var $dptSelect = $("#node-input-dptdouble_short_releaseStatus");
314
+ if (optVal !== undefined && optVal !== null) {
315
+ $dptSelect.val(optVal).trigger('change');
316
+ } else {
317
+ $dptSelect.trigger('change');
318
+ }
299
319
  }
300
320
  }).focus(function () {
301
321
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -460,5 +480,3 @@
460
480
 
461
481
 
462
482
  </script>
463
-
464
-
@@ -115,8 +115,12 @@
115
115
  }
116
116
  $('#node-input-namecontact').val(sDevName)
117
117
  var optVal = $('#node-input-dptcontact option:contains(\'' + ui.item.label.split('#')[2].trim() + '\')').attr('value')
118
- // Select the option value
119
- $('#node-input-dptcontact').val(optVal)
118
+ var $dptSelect = $('#node-input-dptcontact')
119
+ if (optVal !== undefined && optVal !== null) {
120
+ $dptSelect.val(optVal).trigger('change')
121
+ } else {
122
+ $dptSelect.trigger('change')
123
+ }
120
124
  },
121
125
  }).focus(function () {
122
126
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -241,4 +245,3 @@
241
245
  <br />
242
246
  </script>
243
247
 
244
-
@@ -233,8 +233,13 @@
233
233
  } catch (error) { }
234
234
  $(_destinationWidgetName).val(sDevName);
235
235
  var optVal = $(_destinationWidgetDPT + " option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr("value");
236
- // Select the option value
237
- $(_destinationWidgetDPT).val(optVal);
236
+ const $dptSelect = $(_destinationWidgetDPT);
237
+ if (optVal !== undefined && optVal !== null) {
238
+ $dptSelect.val(optVal).trigger('change');
239
+ } else {
240
+ // Ensure downstream widgets refresh even when the DPT is missing
241
+ $dptSelect.trigger('change');
242
+ }
238
243
  },
239
244
  }).focus(function () {
240
245
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -1485,4 +1490,3 @@
1485
1490
  </script>
1486
1491
 
1487
1492
 
1488
-
@@ -105,8 +105,12 @@
105
105
  }
106
106
  $('#node-input-namelightsensor').val(sDevName);
107
107
  var optVal = $("#node-input-dptlightsensor option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
108
- // Select the option value
109
- $("#node-input-dptlightsensor").val(optVal);
108
+ var $dptSelect = $("#node-input-dptlightsensor");
109
+ if (optVal !== undefined && optVal !== null) {
110
+ $dptSelect.val(optVal).trigger('change');
111
+ } else {
112
+ $dptSelect.trigger('change');
113
+ }
110
114
  }
111
115
  }).focus(function () {
112
116
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -245,4 +249,3 @@
245
249
  </script>
246
250
 
247
251
 
248
-
@@ -104,8 +104,12 @@
104
104
  }
105
105
  $('#node-input-namemotion').val(sDevName);
106
106
  var optVal = $("#node-input-dptmotion option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
107
- // Select the option value
108
- $("#node-input-dptmotion").val(optVal);
107
+ var $dptSelect = $("#node-input-dptmotion");
108
+ if (optVal !== undefined && optVal !== null) {
109
+ $dptSelect.val(optVal).trigger('change');
110
+ } else {
111
+ $dptSelect.trigger('change');
112
+ }
109
113
  }
110
114
  }).focus(function () {
111
115
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -233,4 +237,3 @@
233
237
 
234
238
  </script>
235
239
 
236
-
@@ -147,8 +147,12 @@
147
147
  }
148
148
  $('#node-input-namescene').val(sDevName);
149
149
  var optVal = $("#node-input-dptscene option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
150
- // Select the option value
151
- $("#node-input-dptscene").val(optVal);
150
+ var $dptSelect = $("#node-input-dptscene");
151
+ if (optVal !== undefined && optVal !== null) {
152
+ $dptSelect.val(optVal).trigger('change');
153
+ } else {
154
+ $dptSelect.trigger('change');
155
+ }
152
156
  ShowHideValScene();
153
157
  }
154
158
  }).focus(function () {
@@ -184,8 +188,12 @@
184
188
  }
185
189
  $('#node-input-namesceneStatus').val(sDevName);
186
190
  var optVal = $("#node-input-dptsceneStatus option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
187
- // Select the option value
188
- $("#node-input-dptsceneStatus").val(optVal);
191
+ var $dptSelect = $("#node-input-dptsceneStatus");
192
+ if (optVal !== undefined && optVal !== null) {
193
+ $dptSelect.val(optVal).trigger('change');
194
+ } else {
195
+ $dptSelect.trigger('change');
196
+ }
189
197
  ShowHideValScene();
190
198
  }
191
199
  }).focus(function () {
@@ -221,8 +229,12 @@
221
229
  }
222
230
  $('#node-input-namesceneMulti').val(sDevName);
223
231
  var optVal = $("#node-input-dptsceneMulti option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
224
- // Select the option value
225
- $("#node-input-dptsceneMulti").val(optVal);
232
+ var $dptSelect = $("#node-input-dptsceneMulti");
233
+ if (optVal !== undefined && optVal !== null) {
234
+ $dptSelect.val(optVal).trigger('change');
235
+ } else {
236
+ $dptSelect.trigger('change');
237
+ }
226
238
  ShowHideValScene();
227
239
  }
228
240
  }).focus(function () {
@@ -589,5 +601,3 @@
589
601
  </div> <!-- // End TABS -->
590
602
 
591
603
  </script>
592
-
593
-
@@ -107,8 +107,12 @@
107
107
  }
108
108
  $('#node-input-namerepeat').val(sDevName);
109
109
  var optVal = $("#node-input-dptrepeat option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
110
- // Select the option value
111
- $("#node-input-dptrepeat").val(optVal);
110
+ var $dptSelect = $("#node-input-dptrepeat");
111
+ if (optVal !== undefined && optVal !== null) {
112
+ $dptSelect.val(optVal).trigger('change');
113
+ } else {
114
+ $dptSelect.trigger('change');
115
+ }
112
116
  }
113
117
  }).focus(function () {
114
118
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -235,4 +239,3 @@
235
239
 
236
240
  </script>
237
241
 
238
-
@@ -105,8 +105,12 @@
105
105
  }
106
106
  $('#node-input-nametemperaturesensor').val(sDevName);
107
107
  var optVal = $("#node-input-dpttemperaturesensor option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
108
- // Select the option value
109
- $("#node-input-dpttemperaturesensor").val(optVal);
108
+ var $dptSelect = $("#node-input-dpttemperaturesensor");
109
+ if (optVal !== undefined && optVal !== null) {
110
+ $dptSelect.val(optVal).trigger('change');
111
+ } else {
112
+ $dptSelect.trigger('change');
113
+ }
110
114
  }
111
115
  }).focus(function () {
112
116
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -243,4 +247,3 @@
243
247
 
244
248
  </script>
245
249
 
246
-
@@ -106,8 +106,12 @@
106
106
  }
107
107
  $('#node-input-namezigbeeconnectivity').val(sDevName);
108
108
  var optVal = $("#node-input-dptzigbeeconnectivity option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
109
- // Select the option value
110
- $("#node-input-dptzigbeeconnectivity").val(optVal);
109
+ var $dptSelect = $("#node-input-dptzigbeeconnectivity");
110
+ if (optVal !== undefined && optVal !== null) {
111
+ $dptSelect.val(optVal).trigger('change');
112
+ } else {
113
+ $dptSelect.trigger('change');
114
+ }
111
115
  }
112
116
  }).focus(function () {
113
117
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -243,4 +247,3 @@
243
247
 
244
248
  </script>
245
249
 
246
-
@@ -106,8 +106,12 @@
106
106
  }
107
107
  $('#node-input-namedevice_software_update').val(sDevName);
108
108
  var optVal = $("#node-input-dptdevice_software_update option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
109
- // Select the option value
110
- $("#node-input-dptdevice_software_update").val(optVal);
109
+ var $dptSelect = $("#node-input-dptdevice_software_update");
110
+ if (optVal !== undefined && optVal !== null) {
111
+ $dptSelect.val(optVal).trigger('change');
112
+ } else {
113
+ $dptSelect.trigger('change');
114
+ }
111
115
  }
112
116
  }).focus(function () {
113
117
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -243,4 +247,3 @@
243
247
 
244
248
  </script>
245
249
 
246
-
@@ -141,9 +141,12 @@
141
141
  }
142
142
 
143
143
  var optVal = $("#node-input-dpt option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
144
- // Select the option value
145
- $("#node-input-" + _DPT).val(optVal);
146
- $("#node-input-" + _DPT).trigger("change");
144
+ var $dptSelect = $("#node-input-" + _DPT);
145
+ if (optVal !== undefined && optVal !== null) {
146
+ $dptSelect.val(optVal).trigger('change');
147
+ } else {
148
+ $dptSelect.trigger('change');
149
+ }
147
150
  }
148
151
  };
149
152
  return paramAutoComplete;
@@ -358,4 +361,3 @@
358
361
  </br>
359
362
  </script>
360
363
 
361
-
@@ -97,9 +97,12 @@
97
97
  }
98
98
  $('#node-input-name').val("Recall: " + sDevName + "/" + $('#node-input-name').val().split("/")[1]);
99
99
  var optVal = $("#node-input-dpt option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
100
- // Select the option value
101
- $("#node-input-dpt").val(optVal);
102
- $("#node-input-dpt").trigger("change");
100
+ var $dptSelect = $("#node-input-dpt");
101
+ if (optVal !== undefined && optVal !== null) {
102
+ $dptSelect.val(optVal).trigger('change');
103
+ } else {
104
+ $dptSelect.trigger('change');
105
+ }
103
106
  }
104
107
  }).focus(function () {
105
108
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -222,9 +225,12 @@
222
225
  }
223
226
  $('#node-input-name').val($('#node-input-name').val().split("/")[0] + "/Save: " + sDevName);
224
227
  var optVal = $("#node-input-dptSave option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
225
- // Select the option value
226
- $("#node-input-dptSave").val(optVal);
227
- $("#node-input-dptSave").trigger("change");
228
+ var $dptSelect = $("#node-input-dptSave");
229
+ if (optVal !== undefined && optVal !== null) {
230
+ $dptSelect.val(optVal).trigger('change');
231
+ } else {
232
+ $dptSelect.trigger('change');
233
+ }
228
234
  }
229
235
  }).focus(function () {
230
236
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -363,7 +369,12 @@
363
369
  } catch (error) {
364
370
  }
365
371
  var optVal = $(".rowRuleDPT option:contains('" + ui.item.label.split("#")[2].trim() + "')").attr('value');
366
- oDPTField.val(optVal);
372
+ var $dptSelect = oDPTField;
373
+ if (optVal !== undefined && optVal !== null) {
374
+ $dptSelect.val(optVal).trigger('change');
375
+ } else {
376
+ $dptSelect.trigger('change');
377
+ }
367
378
  }
368
379
  }).focus(function () {
369
380
  $(this).autocomplete('search', $(this).val() + 'exactmatch');
@@ -493,5 +504,3 @@
493
504
  </div>
494
505
 
495
506
  </script>
496
-
497
-
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "engines": {
4
4
  "node": ">=20.18.1"
5
5
  },
6
- "version": "4.0.5",
6
+ "version": "4.0.6",
7
7
  "description": "Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control and ETS group address importer. Easy to use and highly configurable.",
8
8
  "dependencies": {
9
9
  "binary-parser": "2.2.1",