smart-nodes 0.4.27 → 0.4.29
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 +13 -0
- package/README.md +11 -1
- package/compare/compare.js +68 -53
- package/compare/locales/de-DE/compare.html +4 -0
- package/compare/locales/en-US/compare.html +4 -0
- package/counter/counter.js +11 -0
- package/counter/locales/de-DE/counter.html +4 -0
- package/counter/locales/en-US/counter.html +4 -0
- package/delay/delay.js +7 -0
- package/delay/locales/de-DE/delay.html +4 -0
- package/delay/locales/en-US/delay.html +4 -0
- package/examples/mode-selector.json +225 -0
- package/examples/mode-selector.png +0 -0
- package/forwarder/forwarder.js +40 -26
- package/forwarder/locales/de-DE/forwarder.html +4 -0
- package/forwarder/locales/en-US/forwarder.html +4 -0
- package/heating-curve/heating-curve.js +8 -0
- package/heating-curve/locales/de-DE/heating-curve.html +4 -0
- package/heating-curve/locales/en-US/heating-curve.html +4 -0
- package/hysteresis/hysteresis.js +10 -0
- package/hysteresis/locales/de-DE/hysteresis.html +4 -0
- package/hysteresis/locales/en-US/hysteresis.html +4 -0
- package/light/light.js +22 -2
- package/light/locales/de-DE/light.html +5 -0
- package/light/locales/en-US/light.html +5 -0
- package/logic/logic.js +0 -1
- package/mixing-valve/locales/de-DE/mixing-valve.html +6 -2
- package/mixing-valve/locales/de-DE/mixing-valve.json +4 -0
- package/mixing-valve/locales/en-US/mixing-valve.html +6 -2
- package/mixing-valve/locales/en-US/mixing-valve.json +4 -0
- package/mixing-valve/mixing-valve.html +60 -22
- package/mixing-valve/mixing-valve.js +264 -25
- package/mode-selector/locales/de-DE/mode-selector.html +32 -0
- package/mode-selector/locales/de-DE/mode-selector.json +11 -0
- package/mode-selector/locales/en-US/mode-selector.html +32 -0
- package/mode-selector/locales/en-US/mode-selector.json +11 -0
- package/mode-selector/mode-selector.html +158 -0
- package/mode-selector/mode-selector.js +133 -0
- package/package.json +2 -1
- package/scene/locales/de-DE/scene.html +4 -0
- package/scene/locales/en-US/scene.html +4 -0
- package/scene/scene.html +0 -1
- package/scene/scene.js +9 -0
- package/scheduler/locales/de-DE/scheduler.html +4 -0
- package/scheduler/locales/en-US/scheduler.html +4 -0
- package/scheduler/scheduler.js +6 -0
- package/shutter/locales/de-DE/shutter.html +5 -0
- package/shutter/locales/en-US/shutter.html +5 -0
- package/shutter/shutter.js +7 -0
- package/shutter-complex/locales/de-DE/shutter-complex.html +5 -0
- package/shutter-complex/locales/en-US/shutter-complex.html +5 -0
- package/shutter-complex/shutter-complex.js +11 -0
- package/smart_helper.js +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -197,3 +197,16 @@
|
|
|
197
197
|
## Version 0.4.27:
|
|
198
198
|
|
|
199
199
|
- Fixed central node.
|
|
200
|
+
|
|
201
|
+
## Version 0.4.28:
|
|
202
|
+
|
|
203
|
+
- Added on and off topic to mixing-valve.
|
|
204
|
+
|
|
205
|
+
## Version 0.4.29:
|
|
206
|
+
|
|
207
|
+
- Improved light control percentage status text.
|
|
208
|
+
- Fixed logic node when common outputs is configured but one value is set to "send nothing".
|
|
209
|
+
- Mixing valve can now output as percentage directly or with open/close impulses.
|
|
210
|
+
- Mixing valve tries to guess the best position, when getting enabled.
|
|
211
|
+
- Added debug topic to all nodes, to see current values.
|
|
212
|
+
- Added new node "mode-selector".
|
package/README.md
CHANGED
|
@@ -219,5 +219,15 @@ This node countes up and down within a specified range.
|
|
|
219
219
|
### **Features:**
|
|
220
220
|
|
|
221
221
|
- Define min, max and step values.
|
|
222
|
-
- Set to a specific value
|
|
222
|
+
- Set to a specific value.
|
|
223
223
|
- Increment and decrement by default or by a given value.
|
|
224
|
+
|
|
225
|
+
## 18. Mode Selector
|
|
226
|
+
|
|
227
|
+
This node can define multiple modes which stores the last selected mode persitent.
|
|
228
|
+
|
|
229
|
+
### **Features:**
|
|
230
|
+
|
|
231
|
+
- Define custom modes.
|
|
232
|
+
- The first mode is the default on first start.
|
|
233
|
+
- Save last mode persistent and resend it at start, if wanted.
|
package/compare/compare.js
CHANGED
|
@@ -80,70 +80,85 @@ module.exports = function (RED)
|
|
|
80
80
|
{
|
|
81
81
|
helper.log(node, "handle topic:", msg);
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
let real_topic_number = helper.getTopicNumber(msg.topic);
|
|
85
|
-
if (real_topic_number == null || real_topic_number < 1 || real_topic_number > 2)
|
|
83
|
+
switch (msg.topic)
|
|
86
84
|
{
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
case "debug":
|
|
86
|
+
helper.nodeDebug(node, {
|
|
87
|
+
node_settings,
|
|
88
|
+
comparator,
|
|
89
|
+
out_true,
|
|
90
|
+
out_false,
|
|
91
|
+
send_only_change,
|
|
92
|
+
});
|
|
93
|
+
break;
|
|
94
|
+
|
|
95
|
+
default:
|
|
96
|
+
// Check if topic has a valid value
|
|
97
|
+
let real_topic_number = helper.getTopicNumber(msg.topic);
|
|
98
|
+
if (real_topic_number == null || real_topic_number < 1 || real_topic_number > 2)
|
|
99
|
+
{
|
|
100
|
+
helper.warn(this, "Topic has to be 1 or 2, sended: " + msg.topic);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
90
103
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
// check if payload has a valid value
|
|
105
|
+
let num = parseFloat(msg.payload);
|
|
106
|
+
if (Number.isNaN(num))
|
|
107
|
+
{
|
|
108
|
+
helper.warn(this, "Payload has to be numeric: " + msg.payload);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
98
111
|
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
// Save new value
|
|
113
|
+
node_settings.values[real_topic_number - 1] = num;
|
|
101
114
|
|
|
102
|
-
|
|
115
|
+
let result = getResult();
|
|
103
116
|
|
|
104
|
-
|
|
117
|
+
helper.log(node, "getResult:", result, node_settings);
|
|
105
118
|
|
|
106
|
-
|
|
119
|
+
let out_msg = null;
|
|
107
120
|
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
// Get custom output message
|
|
111
|
-
if (result)
|
|
112
|
-
{
|
|
113
|
-
if (out_true !== null)
|
|
114
|
-
out_msg = helper.cloneObject(out_true);
|
|
115
|
-
}
|
|
116
|
-
else
|
|
117
|
-
{
|
|
118
|
-
if (out_false !== null)
|
|
119
|
-
out_msg = helper.cloneObject(out_false);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (out_msg !== null)
|
|
123
|
-
{
|
|
124
|
-
// Overwrite automatic values, if not already defined
|
|
125
|
-
if (typeof out_msg.payload === "undefined")
|
|
126
|
-
out_msg.payload = result;
|
|
127
|
-
|
|
128
|
-
if (typeof out_msg.comparator === "undefined")
|
|
129
|
-
out_msg.comparator = comparator;
|
|
130
|
-
|
|
131
|
-
// Separate outputs if needed
|
|
132
|
-
if (outputs == 2)
|
|
121
|
+
if (result != null)
|
|
133
122
|
{
|
|
123
|
+
// Get custom output message
|
|
134
124
|
if (result)
|
|
135
|
-
|
|
125
|
+
{
|
|
126
|
+
if (out_true !== null)
|
|
127
|
+
out_msg = helper.cloneObject(out_true);
|
|
128
|
+
}
|
|
136
129
|
else
|
|
137
|
-
|
|
130
|
+
{
|
|
131
|
+
if (out_false !== null)
|
|
132
|
+
out_msg = helper.cloneObject(out_false);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (out_msg !== null)
|
|
136
|
+
{
|
|
137
|
+
// Overwrite automatic values, if not already defined
|
|
138
|
+
if (typeof out_msg.payload === "undefined")
|
|
139
|
+
out_msg.payload = result;
|
|
140
|
+
|
|
141
|
+
if (typeof out_msg.comparator === "undefined")
|
|
142
|
+
out_msg.comparator = comparator;
|
|
143
|
+
|
|
144
|
+
// Separate outputs if needed
|
|
145
|
+
if (outputs == 2)
|
|
146
|
+
{
|
|
147
|
+
if (result)
|
|
148
|
+
out_msg = [out_msg, null];
|
|
149
|
+
else
|
|
150
|
+
out_msg = [null, out_msg];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Send only if needed
|
|
154
|
+
if (send_only_change == false || node_settings.last_result != result)
|
|
155
|
+
node.send(out_msg);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
node_settings.last_result = result;
|
|
159
|
+
node_settings.last_message = out_msg;
|
|
138
160
|
}
|
|
139
|
-
|
|
140
|
-
// Send only if needed
|
|
141
|
-
if (send_only_change == false || node_settings.last_result != result)
|
|
142
|
-
node.send(out_msg);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
node_settings.last_result = result;
|
|
146
|
-
node_settings.last_message = out_msg;
|
|
161
|
+
break;
|
|
147
162
|
}
|
|
148
163
|
}
|
|
149
164
|
|
package/counter/counter.js
CHANGED
|
@@ -74,6 +74,17 @@ module.exports = function (RED)
|
|
|
74
74
|
let temp_value;
|
|
75
75
|
switch (real_topic)
|
|
76
76
|
{
|
|
77
|
+
case "debug":
|
|
78
|
+
helper.nodeDebug(node, {
|
|
79
|
+
node_settings,
|
|
80
|
+
start,
|
|
81
|
+
step,
|
|
82
|
+
min,
|
|
83
|
+
max,
|
|
84
|
+
out_message,
|
|
85
|
+
});
|
|
86
|
+
break;
|
|
87
|
+
|
|
77
88
|
case "set_min":
|
|
78
89
|
min = parseFloat(msg.payload);
|
|
79
90
|
break;
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
</tr>
|
|
19
19
|
</thead>
|
|
20
20
|
<tbody>
|
|
21
|
+
<tr>
|
|
22
|
+
<td><code>debug</code></td>
|
|
23
|
+
<td>Gibt aktuelle Node Einstellungen im Debug Fenster aus.</td>
|
|
24
|
+
</tr>
|
|
21
25
|
<tr>
|
|
22
26
|
<td><code>set_min</code></td>
|
|
23
27
|
<td>Überschreibt den eingestellten Min-Wert mit <code>msg.payload</code>.</td>
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
</tr>
|
|
19
19
|
</thead>
|
|
20
20
|
<tbody>
|
|
21
|
+
<tr>
|
|
22
|
+
<td><code>debug</code></td>
|
|
23
|
+
<td>Outputs current node settings in the debug window.</td>
|
|
24
|
+
</tr>
|
|
21
25
|
<tr>
|
|
22
26
|
<td><code>set_min</code></td>
|
|
23
27
|
<td>Overwrites the set min value with <code>msg.payload</code>.</td>
|
package/delay/delay.js
CHANGED
|
@@ -111,6 +111,13 @@ module.exports = function (RED)
|
|
|
111
111
|
|
|
112
112
|
switch (real_topic)
|
|
113
113
|
{
|
|
114
|
+
case "debug":
|
|
115
|
+
helper.nodeDebug(node, {
|
|
116
|
+
node_settings,
|
|
117
|
+
delay_only_on_change,
|
|
118
|
+
});
|
|
119
|
+
break;
|
|
120
|
+
|
|
114
121
|
case "set_delay_on":
|
|
115
122
|
node_settings.on_delay_ms = helper.getTimeInMsFromString(msg.payload);
|
|
116
123
|
node.status({ fill: "yellow", shape: "ring", text: helper.getCurrentTimeForStatus() + ": " + "New on delay: " + helper.formatMsToStatus(node_settings.on_delay_ms) });
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
</tr>
|
|
16
16
|
</thead>
|
|
17
17
|
<tbody>
|
|
18
|
+
<tr>
|
|
19
|
+
<td><code>debug</code></td>
|
|
20
|
+
<td>Gibt aktuelle Node Einstellungen im Debug Fenster aus.</td>
|
|
21
|
+
</tr>
|
|
18
22
|
<tr>
|
|
19
23
|
<td><code>set_delay_on</code></td>
|
|
20
24
|
<td>Setzt die Einschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
</tr>
|
|
16
16
|
</thead>
|
|
17
17
|
<tbody>
|
|
18
|
+
<tr>
|
|
19
|
+
<td><code>debug</code></td>
|
|
20
|
+
<td>Outputs current node settings in the debug window.</td>
|
|
21
|
+
</tr>
|
|
18
22
|
<tr>
|
|
19
23
|
<td><code>set_delay_on</code></td>
|
|
20
24
|
<td>Sets the on delay to the time specified in <code>msg.payload</code>.</td>
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "b33aca888f9ec037",
|
|
4
|
+
"type": "smart_mode-selector",
|
|
5
|
+
"z": "e5afc2ee2cd84f5f",
|
|
6
|
+
"name": "",
|
|
7
|
+
"outputs": 3,
|
|
8
|
+
"mode_items": [
|
|
9
|
+
{
|
|
10
|
+
"name": "OFF"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "COOL"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "HEAT"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"resend_on_start": true,
|
|
20
|
+
"x": 420,
|
|
21
|
+
"y": 160,
|
|
22
|
+
"wires": [
|
|
23
|
+
[
|
|
24
|
+
"81ee5e80db7748e6"
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
"d3ee3b38834ce6d1"
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
"183f10a05472b8ce"
|
|
31
|
+
]
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "cacd2123f498db13",
|
|
36
|
+
"type": "inject",
|
|
37
|
+
"z": "e5afc2ee2cd84f5f",
|
|
38
|
+
"name": "",
|
|
39
|
+
"props": [
|
|
40
|
+
{
|
|
41
|
+
"p": "topic",
|
|
42
|
+
"vt": "str"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"repeat": "",
|
|
46
|
+
"crontab": "",
|
|
47
|
+
"once": false,
|
|
48
|
+
"onceDelay": 0.1,
|
|
49
|
+
"topic": "refresh",
|
|
50
|
+
"x": 110,
|
|
51
|
+
"y": 80,
|
|
52
|
+
"wires": [
|
|
53
|
+
[
|
|
54
|
+
"b33aca888f9ec037"
|
|
55
|
+
]
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "a4517f2fe26a78a3",
|
|
60
|
+
"type": "inject",
|
|
61
|
+
"z": "e5afc2ee2cd84f5f",
|
|
62
|
+
"name": "",
|
|
63
|
+
"props": [
|
|
64
|
+
{
|
|
65
|
+
"p": "topic",
|
|
66
|
+
"vt": "str"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"p": "payload"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"repeat": "",
|
|
73
|
+
"crontab": "",
|
|
74
|
+
"once": false,
|
|
75
|
+
"onceDelay": 0.1,
|
|
76
|
+
"topic": "set_mode",
|
|
77
|
+
"payload": "OFF",
|
|
78
|
+
"payloadType": "str",
|
|
79
|
+
"x": 140,
|
|
80
|
+
"y": 140,
|
|
81
|
+
"wires": [
|
|
82
|
+
[
|
|
83
|
+
"b33aca888f9ec037"
|
|
84
|
+
]
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "d616bfb55d4b2e05",
|
|
89
|
+
"type": "inject",
|
|
90
|
+
"z": "e5afc2ee2cd84f5f",
|
|
91
|
+
"name": "",
|
|
92
|
+
"props": [
|
|
93
|
+
{
|
|
94
|
+
"p": "topic",
|
|
95
|
+
"vt": "str"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"p": "payload"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"repeat": "",
|
|
102
|
+
"crontab": "",
|
|
103
|
+
"once": false,
|
|
104
|
+
"onceDelay": 0.1,
|
|
105
|
+
"topic": "set_mode",
|
|
106
|
+
"payload": "HEAT",
|
|
107
|
+
"payloadType": "str",
|
|
108
|
+
"x": 140,
|
|
109
|
+
"y": 200,
|
|
110
|
+
"wires": [
|
|
111
|
+
[
|
|
112
|
+
"b33aca888f9ec037"
|
|
113
|
+
]
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "34ec6475a0112da8",
|
|
118
|
+
"type": "inject",
|
|
119
|
+
"z": "e5afc2ee2cd84f5f",
|
|
120
|
+
"name": "",
|
|
121
|
+
"props": [
|
|
122
|
+
{
|
|
123
|
+
"p": "topic",
|
|
124
|
+
"vt": "str"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"p": "payload"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"repeat": "",
|
|
131
|
+
"crontab": "",
|
|
132
|
+
"once": false,
|
|
133
|
+
"onceDelay": 0.1,
|
|
134
|
+
"topic": "set_mode",
|
|
135
|
+
"payload": "COOL",
|
|
136
|
+
"payloadType": "str",
|
|
137
|
+
"x": 140,
|
|
138
|
+
"y": 260,
|
|
139
|
+
"wires": [
|
|
140
|
+
[
|
|
141
|
+
"b33aca888f9ec037"
|
|
142
|
+
]
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"id": "81ee5e80db7748e6",
|
|
147
|
+
"type": "debug",
|
|
148
|
+
"z": "e5afc2ee2cd84f5f",
|
|
149
|
+
"name": "debug 23",
|
|
150
|
+
"active": true,
|
|
151
|
+
"tosidebar": true,
|
|
152
|
+
"console": false,
|
|
153
|
+
"tostatus": false,
|
|
154
|
+
"complete": "true",
|
|
155
|
+
"targetType": "full",
|
|
156
|
+
"statusVal": "",
|
|
157
|
+
"statusType": "auto",
|
|
158
|
+
"x": 720,
|
|
159
|
+
"y": 120,
|
|
160
|
+
"wires": []
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "d3ee3b38834ce6d1",
|
|
164
|
+
"type": "debug",
|
|
165
|
+
"z": "e5afc2ee2cd84f5f",
|
|
166
|
+
"name": "debug 49",
|
|
167
|
+
"active": true,
|
|
168
|
+
"tosidebar": true,
|
|
169
|
+
"console": false,
|
|
170
|
+
"tostatus": false,
|
|
171
|
+
"complete": "true",
|
|
172
|
+
"targetType": "full",
|
|
173
|
+
"statusVal": "",
|
|
174
|
+
"statusType": "auto",
|
|
175
|
+
"x": 720,
|
|
176
|
+
"y": 160,
|
|
177
|
+
"wires": []
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "183f10a05472b8ce",
|
|
181
|
+
"type": "debug",
|
|
182
|
+
"z": "e5afc2ee2cd84f5f",
|
|
183
|
+
"name": "debug 50",
|
|
184
|
+
"active": true,
|
|
185
|
+
"tosidebar": true,
|
|
186
|
+
"console": false,
|
|
187
|
+
"tostatus": false,
|
|
188
|
+
"complete": "true",
|
|
189
|
+
"targetType": "full",
|
|
190
|
+
"statusVal": "",
|
|
191
|
+
"statusType": "auto",
|
|
192
|
+
"x": 720,
|
|
193
|
+
"y": 200,
|
|
194
|
+
"wires": []
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "4e7b09d07c9debda",
|
|
198
|
+
"type": "inject",
|
|
199
|
+
"z": "e5afc2ee2cd84f5f",
|
|
200
|
+
"name": "",
|
|
201
|
+
"props": [
|
|
202
|
+
{
|
|
203
|
+
"p": "topic",
|
|
204
|
+
"vt": "str"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"p": "payload"
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"repeat": "",
|
|
211
|
+
"crontab": "",
|
|
212
|
+
"once": false,
|
|
213
|
+
"onceDelay": 0.1,
|
|
214
|
+
"topic": "set_mode",
|
|
215
|
+
"payload": "INVALID",
|
|
216
|
+
"payloadType": "str",
|
|
217
|
+
"x": 150,
|
|
218
|
+
"y": 320,
|
|
219
|
+
"wires": [
|
|
220
|
+
[
|
|
221
|
+
"b33aca888f9ec037"
|
|
222
|
+
]
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
]
|
|
Binary file
|
package/forwarder/forwarder.js
CHANGED
|
@@ -93,38 +93,52 @@ module.exports = function (RED)
|
|
|
93
93
|
else if (real_topic == "disable" || (real_topic == "set_state" && !msg.payload))
|
|
94
94
|
new_state = false;
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
if (new_state != null && node_settings.enabled == new_state)
|
|
98
|
-
return;
|
|
99
|
-
|
|
100
|
-
switch (new_state)
|
|
96
|
+
switch (real_topic)
|
|
101
97
|
{
|
|
102
|
-
case
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
node_settings.last_msg_was_sended = true;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
setStatus();
|
|
98
|
+
case "debug":
|
|
99
|
+
helper.nodeDebug(node, {
|
|
100
|
+
node_settings,
|
|
101
|
+
forward_true,
|
|
102
|
+
forward_false,
|
|
103
|
+
forward_last_on_enable,
|
|
104
|
+
});
|
|
113
105
|
break;
|
|
114
106
|
|
|
115
107
|
default:
|
|
116
|
-
//
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
else
|
|
108
|
+
// Already the correct state
|
|
109
|
+
if (new_state != null && node_settings.enabled == new_state)
|
|
110
|
+
return;
|
|
111
|
+
|
|
112
|
+
switch (new_state)
|
|
123
113
|
{
|
|
124
|
-
|
|
114
|
+
case true:
|
|
115
|
+
case false:
|
|
116
|
+
node_settings.enabled = new_state;
|
|
117
|
+
|
|
118
|
+
if (node_settings.enabled && forward_last_on_enable && node_settings.last_message != null && !node_settings.last_msg_was_sended)
|
|
119
|
+
{
|
|
120
|
+
node.send(helper.cloneObject(node_settings.last_message));
|
|
121
|
+
node_settings.last_msg_was_sended = true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
setStatus();
|
|
125
|
+
break;
|
|
126
|
+
|
|
127
|
+
default:
|
|
128
|
+
// Forward if enabled or forced
|
|
129
|
+
if (node_settings.enabled || (forward_true && msg.payload) || (forward_false && !msg.payload))
|
|
130
|
+
{
|
|
131
|
+
node.send(helper.cloneObject(msg));
|
|
132
|
+
node_settings.last_msg_was_sended = true;
|
|
133
|
+
}
|
|
134
|
+
else
|
|
135
|
+
{
|
|
136
|
+
node_settings.last_msg_was_sended = false;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
node_settings.last_message = helper.cloneObject(msg);
|
|
140
|
+
break;
|
|
125
141
|
}
|
|
126
|
-
|
|
127
|
-
node_settings.last_message = helper.cloneObject(msg);
|
|
128
142
|
break;
|
|
129
143
|
}
|
|
130
144
|
}
|
|
@@ -71,6 +71,14 @@ module.exports = function (RED)
|
|
|
71
71
|
let real_topic = helper.getTopicName(msg.topic);
|
|
72
72
|
switch (real_topic)
|
|
73
73
|
{
|
|
74
|
+
case "debug":
|
|
75
|
+
helper.nodeDebug(node, {
|
|
76
|
+
node_settings,
|
|
77
|
+
slope,
|
|
78
|
+
offset,
|
|
79
|
+
});
|
|
80
|
+
break;
|
|
81
|
+
|
|
74
82
|
case "room_setpoint":
|
|
75
83
|
let new_setpoint = parseFloat(msg.payload);
|
|
76
84
|
if (isNaN(new_setpoint) && !isFinite(new_setpoint))
|
package/hysteresis/hysteresis.js
CHANGED
|
@@ -111,6 +111,16 @@ module.exports = function (RED)
|
|
|
111
111
|
|
|
112
112
|
switch (real_topic)
|
|
113
113
|
{
|
|
114
|
+
case "debug":
|
|
115
|
+
helper.nodeDebug(node, {
|
|
116
|
+
node_settings,
|
|
117
|
+
out_higher,
|
|
118
|
+
out_lower,
|
|
119
|
+
send_only_change,
|
|
120
|
+
mode,
|
|
121
|
+
});
|
|
122
|
+
break;
|
|
123
|
+
|
|
114
124
|
case "setpoint":
|
|
115
125
|
node_settings.setpoint = value;
|
|
116
126
|
break;
|