node-red-contrib-knx-ultimate 4.3.13 → 4.3.16

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,6 +6,16 @@
6
6
 
7
7
  # CHANGELOG
8
8
 
9
+ **Version 4.3.16** - May 2026<br/>
10
+
11
+ - Docs/help/wiki: updated **KNX DateTime** help HTML and DateTime wiki pages (**EN/IT**) to document current `DPT 19.001` behavior based on JavaScript `Date`, additional input object fields (`msg.payload.dateTime` / `timestamp` / `epoch`), queued send while gateway is disconnected (latest pending only), and output metadata `msg.knxUltimateDateTime.date`.<br/>
12
+ - Bump knxultimate Engine to 5.5.7<br/>
13
+
14
+ **Version 4.3.15** - May 2026<br/>
15
+
16
+ - FIX: DPT dropdown in editor now remains open when clicking on an already populated datapoint field (no immediate close on mouse button release).<br/>
17
+ - Docs: added GitHub badges **Commit activity** and **Last commit** to the README header.<br/>
18
+
9
19
  **Version 4.3.13** - May 2026<br/>
10
20
 
11
21
  - Bump KNX Engine to 5.5.6<br/>
package/README.md CHANGED
@@ -7,6 +7,8 @@
7
7
  [![Node.js version][node-version-image]][npm-url]
8
8
  [![Node-RED Flow Library][flows-image]][flows-url]
9
9
  [![Docs][docs-image]][docs-url]
10
+ [![Commit activity][commit-activity-image]][commit-activity-url]
11
+ [![Last commit][last-commit-image]][last-commit-url]
10
12
  [![NPM downloads per month][npm-downloads-month-image]][npm-url]
11
13
  [![NPM downloads total][npm-downloads-total-image]][npm-url]
12
14
  [![MIT License][license-image]][license-url]
@@ -49,6 +51,10 @@
49
51
  [youtube-url]: https://www.youtube.com/channel/UCA9RsLps1IthT7fDSeUbRZw/playlists
50
52
  [docs-image]: https://img.shields.io/badge/Docs-GitHub%20Pages-2ea44f
51
53
  [docs-url]: https://supergiovane.github.io/node-red-contrib-knx-ultimate/
54
+ [commit-activity-image]: https://img.shields.io/github/commit-activity/m/Supergiovane/node-red-contrib-knx-ultimate?logo=github
55
+ [commit-activity-url]: https://github.com/Supergiovane/node-red-contrib-knx-ultimate/commits/master
56
+ [last-commit-image]: https://img.shields.io/github/last-commit/Supergiovane/node-red-contrib-knx-ultimate?logo=github
57
+ [last-commit-url]: https://github.com/Supergiovane/node-red-contrib-knx-ultimate/commits/master
52
58
  [github-image]: https://img.shields.io/badge/GitHub-Repository-000000
53
59
  [github-url]: https://github.com/Supergiovane/node-red-contrib-knx-ultimate
54
60
  [flows-image]: https://img.shields.io/badge/Node--RED-Flow%20Library-white?logo=nodered&logoColor=8F0000
@@ -10,6 +10,9 @@ It can send:
10
10
 
11
11
  You can configure one or more group addresses and the node will write to all configured outputs.
12
12
 
13
+ Note about **DPT 19.001**:
14
+ - the node starts from a JavaScript `Date` and converts it to KNX DateTime via the KNX engine.
15
+
13
16
  ## When it sends
14
17
 
15
18
  - **On deploy/startup** (optional, with delay).
@@ -26,6 +29,10 @@ Supported payloads:
26
29
  - a timestamp number (milliseconds since epoch)
27
30
  - a string accepted by `new Date("...")`
28
31
  - `"now"`
32
+ - an object with one of these fields:
33
+ - `msg.payload.dateTime`
34
+ - `msg.payload.timestamp`
35
+ - `msg.payload.epoch`
29
36
 
30
37
  Example:
31
38
 
@@ -34,12 +41,17 @@ msg.payload = new Date();
34
41
  return msg;
