smart-nodes 0.3.37 → 0.4.1
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 +67 -0
- package/README.md +35 -17
- package/central/central.html +26 -12
- package/central/central.js +84 -26
- package/central/locales/de-DE/central.json +1 -4
- package/central/locales/en-US/central.json +0 -3
- package/compare/compare.html +40 -24
- package/compare/compare.js +69 -29
- package/compare/locales/de-DE/compare.json +5 -7
- package/compare/locales/en-US/compare.json +18 -8
- package/counter/counter.html +64 -17
- package/counter/counter.js +43 -20
- package/counter/locales/de-DE/counter.json +6 -9
- package/counter/locales/en-US/counter.json +12 -16
- package/delay/delay.html +18 -88
- package/delay/delay.js +63 -20
- package/delay/locales/de-DE/delay.html +71 -0
- package/delay/locales/de-DE/delay.json +19 -0
- package/delay/locales/en-US/delay.html +76 -0
- package/delay/locales/en-US/delay.json +19 -0
- package/forwarder/forwarder.html +11 -42
- package/forwarder/forwarder.js +59 -18
- package/forwarder/locales/de-DE/forwarder.html +32 -0
- package/forwarder/locales/de-DE/forwarder.json +15 -0
- package/forwarder/locales/en-US/forwarder.html +32 -0
- package/forwarder/locales/en-US/forwarder.json +15 -0
- package/heating-curve/heating-curve.html +10 -51
- package/heating-curve/heating-curve.js +39 -14
- package/heating-curve/locales/de-DE/heating-curve.html +38 -0
- package/heating-curve/locales/de-DE/heating-curve.json +12 -0
- package/heating-curve/locales/en-US/heating-curve.html +38 -0
- package/heating-curve/locales/en-US/heating-curve.json +12 -0
- package/hysteresis/hysteresis.html +43 -65
- package/hysteresis/hysteresis.js +94 -69
- package/hysteresis/locales/de-DE/hysteresis.html +36 -0
- package/hysteresis/locales/de-DE/hysteresis.json +27 -0
- package/hysteresis/locales/en-US/hysteresis.html +36 -0
- package/hysteresis/locales/en-US/hysteresis.json +27 -0
- package/{light-control/light-control.html → light/light.html} +34 -144
- package/{light-control/light-control.js → light/light.js} +151 -32
- package/light/locales/de-DE/light.html +149 -0
- package/light/locales/de-DE/light.json +24 -0
- package/light/locales/en-US/light.html +148 -0
- package/light/locales/en-US/light.json +24 -0
- package/logic/locales/de-DE/logic.html +12 -0
- package/logic/locales/de-DE/logic.json +26 -0
- package/logic/locales/en-US/logic.html +12 -0
- package/logic/locales/en-US/logic.json +26 -0
- package/logic/logic.html +27 -40
- package/logic/logic.js +63 -29
- package/long-press/locales/de-DE/long-press.html +5 -0
- package/long-press/locales/de-DE/long-press.json +13 -0
- package/long-press/locales/en-US/long-press.html +5 -0
- package/long-press/locales/en-US/long-press.json +13 -0
- package/{long-press-control/long-press-control.html → long-press/long-press.html} +10 -14
- package/long-press/long-press.js +163 -0
- package/mixing-valve/locales/de-DE/mixing-valve.html +65 -0
- package/mixing-valve/locales/de-DE/mixing-valve.json +19 -0
- package/mixing-valve/locales/en-US/mixing-valve.html +66 -0
- package/mixing-valve/locales/en-US/mixing-valve.json +19 -0
- package/mixing-valve/mixing-valve.html +15 -79
- package/mixing-valve/mixing-valve.js +87 -61
- package/multi-press/locales/de-DE/multi-press.html +5 -0
- package/multi-press/locales/de-DE/multi-press.json +12 -0
- package/multi-press/locales/en-US/multi-press.html +5 -0
- package/multi-press/locales/en-US/multi-press.json +12 -0
- package/{multi-press-control/multi-press-control.html → multi-press/multi-press.html} +9 -13
- package/{multi-press-control/multi-press-control.js → multi-press/multi-press.js} +53 -5
- package/package.json +7 -7
- package/persistence.js +1 -0
- package/scene/locales/de-DE/scene.html +105 -0
- package/scene/locales/de-DE/scene.json +21 -0
- package/scene/locales/en-US/scene.html +107 -0
- package/scene/locales/en-US/scene.json +20 -0
- package/{scene-control/scene-control.html → scene/scene.html} +18 -121
- package/{scene-control/scene-control.js → scene/scene.js} +76 -26
- package/scheduler/locales/de-DE/scheduler.html +30 -0
- package/scheduler/locales/de-DE/scheduler.json +21 -0
- package/scheduler/locales/en-US/scheduler.html +30 -0
- package/scheduler/locales/en-US/scheduler.json +21 -0
- package/scheduler/scheduler.html +34 -64
- package/scheduler/scheduler.js +85 -53
- package/shutter/locales/de-DE/shutter.html +127 -0
- package/shutter/locales/de-DE/shutter.json +11 -0
- package/shutter/locales/en-US/shutter.html +133 -0
- package/shutter/locales/en-US/shutter.json +11 -0
- package/{shutter-control/shutter-control.html → shutter/shutter.html} +7 -133
- package/{shutter-control/shutter-control.js → shutter/shutter.js} +116 -56
- package/shutter-complex/locales/de-DE/shutter-complex.html +120 -0
- package/shutter-complex/locales/de-DE/shutter-complex.json +20 -0
- package/shutter-complex/locales/en-US/shutter-complex.html +120 -0
- package/shutter-complex/locales/en-US/shutter-complex.json +20 -0
- package/{shutter-complex-control/shutter-complex-control.html → shutter-complex/shutter-complex.html} +30 -133
- package/shutter-complex/shutter-complex.js +578 -0
- package/smart_helper.js +61 -9
- package/statistic/locales/de-DE/statistic.html +10 -0
- package/statistic/locales/de-DE/statistic.json +29 -0
- package/statistic/locales/en-US/statistic.html +10 -0
- package/statistic/locales/en-US/statistic.json +29 -0
- package/statistic/statistic.html +32 -36
- package/statistic/statistic.js +58 -29
- package/text-exec/locales/de-DE/text-exec.html +18 -0
- package/text-exec/locales/de-DE/text-exec.json +7 -0
- package/text-exec/locales/en-US/text-exec.html +18 -0
- package/text-exec/locales/en-US/text-exec.json +7 -0
- package/text-exec/text-exec.html +9 -25
- package/text-exec/text-exec.js +43 -2
- package/long-press-control/long-press-control.js +0 -76
- package/shutter-complex-control/shutter-complex-control.js +0 -442
package/delay/delay.html
CHANGED
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
oneditprepare: function ()
|
|
24
24
|
{
|
|
25
|
+
let node = this;
|
|
26
|
+
|
|
25
27
|
$("#node-input-on_delay").spinner({
|
|
26
28
|
min: 0,
|
|
27
29
|
change: function (event, ui)
|
|
@@ -40,10 +42,10 @@
|
|
|
40
42
|
default: "s",
|
|
41
43
|
value: "on_delay_unit",
|
|
42
44
|
options: [
|
|
43
|
-
{ value: "ms", label: "
|
|
44
|
-
{ value: "s", label: "
|
|
45
|
-
{ value: "min", label: "
|
|
46
|
-
{ value: "h", label: "
|
|
45
|
+
{ value: "ms", label: node._("delay.ui.milliseconds") },
|
|
46
|
+
{ value: "s", label: node._("delay.ui.seconds") },
|
|
47
|
+
{ value: "min", label: node._("delay.ui.minutes") },
|
|
48
|
+
{ value: "h", label: node._("delay.ui.hours") },
|
|
47
49
|
]
|
|
48
50
|
}]
|
|
49
51
|
});
|
|
@@ -66,10 +68,10 @@
|
|
|
66
68
|
default: "s",
|
|
67
69
|
value: "on_delay_unit",
|
|
68
70
|
options: [
|
|
69
|
-
{ value: "ms", label: "
|
|
70
|
-
{ value: "s", label: "
|
|
71
|
-
{ value: "min", label: "
|
|
72
|
-
{ value: "h", label: "
|
|
71
|
+
{ value: "ms", label: node._("delay.ui.milliseconds") },
|
|
72
|
+
{ value: "s", label: node._("delay.ui.seconds") },
|
|
73
|
+
{ value: "min", label: node._("delay.ui.minutes") },
|
|
74
|
+
{ value: "h", label: node._("delay.ui.hours") },
|
|
73
75
|
]
|
|
74
76
|
}]
|
|
75
77
|
});
|
|
@@ -88,103 +90,31 @@
|
|
|
88
90
|
|
|
89
91
|
<script type="text/html" data-template-name="smart_delay">
|
|
90
92
|
<div class="form-row">
|
|
91
|
-
<label for="node-input-name"><i class="fa fa-tag"></i>
|
|
92
|
-
<input type="text" id="node-input-name"
|
|
93
|
+
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="delay.ui.name"></span></label>
|
|
94
|
+
<input type="text" id="node-input-name" data-i18n="[placeholder]delay.ui.name" />
|
|
93
95
|
</div>
|
|
94
96
|
<div class="form-row">
|
|
95
|
-
<label for="node-input-on_delay"><i class="fa fa-clock-o"></i>
|
|
97
|
+
<label for="node-input-on_delay"><i class="fa fa-clock-o"></i> <span data-i18n="delay.ui.on_delay"></label>
|
|
96
98
|
<input id="node-input-on_delay" value="0" />
|
|
97
99
|
<input id="node-input-on_delay_unit" />
|
|
98
100
|
</div>
|
|
99
101
|
<div class="form-row">
|
|
100
|
-
<label for="node-input-off_delay"><i class="fa fa-clock-o"></i>
|
|
102
|
+
<label for="node-input-off_delay"><i class="fa fa-clock-o"></i> <span data-i18n="delay.ui.off_delay"></label>
|
|
101
103
|
<input id="node-input-off_delay" value="0" />
|
|
102
104
|
<input id="node-input-off_delay_unit" />
|
|
103
105
|
</div>
|
|
104
106
|
<div class="form-row">
|
|
105
107
|
<input id="node-input-delay_only_on_change" type="checkbox" style="display: inline-block; width: auto; vertical-align: top;"/>
|
|
106
|
-
<span
|
|
108
|
+
<span data-i18n="[html]delay.ui.delay_only_on_change"></span>
|
|
107
109
|
</div>
|
|
108
110
|
<hr/>
|
|
109
|
-
<h4 style="margin: 0.5rem 0;"
|
|
111
|
+
<h4 style="margin: 0.5rem 0;" data-i18n="delay.ui.system_start"></h4>
|
|
110
112
|
<div class="form-row">
|
|
111
113
|
<input type="checkbox" id="node-input-save_state" style="width: 20px;" />
|
|
112
|
-
<label for="node-input-save_state" style="width: calc(100% - 30px);"
|
|
114
|
+
<label for="node-input-save_state" style="width: calc(100% - 30px);" data-i18n="delay.ui.save_state"></label>
|
|
113
115
|
</div>
|
|
114
116
|
<div class="form-row" id="resend_on_start_row">
|
|
115
117
|
<input type="checkbox" id="node-input-resend_on_start" style="width: 20px;" />
|
|
116
|
-
<label for="node-input-resend_on_start" style="width: calc(100% - 30px);"
|
|
118
|
+
<label for="node-input-resend_on_start" style="width: calc(100% - 30px);" data-i18n="delay.ui.send_after_start"></label>
|
|
117
119
|
</div>
|
|
118
|
-
</script>
|
|
119
|
-
|
|
120
|
-
<script type="text/html" data-help-name="smart_delay">
|
|
121
|
-
<p>Diese Node kann dazu verwendet werden ein Ein- oder Ausschaltsignal zu verzögern.</p>
|
|
122
|
-
<p>Die Zeit 0 bedeutet keine Verögerung.</p>
|
|
123
|
-
<p>
|
|
124
|
-
<b>Hinweis:</b> Smart Nodes verwenden Topics im Format <code>name#nummer</code>, damit können verschiedene Smart Nodes mit dem gleichen Topic angesteuert werden.<br/>
|
|
125
|
-
Diese Node verwendet nur den Teil <code>name</code>. <code>#</code> und <code>nummer</code> sind dabei optional.
|
|
126
|
-
</p>
|
|
127
|
-
<p>
|
|
128
|
-
Folgende topics werden akzeptiert:
|
|
129
|
-
<table>
|
|
130
|
-
<thead>
|
|
131
|
-
<tr>
|
|
132
|
-
<th>Topic</th>
|
|
133
|
-
<th>Beschreibung</th>
|
|
134
|
-
</tr>
|
|
135
|
-
</thead>
|
|
136
|
-
<tbody>
|
|
137
|
-
<tr>
|
|
138
|
-
<td><code>set_delay_on</code></td>
|
|
139
|
-
<td>Setzt die Einschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
140
|
-
</tr>
|
|
141
|
-
<tr>
|
|
142
|
-
<td><code>set_delay_off</code></td>
|
|
143
|
-
<td>Setzt die Ausschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
144
|
-
</tr>
|
|
145
|
-
<tr>
|
|
146
|
-
<td><code>set_delays</code></td>
|
|
147
|
-
<td>Setzt die Ein- und Ausschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
148
|
-
</tr>
|
|
149
|
-
</tbody>
|
|
150
|
-
</table>
|
|
151
|
-
</p>
|
|
152
|
-
<p>
|
|
153
|
-
Beispiel: <code>msg = { "topic": "set_delay_on", "payload": 5000 }</code> oder <code>msg = { "topic": "set_delay_on", "payload": "5s" }</code><br/>
|
|
154
|
-
Diese Nachricht setzt die Einschaltverzögerung auf 5000 Millisekunden / 5 Sekunden.
|
|
155
|
-
Ist die Zeit auf 0 eingestellt, wird die Nachricht sofort weitergeleitet.<br/>
|
|
156
|
-
Als Einheit für die Zeit können folgende Werte verwendet werden:
|
|
157
|
-
<table>
|
|
158
|
-
<thead>
|
|
159
|
-
<tr>
|
|
160
|
-
<th>Einheit</th>
|
|
161
|
-
<th>Beschreibung</th>
|
|
162
|
-
</tr>
|
|
163
|
-
</thead>
|
|
164
|
-
<tbody>
|
|
165
|
-
<tr>
|
|
166
|
-
<td><code>ms</code> (default)</td>
|
|
167
|
-
<td>Millisekunden</td>
|
|
168
|
-
</tr>
|
|
169
|
-
<tr>
|
|
170
|
-
<td><code>s</code> oder <code>sec</code></td>
|
|
171
|
-
<td>Sekunden</td>
|
|
172
|
-
</tr>
|
|
173
|
-
<tr>
|
|
174
|
-
<td><code>m</code> oder <code>min</code></td>
|
|
175
|
-
<td>Mintun.</td>
|
|
176
|
-
</tr>
|
|
177
|
-
<tr>
|
|
178
|
-
<td><code>h</code></td>
|
|
179
|
-
<td>Stunden</td>
|
|
180
|
-
</tr>
|
|
181
|
-
</tbody>
|
|
182
|
-
</table>
|
|
183
|
-
</p>
|
|
184
|
-
<p>
|
|
185
|
-
Wenn die Checkbox <b>Nur verzögern, wenn sich <code>msg.payload</code> verändert hat.</b> aktiviert ist
|
|
186
|
-
und während dem Warten um ein Einschaltsignal weiterzuleiten ein Ausschaltsignal empfangen wird,
|
|
187
|
-
so wird das Senden des Einschaltsignals abgebrochen. Dies gilt auch für den umgekehrten Fall.<br/>
|
|
188
|
-
Ist die Checkbox nicht aktiviert, wird jede Nachricht verzögert, sofern nicht bereits eine Verzögerung für den gleichen <code>payload</code> aktiv ist.
|
|
189
|
-
</p>
|
|
190
120
|
</script>
|
package/delay/delay.js
CHANGED
|
@@ -9,9 +9,22 @@ module.exports = function (RED)
|
|
|
9
9
|
const node = this;
|
|
10
10
|
RED.nodes.createNode(node, config);
|
|
11
11
|
|
|
12
|
+
|
|
13
|
+
// ###################
|
|
14
|
+
// # Class constants #
|
|
15
|
+
// ###################
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
// #######################
|
|
19
|
+
// # Global help objects #
|
|
20
|
+
// #######################
|
|
12
21
|
const smart_context = require("../persistence.js")(RED);
|
|
13
22
|
const helper = require("../smart_helper.js");
|
|
14
23
|
|
|
24
|
+
|
|
25
|
+
// #####################
|
|
26
|
+
// # persistent values #
|
|
27
|
+
// #####################
|
|
15
28
|
var node_settings = {
|
|
16
29
|
on_delay_ms: helper.getTimeInMs(config.on_delay, config.on_delay_unit),
|
|
17
30
|
off_delay_ms: helper.getTimeInMs(config.off_delay, config.off_delay_unit),
|
|
@@ -45,16 +58,58 @@ module.exports = function (RED)
|
|
|
45
58
|
smart_context.del(node.id);
|
|
46
59
|
}
|
|
47
60
|
|
|
48
|
-
|
|
61
|
+
|
|
62
|
+
// ##################
|
|
63
|
+
// # Dynamic config #
|
|
64
|
+
// ##################
|
|
49
65
|
let delay_only_on_change = config.delay_only_on_change;
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
|
|
68
|
+
// ##################
|
|
69
|
+
// # Runtime values #
|
|
70
|
+
// ##################
|
|
71
|
+
|
|
72
|
+
// Here the setTimeout return value is stored to send the delayed message.
|
|
52
73
|
let timeout = null;
|
|
74
|
+
|
|
75
|
+
// Saves the next payload that needs to be send.
|
|
76
|
+
// This is used to avoid restarting the timeout for the same payload.
|
|
53
77
|
let next_payload = null;
|
|
54
78
|
|
|
79
|
+
|
|
80
|
+
// ###############
|
|
81
|
+
// # Node events #
|
|
82
|
+
// ###############
|
|
55
83
|
node.on("input", function (msg)
|
|
56
84
|
{
|
|
57
|
-
|
|
85
|
+
handleTopic(msg);
|
|
86
|
+
|
|
87
|
+
// setStatus();
|
|
88
|
+
|
|
89
|
+
if (config.save_state)
|
|
90
|
+
smart_context.set(node.id, node_settings);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
node.on("close", function ()
|
|
94
|
+
{
|
|
95
|
+
if (timeout != null)
|
|
96
|
+
{
|
|
97
|
+
clearTimeout(timeout);
|
|
98
|
+
timeout = null;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
// #####################
|
|
104
|
+
// # Private functions #
|
|
105
|
+
// #####################
|
|
106
|
+
|
|
107
|
+
// This is the main function which handles all topics that was received.
|
|
108
|
+
let handleTopic = msg =>
|
|
109
|
+
{
|
|
110
|
+
let real_topic = helper.getTopicName(msg.topic);
|
|
111
|
+
|
|
112
|
+
switch (real_topic)
|
|
58
113
|
{
|
|
59
114
|
case "set_delay_on":
|
|
60
115
|
node_settings.on_delay_ms = helper.getTimeInMsFromString(msg.payload);
|
|
@@ -85,16 +140,7 @@ module.exports = function (RED)
|
|
|
85
140
|
send(msg);
|
|
86
141
|
break;
|
|
87
142
|
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
node.on("close", function ()
|
|
91
|
-
{
|
|
92
|
-
if (timeout != null)
|
|
93
|
-
{
|
|
94
|
-
clearTimeout(timeout);
|
|
95
|
-
timeout = null;
|
|
96
|
-
}
|
|
97
|
-
});
|
|
143
|
+
}
|
|
98
144
|
|
|
99
145
|
let send = msg =>
|
|
100
146
|
{
|
|
@@ -144,10 +190,7 @@ module.exports = function (RED)
|
|
|
144
190
|
node.status({ fill: "yellow", shape: "dot", text: helper.getCurrentTimeForStatus() + ": " + "Sended " + getMessageStatusText(msg) });
|
|
145
191
|
node_settings.last_message = helper.cloneObject(msg);
|
|
146
192
|
|
|
147
|
-
|
|
148
|
-
smart_context.set(node.id, node_settings);
|
|
149
|
-
|
|
150
|
-
node.send(msg);
|
|
193
|
+
node.send(node_settings.last_message);
|
|
151
194
|
return;
|
|
152
195
|
}
|
|
153
196
|
|
|
@@ -159,10 +202,10 @@ module.exports = function (RED)
|
|
|
159
202
|
node.status({ fill: "yellow", shape: "dot", text: helper.getCurrentTimeForStatus() + ": " + "Sended " + getMessageStatusText(msg) });
|
|
160
203
|
node_settings.last_message = helper.cloneObject(msg);
|
|
161
204
|
|
|
205
|
+
node.send(node_settings.last_message);
|
|
206
|
+
|
|
162
207
|
if (config.save_state)
|
|
163
208
|
smart_context.set(node.id, node_settings);
|
|
164
|
-
|
|
165
|
-
node.send(msg);
|
|
166
209
|
}, delay_ms);
|
|
167
210
|
}
|
|
168
211
|
|
|
@@ -185,7 +228,7 @@ module.exports = function (RED)
|
|
|
185
228
|
setTimeout(() =>
|
|
186
229
|
{
|
|
187
230
|
node.status({ fill: "yellow", shape: "dot", text: helper.getCurrentTimeForStatus() + ": " + "Sended " + getMessageStatusText(node_settings.last_message) });
|
|
188
|
-
node.send(node_settings.last_message);
|
|
231
|
+
node.send(helper.cloneObject(node_settings.last_message));
|
|
189
232
|
}, 10000);
|
|
190
233
|
}
|
|
191
234
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script type="text/html" data-help-name="smart_delay">
|
|
2
|
+
<p>Diese Node kann dazu verwendet werden ein Ein- oder Ausschaltsignal zu verzögern.</p>
|
|
3
|
+
<p>Die Zeit 0 bedeutet keine Verögerung.</p>
|
|
4
|
+
<p>
|
|
5
|
+
<b>Hinweis:</b> Smart Nodes verwenden Topics im Format <code>name#nummer</code>, damit können verschiedene Smart Nodes mit dem gleichen Topic angesteuert werden.<br/>
|
|
6
|
+
Diese Node verwendet nur den Teil <code>name</code>. <code>#</code> und <code>nummer</code> sind dabei optional.
|
|
7
|
+
</p>
|
|
8
|
+
<p>
|
|
9
|
+
Folgende topics werden akzeptiert:
|
|
10
|
+
<table>
|
|
11
|
+
<thead>
|
|
12
|
+
<tr>
|
|
13
|
+
<th>Topic</th>
|
|
14
|
+
<th>Beschreibung</th>
|
|
15
|
+
</tr>
|
|
16
|
+
</thead>
|
|
17
|
+
<tbody>
|
|
18
|
+
<tr>
|
|
19
|
+
<td><code>set_delay_on</code></td>
|
|
20
|
+
<td>Setzt die Einschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
21
|
+
</tr>
|
|
22
|
+
<tr>
|
|
23
|
+
<td><code>set_delay_off</code></td>
|
|
24
|
+
<td>Setzt die Ausschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
25
|
+
</tr>
|
|
26
|
+
<tr>
|
|
27
|
+
<td><code>set_delays</code></td>
|
|
28
|
+
<td>Setzt die Ein- und Ausschaltverzögerung auf die in <code>msg.payload</code> angegebene Zeit.</td>
|
|
29
|
+
</tr>
|
|
30
|
+
</tbody>
|
|
31
|
+
</table>
|
|
32
|
+
</p>
|
|
33
|
+
<p>
|
|
34
|
+
Beispiel: <code>msg = { "topic": "set_delay_on", "payload": 5000 }</code> oder <code>msg = { "topic": "set_delay_on", "payload": "5s" }</code><br/>
|
|
35
|
+
Diese Nachricht setzt die Einschaltverzögerung auf 5000 Millisekunden / 5 Sekunden.
|
|
36
|
+
Ist die Zeit auf 0 eingestellt, wird die Nachricht sofort weitergeleitet.<br/>
|
|
37
|
+
Als Einheit für die Zeit können folgende Werte verwendet werden:
|
|
38
|
+
<table>
|
|
39
|
+
<thead>
|
|
40
|
+
<tr>
|
|
41
|
+
<th>Einheit</th>
|
|
42
|
+
<th>Beschreibung</th>
|
|
43
|
+
</tr>
|
|
44
|
+
</thead>
|
|
45
|
+
<tbody>
|
|
46
|
+
<tr>
|
|
47
|
+
<td><code>ms</code> (default)</td>
|
|
48
|
+
<td>Millisekunden</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td><code>s</code> oder <code>sec</code></td>
|
|
52
|
+
<td>Sekunden</td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr>
|
|
55
|
+
<td><code>m</code> oder <code>min</code></td>
|
|
56
|
+
<td>Mintun.</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td><code>h</code></td>
|
|
60
|
+
<td>Stunden</td>
|
|
61
|
+
</tr>
|
|
62
|
+
</tbody>
|
|
63
|
+
</table>
|
|
64
|
+
</p>
|
|
65
|
+
<p>
|
|
66
|
+
Wenn die Checkbox <b>Nur verzögern, wenn sich <code>msg.payload</code> verändert hat.</b> aktiviert ist
|
|
67
|
+
und während dem Warten um ein Einschaltsignal weiterzuleiten ein Ausschaltsignal empfangen wird,
|
|
68
|
+
so wird das Senden des Einschaltsignals abgebrochen. Dies gilt auch für den umgekehrten Fall.<br/>
|
|
69
|
+
Ist die Checkbox nicht aktiviert, wird jede Nachricht verzögert, sofern nicht bereits eine Verzögerung für den gleichen <code>payload</code> aktiv ist.
|
|
70
|
+
</p>
|
|
71
|
+
</script>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"delay": {
|
|
3
|
+
"ui": {
|
|
4
|
+
"name": "Name",
|
|
5
|
+
|
|
6
|
+
"on_delay": "Einschalt- verzögerung",
|
|
7
|
+
"off_delay": "Ausschalt- verzögerung",
|
|
8
|
+
"delay_only_on_change": "Nur verzögern, wenn sich <code>msg.payload</code> verändert hat.",
|
|
9
|
+
"system_start": "Systemstart",
|
|
10
|
+
"save_state": "Zustand speichern",
|
|
11
|
+
"send_after_start": "Letze Nachricht 10 Sekunden nach dem Start senden",
|
|
12
|
+
|
|
13
|
+
"milliseconds": "Millisekunden",
|
|
14
|
+
"seconds": "Sekunden",
|
|
15
|
+
"minutes": "Minuten",
|
|
16
|
+
"hours": "Stunden"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script type="text/html" data-help-name="smart_delay">
|
|
2
|
+
<p>This node can be used to delay an on or off signal.</p>
|
|
3
|
+
<p>The time 0 means no delay.</p>
|
|
4
|
+
<p>
|
|
5
|
+
<b>Note:</b> Smart Nodes use topics in the format <code>name#number</code>, so that different Smart Nodes can be controlled with the same topic.<br />
|
|
6
|
+
This node only uses the part <code>name</code>. <code>#</code> and <code>number</code> are optional.
|
|
7
|
+
</p>
|
|
8
|
+
<p>
|
|
9
|
+
The following topics are accepted:
|
|
10
|
+
<table>
|
|
11
|
+
<thead>
|
|
12
|
+
<tr>
|
|
13
|
+
<th>Topic</th>
|
|
14
|
+
<th>Description</th>
|
|
15
|
+
</tr>
|
|
16
|
+
</thead>
|
|
17
|
+
<tbody>
|
|
18
|
+
<tr>
|
|
19
|
+
<td><code>set_delay_on</code></td>
|
|
20
|
+
<td>Sets the on delay to the time specified in <code>msg.payload</code>.</td>
|
|
21
|
+
</tr>
|
|
22
|
+
<tr>
|
|
23
|
+
<td><code>set_delay_off</code></td>
|
|
24
|
+
<td>Sets the off delay to the time specified in <code>msg.payload</code>.</td>
|
|
25
|
+
</tr>
|
|
26
|
+
<tr>
|
|
27
|
+
<td><code>set_delays</code></td>
|
|
28
|
+
<td>Sets the on and off delay to the time specified in <code>msg.payload</code> Time.</td>
|
|
29
|
+
</tr>
|
|
30
|
+
</tbody>
|
|
31
|
+
</table>
|
|
32
|
+
</p>
|
|
33
|
+
<p>
|
|
34
|
+
Example: <code>msg = { "topic": "set_delay_on", "payload": 5000 }</code> or <code>msg = { "topic": "set_delay_on", "payload": "5s" }</code><br />
|
|
35
|
+
This message sets the power-on delay to 5000 milliseconds / 5 seconds.
|
|
36
|
+
If the time is set to 0, the message is forwarded immediately.<br />
|
|
37
|
+
The following values can be used as a unit for time:
|
|
38
|
+
<table>
|
|
39
|
+
<thead>
|
|
40
|
+
<tr>
|
|
41
|
+
<th>Unit</th>
|
|
42
|
+
<th>Description</th>
|
|
43
|
+
</tr>
|
|
44
|
+
</thead>
|
|
45
|
+
<tbody>
|
|
46
|
+
<tr>
|
|
47
|
+
<td><code>ms</code> (default)</td>
|
|
48
|
+
<td>Milliseconds</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td><code>s</code> or <code>sec</code></td>
|
|
52
|
+
<td>Seconds</td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr>
|
|
55
|
+
<td><code>m</code> or <code>min</code></td>
|
|
56
|
+
<td>Mintun.</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td><code>h</code></td>
|
|
60
|
+
<td>Hours</td>
|
|
61
|
+
</tr>
|
|
62
|
+
</tbody>
|
|
63
|
+
|
|
64
|
+
</table>
|
|
65
|
+
|
|
66
|
+
</p>
|
|
67
|
+
|
|
68
|
+
<p>
|
|
69
|
+
If the checkbox <b>Only delay if <code>msg.payload</code> has changed.</b> is activated
|
|
70
|
+
and a shutdown signal is received while waiting to forward a power-on signal,
|
|
71
|
+
the sending of the power-on signal is aborted. This also applies in the opposite case.<br />
|
|
72
|
+
If the checkbox is not activated, every message is delayed unless a delay is already active for the same
|
|
73
|
+
<code>payload</code>.
|
|
74
|
+
|
|
75
|
+
</p>
|
|
76
|
+
</script>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"delay": {
|
|
3
|
+
"ui": {
|
|
4
|
+
"name": "Name",
|
|
5
|
+
|
|
6
|
+
"on_delay": "Switch-on delay",
|
|
7
|
+
"off_delay": "Switch-off- delay",
|
|
8
|
+
"delay_only_on_change": "Only delay if <code>msg.payload</code> has changed.",
|
|
9
|
+
"system_start": "System start",
|
|
10
|
+
"save_state": "Save state",
|
|
11
|
+
"send_after_start": "Send last message 10 seconds after the start",
|
|
12
|
+
|
|
13
|
+
"milliseconds": "Milliseconds",
|
|
14
|
+
"seconds": "Seconds",
|
|
15
|
+
"minutes": "Minutes",
|
|
16
|
+
"hours": "Hours"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
package/forwarder/forwarder.html
CHANGED
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
oneditprepare: function ()
|
|
23
23
|
{
|
|
24
|
+
let node = this;
|
|
25
|
+
|
|
24
26
|
$("#node-input-save_state").on("change", ev =>
|
|
25
27
|
{
|
|
26
28
|
if (ev.target.checked)
|
|
@@ -35,66 +37,33 @@
|
|
|
35
37
|
|
|
36
38
|
<script type="text/html" data-template-name="smart_forwarder">
|
|
37
39
|
<div class="form-row">
|
|
38
|
-
<label for="node-input-name"><i class="fa fa-tag"></i>
|
|
39
|
-
<input type="text" id="node-input-name"
|
|
40
|
+
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="forwarder.ui.name"></span></label>
|
|
41
|
+
<input type="text" id="node-input-name" data-i18n="[placeholder]forwarder.ui.name" />
|
|
40
42
|
</div>
|
|
41
43
|
<div class="form-row">
|
|
42
44
|
<input type="checkbox" id="node-input-enabled" style="width: 20px;" />
|
|
43
|
-
<
|
|
45
|
+
<label for="node-input-enabled" style="width: 200px;"> <span data-i18n="forwarder.ui.enabled"></span>
|
|
44
46
|
</div>
|
|
45
47
|
<div class="form-row">
|
|
46
48
|
<input type="checkbox" id="node-input-forward_last_on_enable" style="width: 20px;" />
|
|
47
|
-
<
|
|
49
|
+
<label for="node-input-forward_last_on_enable" data-i18n="forwarder.ui.forward_last_on_enable"></label>
|
|
48
50
|
</div>
|
|
49
51
|
<div class="form-row">
|
|
50
52
|
<input type="checkbox" id="node-input-always_forward_true" style="width: 20px;" />
|
|
51
|
-
<
|
|
53
|
+
<label for="node-input-always_forward_true" data-i18n="[html]forwarder.ui.always_forward_true"></label>
|
|
52
54
|
</div>
|
|
53
55
|
<div class="form-row">
|
|
54
56
|
<input type="checkbox" id="node-input-always_forward_false" style="width: 20px;" />
|
|
55
|
-
<
|
|
57
|
+
<label for="node-input-always_forward_false" data-i18n="[html]forwarder.ui.always_forward_false"></label>
|
|
56
58
|
</div>
|
|
57
59
|
<hr/>
|
|
58
|
-
<h4 style="margin: 0.5rem 0;"
|
|
60
|
+
<h4 style="margin: 0.5rem 0;" data-i18n="forwarder.ui.system_start"></h4>
|
|
59
61
|
<div class="form-row">
|
|
60
62
|
<input type="checkbox" id="node-input-save_state" style="width: 20px;" />
|
|
61
|
-
<label for="node-input-save_state" style="width: calc(100% - 30px);"
|
|
63
|
+
<label for="node-input-save_state" style="width: calc(100% - 30px);" data-i18n="forwarder.ui.save_state"></label>
|
|
62
64
|
</div>
|
|
63
65
|
<div class="form-row" id="resend_on_start_row">
|
|
64
66
|
<input type="checkbox" id="node-input-resend_on_start" style="width: 20px;" />
|
|
65
|
-
<label for="node-input-resend_on_start" style="width: calc(100% - 30px);"
|
|
67
|
+
<label for="node-input-resend_on_start" style="width: calc(100% - 30px);" data-i18n="forwarder.ui.send_after_start"></label>
|
|
66
68
|
</div>
|
|
67
|
-
</script>
|
|
68
|
-
|
|
69
|
-
<script type="text/html" data-help-name="smart_forwarder">
|
|
70
|
-
<p>Diese Node leitet eine Nachricht weiter, wenn er enabled wurde oder das dauerhafte Weiterleiten für die Nachricht aktiviert ist.</p>
|
|
71
|
-
<p>
|
|
72
|
-
<b>Hinweis:</b> Smart Nodes verwenden Topics im Format <code>name#nummer</code>, damit können verschiedene Smart Nodes mit dem gleichen Topic angesteuert werden.<br/>
|
|
73
|
-
Diese Node verwendet nur den Teil <code>name</code>. <code>#</code> und <code>nummer</code> sind dabei optional.
|
|
74
|
-
</p>
|
|
75
|
-
<p>
|
|
76
|
-
Folgende topics werden akzeptiert:
|
|
77
|
-
<table>
|
|
78
|
-
<thead>
|
|
79
|
-
<tr>
|
|
80
|
-
<th>Topic</th>
|
|
81
|
-
<th>Beschreibung</th>
|
|
82
|
-
</tr>
|
|
83
|
-
</thead>
|
|
84
|
-
<tbody>
|
|
85
|
-
<tr>
|
|
86
|
-
<td><code>enable</code></td>
|
|
87
|
-
<td>Aktiviert das Weiterleiten.</td>
|
|
88
|
-
</tr>
|
|
89
|
-
<tr>
|
|
90
|
-
<td><code>disable</code></td>
|
|
91
|
-
<td>Deaktiviert das Weiterleiten.</td>
|
|
92
|
-
</tr>
|
|
93
|
-
<tr>
|
|
94
|
-
<td><code>set_state</code></td>
|
|
95
|
-
<td>Aktiviert das Weiterleiten, wenn <code>msg.payload = true</code> oder deaktiviert das Weiterleiten, wenn <code>msg.payload = false</code>.</td>
|
|
96
|
-
</tr>
|
|
97
|
-
</tbody>
|
|
98
|
-
</table>
|
|
99
|
-
</p>
|
|
100
69
|
</script>
|