node-red-contrib-knx-ultimate 3.3.3 → 3.3.5

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,9 @@
6
6
 
7
7
  # CHANGELOG
8
8
 
9
+ **Version 3.3.3** - December 2024<br/>
10
+ - KNX Alerter Node: now the node works even if no ETS file has been imported.<br/>
11
+
9
12
  **Version 3.3.3** - November 2024<br/>
10
13
  - KNX Config Node: Automatic KNX Gateway discover in the gateway node config window.<br/>
11
14
  - KNX Engine: new: new telegram sequencer waiter, for more accurate timing in slow or sliggish computers.<br/>
@@ -61,6 +61,14 @@ module.exports = (RED) => {
61
61
  function commonFunctions() {
62
62
  var node = this;
63
63
 
64
+ // Gather infos about all interfaces on the lan and provides a static variable utils.aDiscoveredknxGateways
65
+ try {
66
+ require('./utils/utils').DiscoverKNXGateways()
67
+ } catch (error) {
68
+
69
+ }
70
+
71
+
64
72
 
65
73
  // 11/03/2020 Delete scene saved file, from html
66
74
  RED.httpAdmin.get('/knxultimateCheckHueConnected', (req, res) => {
@@ -119,8 +119,6 @@ module.exports = (RED) => {
119
119
  if (node.sysLogger !== undefined && node.sysLogger !== null) node.sysLogger.info("IP Protocol AUTO SET to " + node.hostProtocol + ", based on IP " + node.host);
120
120
  }
121
121
 
122
- // Gather infos about all interfaces on the lan and provides a static variable utils.aDiscoveredknxGateways
123
- utils.DiscoverKNXGateways()
124
122
 
125
123
  node.setAllClientsStatus = (_status, _color, _text) => {
126
124
  node.nodeClients.forEach((oClient) => {
@@ -17,6 +17,11 @@
17
17
  },
18
18
  inputs: 1,
19
19
  outputs: 3,
20
+ outputLabels: function (index) {
21
+ if (index === 0) return "Emits a message for each alerted device, at selectable intervals.";
22
+ if (index === 1) return "Emits a unique message containing all alerted devices.";
23
+ if (index === 2) return "Emits a message containing only the last alerted device.";
24
+ },
20
25
  icon: "node-alerter-icon.svg",
21
26
  label: function () {
22
27
  return (this.outputRBE == true ? "|rbe| " : "") + (this.name || this.topic || "KNX Alerter") + (this.inputRBE == true ? " |rbe|" : "")
@@ -235,4 +240,61 @@
235
240
  <p><span data-i18n="knxUltimateAlerter.other.add"></p>
236
241
  </div>
237
242
 
238
- </script>
243
+ </script>
244
+
245
+
246
+ <script type="text/markdown" data-help-name="knxUltimateAlerter">
247
+ With the Alerter node you can signal to a display or to the node-red-contrib-tts-ultimate node (audio feedback) if the selected devices are alerted, i.e. they have payload **true**.
248
+ The node issues messages at specified intervals (one message at a time) containing the details of each alerted device. For example, the node can tell you how many and which windows are open. <br/>
249
+ The node receives the values of the devices directly from the KNX BUS. Furthermore, you can send personalized messages to the node, not linked to KNX devices. <br/>
250
+ The example page explains how to use the node. <br/>
251
+
252
+ - **Gateway**
253
+
254
+ > KNX gateway selected. It is also possible not to select any gateway; in this case, only incoming messages to the node will be considered.
255
+
256
+
257
+ - **Name**
258
+
259
+ > Node name.
260
+
261
+ - **Alerting cycle start type**
262
+
263
+ > Here you can select the event that will skip the start of sending messages from alerted devices.
264
+
265
+ - **Interval between each MSG (in seconds)**
266
+
267
+ > Interval between each outgoing message from the node.
268
+
269
+ ## DEVICES TO MONITOR
270
+
271
+ Here you can add devices to monitor. <br/>
272
+ Enter the device name or its group address. <br/>
273
+
274
+ - **Read value of each device on connection/reconnect**
275
+
276
+ > On connection/reconnection, the node will send a 'read' request each device belonging to the list.
277
+
278
+ - **ADD button**
279
+
280
+ > Add a row to the list.
281
+
282
+ - **Device's rows**
283
+
284
+ > The first field is the group address (but you can also enter any text, which you can use with inbound messages, see the example page), the second is the device name **(MAX 14 CHARS)**, the third is the long device name.
285
+
286
+ - **DELETE button**
287
+
288
+ > Removes a device from the list.
289
+
290
+ <p>
291
+ <a href="https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/Alerter-Configuration" target="_blank"><i class="fa fa-info-circle"></i>&nbsp Config help</a><br/>
292
+ <a href="https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/SampleAlerter" target="_blank"><i class="fa fa-code"></i>&nbsp Samples</a>.
293
+ </p>
294
+
295
+ <p>
296
+ <a href="https://www.paypal.com/donate/?hosted_button_id=S8SKPUBSPK758" target="_blank">
297
+ <img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-knx-ultimate/master/img/CodiceQR.png' width='30%'>
298
+ </a>
299
+ </p>
300
+ </script>
@@ -16,7 +16,7 @@ module.exports = function (RED) {
16
16
  node.notifyreadrequest = false;
17
17
  node.notifyresponse = true;
18
18
  node.notifywrite = true; // Dont' remove this.
19
- node.initialread = false;
19
+ node.initialread = 0;
20
20
  node.outputtype = 'write';
21
21
  node.outputRBE = 'false';
22
22
  node.inputRBE = 'false';
@@ -30,9 +30,9 @@ module.exports = function (RED) {
30
30
  node.timerinterval = (config.timerinterval === undefined || config.timerinterval == '') ? '2' : config.timerinterval;
31
31
 
32
32
  if (config.initialreadGAInRules === undefined) {
33
- node.initialread = true;
33
+ node.initialread = 1;
34
34
  } else {
35
- node.initialread = config.initialreadGAInRules !== '0';
35
+ node.initialread = Number(config.initialreadGAInRules);
36
36
  }
37
37
 
38
38
  // Used to call the status update from the config node.
@@ -69,11 +69,6 @@ module.exports = function (RED) {
69
69
 
70
70
  // This function is called by the knx-ultimate config node, to output a msg.payload.
71
71
  node.handleSend = msg => {
72
- try {
73
- if (!msg.knx.dpt.startsWith('1.')) return;
74
- } catch (error) {
75
- return;
76
- }
77
72
  let bFound = false; // 24/04/2021 true if the cycle below found a match, otherwise false
78
73
 
79
74
  // Update the node.rules with the values taken from the file, if any, otherwise leave the default value
@@ -165,7 +160,9 @@ module.exports = function (RED) {
165
160
  try {
166
161
  // Check if it's a group address
167
162
  // const ret = Address.KNXAddress.createFromString(grpaddr, Address.KNXAddress.TYPE_GROUP)
168
- node.setLocalStatus({ fill: 'grey', shape: 'dot', text: 'Read', payload: '', GA: grpaddr, dpt: '', devicename: rule.devicename });
163
+ setTimeout(() => {
164
+ node.setLocalStatus({ fill: 'blue', shape: 'dot', text: 'Read', payload: '', GA: grpaddr, dpt: '', devicename: rule.devicename });
165
+ }, 500);
169
166
  node.serverKNX.sendKNXTelegramToKNXEngine({ grpaddr, payload: '', dpt: '', outputtype: 'read', nodecallerid: node.id });
170
167
  } catch (error) {
171
168
  node.setLocalStatus({ fill: 'grey', shape: 'dot', text: 'Not a KNX GA ' + error.message, payload: '', GA: grpaddr, dpt: '', devicename: rule.devicename });
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "engines": {
4
4
  "node": ">=16.0.0"
5
5
  },
6
- "version": "3.3.3",
6
+ "version": "3.3.5",
7
7
  "description": "Control your KNX 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",
@@ -1,14 +0,0 @@
1
- <script type="text/html" data-help-name="knxUltimateAlerter">
2
- <h1>KNX Ultimate - Alerter</h1>
3
-
4
- <p>
5
- <a href="https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/Alerter-Configuration" target="_blank"><i class="fa fa-info-circle"></i>&nbsp Config help</a><br/>
6
- <a href="https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/SampleAlerter" target="_blank"><i class="fa fa-code"></i>&nbsp Samples</a>.
7
- </p>
8
-
9
- <p>
10
- <a href="https://www.paypal.com/donate/?hosted_button_id=S8SKPUBSPK758" target="_blank">
11
- <img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-knx-ultimate/master/img/CodiceQR.png' width='30%'>
12
- </a>
13
- </p>
14
- </script>