35
42
  ```
36
43
 
44
+ ## Gateway disconnected
45
+
46
+ If the KNX gateway is disconnected, the send is queued and sent automatically when the connection comes back.
47
+ The node keeps **only one pending request** (the latest one).
48
+
37
49
  ## Output
38
50
 
39
51
  The node emits one message per send:
40
52
  - `msg.payload`: the `Date` that has been written
41
53
  - `msg.sent`: array of `{ ga, dpt, name }`
42
54
  - `msg.reason`: `input`, `startup`, `periodic` or `button`
55
+ - `msg.knxUltimateDateTime.date`: date/time in ISO format (`toISOString()`)
43
56
 
44
57
  </script>
45
-
@@ -10,6 +10,9 @@ Può inviare:
10
10
 
11
11
  Puoi configurare uno o più indirizzi di gruppo: il nodo scrive su tutti quelli configurati.
12
12
 
13
+ Nota su **DPT 19.001**:
14
+ - il nodo parte da una `Date` JavaScript e la converte in telegramma KNX DateTime tramite l'engine KNX.
15
+
13
16
  ## Quando invia
14
17
 
15
18
  - **Al deploy/avvio** (opzionale, con ritardo).
@@ -26,6 +29,10 @@ Payload supportati:
26
29
  - numero timestamp (millisecondi dall'epoch)
27
30
  - stringa accettata da `new Date("...")`
28
31
  - `"now"`
32
+ - oggetto con uno di questi campi:
33
+ - `msg.payload.dateTime`
34
+ - `msg.payload.timestamp`
35
+ - `msg.payload.epoch`
29
36
 
30
37
  Esempio:
31
38
 
@@ -34,12 +41,17 @@ msg.payload = new Date();
34
41
  return msg;
35
42
  ```
36
43
 
44
+ ## Gateway non connesso
45
+
46
+ Se il gateway KNX non è connesso, l'invio viene messo in coda e parte appena torna la connessione.
47
+ Il nodo mantiene **una sola richiesta pendente** (l'ultima ricevuta).
48
+
37
49
  ## Output
38
50
 
39
51
  Il nodo emette un messaggio ad ogni invio:
40
52
  - `msg.payload`: la `Date` inviata
41
53
  - `msg.sent`: array di `{ ga, dpt, name }`
42
54
  - `msg.reason`: `input`, `startup`, `periodic` o `button`
55
+ - `msg.knxUltimateDateTime.date`: data/ora in formato ISO (`toISOString()`)
43
56
 
44
57
  </script>
45
-
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "engines": {
4
4
  "node": ">=20.18.1"
5
5
  },
6
- "version": "4.3.13",
6
+ "version": "4.3.16",
7
7
  "description": "Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control, ETS group address importer, KNX AI for diagnosticsand KNX routing between interfaces. Easy to use and highly configurable.",
8
8
  "files": [
9
9
  "nodes/",
@@ -19,7 +19,7 @@
19
19
  "dns-sync": "0.2.1",
20
20
  "google-translate-tts": "^0.3.0",
21
21
  "js-yaml": "4.1.1",
22
- "knxultimate": "5.5.6",
22
+ "knxultimate": "5.5.7",
23
23
  "lodash": "4.18.1",
24
24
  "node-color-log": "12.0.1",
25
25
  "ping": "0.4.4",
@@ -117,4 +117,4 @@
117
117
  "vite": "^7.1.3",
118
118
  "vue": "^3.5.21"
119
119
  }
120
- }
120
+ }
@@ -216,7 +216,11 @@ window.KNX_makeSelectSearchable = KNX_makeSelectSearchable;
216
216
  }
217
217
  this.element.on('focus.knxAutocomplete click.knxAutocomplete', function () {
218
218
  clearTimeout(self._knxAutoTimer)
219
- self._knxAutoTimer = setTimeout(function () { showAll() }, 0)
219
+ const isDptCombobox = $(this).hasClass('knx-dpt-combobox')
220
+ self._knxAutoTimer = setTimeout(function () {
221
+ // DPT comboboxes must keep the full dropdown open even when an existing value is clicked.
222
+ showAll(isDptCombobox ? '' : undefined)
223
+ }, 0)
220
224
  })
221
225
  this.element.on('mousedown.knxAutocomplete', function () {
222
226
  clearTimeout(self._knxAutoTimer)