mirror of
https://github.com/node-red/node-red-nodes.git
synced 2025-03-01 10:37:43 +00:00
correct output for timeswitch
(simple typo) Also tidied up info etc… push to close #176
This commit is contained in:
parent
952a794db5
commit
b33571b240
@ -54,9 +54,9 @@
|
|||||||
<script type="text/x-red" data-help-name="sunrise">
|
<script type="text/x-red" data-help-name="sunrise">
|
||||||
<p>Uses the suncalc module to generate an output at sunrise and sunset based on a specified location.</p>
|
<p>Uses the suncalc module to generate an output at sunrise and sunset based on a specified location.</p>
|
||||||
<p>Several choices of definition of sunrise and sunset are available, see the <i><a href = "https://github.com/mourner/suncalc" target="_new">suncalc</a></i> module for details.</p>
|
<p>Several choices of definition of sunrise and sunset are available, see the <i><a href = "https://github.com/mourner/suncalc" target="_new">suncalc</a></i> module for details.</p>
|
||||||
<p>The first output emits a <b>msg.payload</b> of <i>1</i> or <i>0</i> every minute depending if in between selected times or not.
|
<p>The first output emits a <code>msg.payload</code> of <i>1</i> or <i>0</i> every minute depending if in between selected times or not.
|
||||||
The second output emits only on the transition between night to day (<i>-> 1</i>) or day to night (<i>-> 0</i>).</p>
|
The second output emits only on the transition between night to day (<i>-> 1</i>) or day to night (<i>-> 0</i>).</p>
|
||||||
<p>Also sets <b>msg.topic</b> to <i>sun</i> and <b>msg.moon</b> to the fraction of the moon between 0 and 1.</p>
|
<p>Also sets <code>msg.topic</code> to <i>sun</i> and <code>msg.moon</code> to the fraction of the moon between 0 and 1.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
@ -36,15 +36,15 @@ module.exports = function(RED) {
|
|||||||
var endMillis = Date.UTC(times[node.end].getUTCFullYear(),times[node.end].getUTCMonth(),times[node.end].getUTCDate(),times[node.end].getUTCHours(),times[node.end].getUTCMinutes());
|
var endMillis = Date.UTC(times[node.end].getUTCFullYear(),times[node.end].getUTCMonth(),times[node.end].getUTCDate(),times[node.end].getUTCHours(),times[node.end].getUTCMinutes());
|
||||||
var e1 = nowMillis - startMillis;
|
var e1 = nowMillis - startMillis;
|
||||||
var e2 = nowMillis - endMillis;
|
var e2 = nowMillis - endMillis;
|
||||||
var moon = parseInt(SunCalc.getMoonIllumination(now).fraction*100+0.5)/100;
|
var moon = parseInt(SunCalc.getMoonIllumination(now).fraction * 100 + 0.5) / 100;
|
||||||
var msg = { payload:0, topic:"sun", moon:moon };
|
var msg = {payload:0, topic:"sun", moon:moon};
|
||||||
if ((e1 > 0) & (e2 < 0)) { msg.payload = 1; }
|
if ((e1 > 0) & (e2 < 0)) { msg.payload = 1; }
|
||||||
if (oldval == null) { oldval = msg.payload; }
|
if (oldval == null) { oldval = msg.payload; }
|
||||||
if (msg.payload == 1) { node.status({fill:"yellow",shape:"dot",text:"day"}); }
|
if (msg.payload == 1) { node.status({fill:"yellow",shape:"dot",text:"day"}); }
|
||||||
else { node.status({fill:"blue",shape:"dot",text:"night"}); }
|
else { node.status({fill:"blue",shape:"dot",text:"night"}); }
|
||||||
if (msg.payload != oldval) {
|
if (msg.payload != oldval) {
|
||||||
oldval = msg.payload;
|
oldval = msg.payload;
|
||||||
node.send( [msg,msg] );
|
node.send([msg,msg]);
|
||||||
}
|
}
|
||||||
else { node.send(msg); }
|
else { node.send(msg); }
|
||||||
}, 60000);
|
}, 60000);
|
||||||
@ -54,4 +54,4 @@ module.exports = function(RED) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
RED.nodes.registerType("sunrise",SunNode);
|
RED.nodes.registerType("sunrise",SunNode);
|
||||||
}
|
};
|
||||||
|
@ -16,10 +16,13 @@ Usage
|
|||||||
|
|
||||||
Uses the suncalc npm to generate an output at sunrise and sunset based on a specified location.
|
Uses the suncalc npm to generate an output at sunrise and sunset based on a specified location.
|
||||||
|
|
||||||
Several choices of definition of sunrise and sunset are available, see the <i><a href = "https://github.com/mourner/suncalc" target="_new">suncalc</a></i> module for details.
|
Several choices of definition of sunrise and sunset are available, see the
|
||||||
|
<i><a href = "https://github.com/mourner/suncalc" target="_new">suncalc</a></i> module for details.
|
||||||
|
|
||||||
The node provide two outputs. The first output emits a <b>msg.payload</b> of <i>1</i> or <i>0</i> every minute depending if day-time (1) or night-time (0).
|
The node provide two outputs. The first output emits a `msg.payload` of <i>1</i> or <i>0</i> every minute
|
||||||
|
depending if day-time (1) or night-time (0).
|
||||||
|
|
||||||
The second output emits only on the transition between night to day (<i>-> 1</i>) or day to night (<i>-> 0</i>).
|
The second output emits only on the transition between night to day (<i>-> 1</i>) or day to night (<i>-> 0</i>).
|
||||||
|
|
||||||
It also sets the <b>msg.topic</b> to <i>sun</i> and <b>msg.moon</b> to the fraction of the moon currently visible (a value between 0 for no moon and 1 for full moon).</p>
|
It also sets the `msg.topic` to <i>sun</i> and `msg.moon` to the fraction of the moon currently visible
|
||||||
|
(a value between 0 for no moon and 1 for full moon).</p>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "node-red-node-suncalc",
|
"name" : "node-red-node-suncalc",
|
||||||
"version" : "0.0.6",
|
"version" : "0.0.7",
|
||||||
"description" : "A Node-RED node to provide a signal at sunrise and sunset",
|
"description" : "A Node-RED node to provide a signal at sunrise and sunset",
|
||||||
"dependencies" : {
|
"dependencies" : {
|
||||||
"suncalc" : "1.6.*"
|
"suncalc" : "1.6.*"
|
||||||
|
@ -15,19 +15,19 @@ Usually this is `~/.node-red`
|
|||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Sets **msg.payload** to *1* during on times, and *0* during off times.
|
Sets `msg.payload` to *1* during on times, and *0* during off times.
|
||||||
|
|
||||||
Also uses the suncalc module to allow use of dawn and dusk.
|
Also uses the suncalc module to allow use of dawn and dusk.
|
||||||
|
|
||||||
Dawn and dusk times can be offset both positively (+ve) for minutes after dawn
|
Dawn and dusk times can be offset both positively (+ve) for minutes after dawn
|
||||||
or dusk, and negatively (-ve) for minutes before dawn or dusk..
|
or dusk, and negatively (-ve) for minutes before dawn or dusk..
|
||||||
|
|
||||||
The output emits a **msg.payload** of *1* or *0* every minute depending on
|
The output emits a `msg.payload` of *1* or *0* every minute depending on
|
||||||
whether the current time is during the selected on time or off time.
|
whether the current time is during the selected on time or off time.
|
||||||
|
|
||||||
If you just need the transitions from 0->1 or 1->0 then follow this node with an RBE node.
|
If you just need the transitions from 0->1 or 1->0 then follow this node with an RBE node.
|
||||||
|
|
||||||
You may also optionally specify a **msg.topic** if required.
|
You may also optionally specify a `msg.topic` if required.
|
||||||
|
|
||||||
**Note**: For a more complex version with more built-in options see Pete Scargill's
|
**Note**: For a more complex version with more built-in options see Pete Scargill's
|
||||||
[node-red-contrib-bigtimer](http://flows.nodered.org/node/node-red-contrib-bigtimer) node.
|
[node-red-contrib-bigtimer](http://flows.nodered.org/node/node-red-contrib-bigtimer) node.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "node-red-node-timeswitch",
|
"name" : "node-red-node-timeswitch",
|
||||||
"version" : "0.0.2",
|
"version" : "0.0.3",
|
||||||
"description" : "A Node-RED node to provide a simple timeswitch to schedule daily on/off events.",
|
"description" : "A Node-RED node to provide a simple timeswitch to schedule daily on/off events.",
|
||||||
"dependencies" : {
|
"dependencies" : {
|
||||||
"suncalc": "1.6.0"
|
"suncalc": "1.6.0"
|
||||||
|
@ -285,14 +285,14 @@
|
|||||||
|
|
||||||
<script type="text/x-red" data-help-name="timeswitch">
|
<script type="text/x-red" data-help-name="timeswitch">
|
||||||
<p>Timeswitch node to schedule daily on/off events.</p>
|
<p>Timeswitch node to schedule daily on/off events.</p>
|
||||||
<p>Sets <b>msg.payload</b> to 1 at on time, and 0 at off time.</p>
|
<p>Sets <code>msg.payload</code> to 1 at on time, and 0 at off time.</p>
|
||||||
<p>Also allows the use of dawn and dusk.</p>
|
<p>Also allows the use of dawn and dusk.</p>
|
||||||
<p>Dawn and dusk times can be offset both positively (+ve) for minutes later
|
<p>Dawn and dusk times can be offset both positively (+ve) for minutes later
|
||||||
or negatively (-ve) for minutes earlier.</p>
|
or negatively (-ve) for minutes earlier.</p>
|
||||||
<p>The output emits a <b>msg.payload</b> of <i>1</i> or <i>0</i> every minute depending on
|
<p>The output emits a <code>msg.payload</code> of <i>1</i> or <i>0</i> every minute depending on
|
||||||
whether the current time is during the selected on time or off time.</p>
|
whether the current time is during the selected on time or off time.</p>
|
||||||
<p>If you just need the transitions from 0->1 or 1->0 then follow this node with an RBE node.</p>
|
<p>If you just need the transitions from 0->1 or 1->0 then follow this node with an RBE node.</p>
|
||||||
<p>You may also optionally specify a <b>msg.topic</b> if required.</p>
|
<p>You may also optionally specify a <code>msg.topic</code> if required.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
@ -72,43 +72,43 @@ module.exports = function(RED) {
|
|||||||
if ((starttime >= 5000) || (endtime == 5000) || (endtime == 6000)) {
|
if ((starttime >= 5000) || (endtime == 5000) || (endtime == 6000)) {
|
||||||
var times = SunCalc.getTimes(now, node.lat, node.lon);
|
var times = SunCalc.getTimes(now, node.lat, node.lon);
|
||||||
var startMillis = Date.UTC(times[node.start].getUTCFullYear(), times[node.start].getUTCMonth(), times[node.start].getUTCDate(), times[node.start].getUTCHours(), times[node.start].getUTCMinutes());
|
var startMillis = Date.UTC(times[node.start].getUTCFullYear(), times[node.start].getUTCMonth(), times[node.start].getUTCDate(), times[node.start].getUTCHours(), times[node.start].getUTCMinutes());
|
||||||
var endMillis = Date.UTC(times[node.end].getUTCFullYear(), times[node.end].getUTCMonth(), times[node.end].getUTCDate(), times[node.end].getUTCHours(), times[node.end].getUTCMinutes());
|
var endMillis = Date.UTC(times[node.end].getUTCFullYear(), times[node.end].getUTCMonth(), times[node.end].getUTCDate(), times[node.end].getUTCHours(), times[node.end].getUTCMinutes());
|
||||||
startMillis += nowoff;
|
startMillis += nowoff;
|
||||||
endMillis += nowoff;
|
endMillis += nowoff;
|
||||||
var dawn = ((startMillis - midnightMillis) / 60000) + Number(node.dawnoff);
|
var dawn = ((startMillis - midnightMillis) / 60000) + Number(node.dawnoff);
|
||||||
var dusk = ((endMillis - midnightMillis) / 60000) + Number(node.duskoff);
|
var dusk = ((endMillis - midnightMillis) / 60000) + Number(node.duskoff);
|
||||||
if (starttime == 5000) { starttime = dawn; }
|
if (starttime == 5000) { starttime = dawn; }
|
||||||
if (starttime == 6000) { starttime = dusk; }
|
if (starttime == 6000) { starttime = dusk; }
|
||||||
if (endtime == 5000) { endtime = dawn; }
|
if (endtime == 5000) { endtime = dawn; }
|
||||||
if (endtime == 6000) { endtime = dusk; }
|
if (endtime == 6000) { endtime = dusk; }
|
||||||
if (RED.settings.verbose) { node.log("Dawn " + parseInt(dawn / 60) + ":" + dawn % 60 + " - Dusk " + parseInt(dusk / 60) + ":" + dusk % 60); }
|
if (RED.settings.verbose) { node.log("Dawn " + parseInt(dawn / 60) + ":" + dawn % 60 + " - Dusk " + parseInt(dusk / 60) + ":" + dusk % 60); }
|
||||||
}
|
}
|
||||||
|
|
||||||
var proceed = 0;
|
var proceed = 0;
|
||||||
switch (now.getDay()) {
|
switch (now.getDay()) {
|
||||||
case 0 : { if (node.sun) { proceed++ } break; }
|
case 0 : { if (node.sun) { proceed++; } break; }
|
||||||
case 1 : { if (node.mon) { proceed++ } break; }
|
case 1 : { if (node.mon) { proceed++; } break; }
|
||||||
case 2 : { if (node.tue) { proceed++ } break; }
|
case 2 : { if (node.tue) { proceed++; } break; }
|
||||||
case 3 : { if (node.wed) { proceed++ } break; }
|
case 3 : { if (node.wed) { proceed++; } break; }
|
||||||
case 4 : { if (node.thu) { proceed++ } break; }
|
case 4 : { if (node.thu) { proceed++; } break; }
|
||||||
case 5 : { if (node.fri) { proceed++ } break; }
|
case 5 : { if (node.fri) { proceed++; } break; }
|
||||||
case 6 : { if (node.sat) { proceed++ } break; }
|
case 6 : { if (node.sat) { proceed++; } break; }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (proceed) {
|
if (proceed) {
|
||||||
switch (now.getMonth()) {
|
switch (now.getMonth()) {
|
||||||
case 0 : { if (node.jan) { proceed++ } break; }
|
case 0 : { if (node.jan) { proceed++; } break; }
|
||||||
case 1 : { if (node.feb) { proceed++ } break; }
|
case 1 : { if (node.feb) { proceed++; } break; }
|
||||||
case 2 : { if (node.mar) { proceed++ } break; }
|
case 2 : { if (node.mar) { proceed++; } break; }
|
||||||
case 3 : { if (node.apr) { proceed++ } break; }
|
case 3 : { if (node.apr) { proceed++; } break; }
|
||||||
case 4 : { if (node.may) { proceed++ } break; }
|
case 4 : { if (node.may) { proceed++; } break; }
|
||||||
case 5 : { if (node.jun) { proceed++ } break; }
|
case 5 : { if (node.jun) { proceed++; } break; }
|
||||||
case 6 : { if (node.jul) { proceed++ } break; }
|
case 6 : { if (node.jul) { proceed++; } break; }
|
||||||
case 7 : { if (node.aug) { proceed++ } break; }
|
case 7 : { if (node.aug) { proceed++; } break; }
|
||||||
case 8 : { if (node.sep) { proceed++ } break; }
|
case 8 : { if (node.sep) { proceed++; } break; }
|
||||||
case 9 : { if (node.oct) { proceed++ } break; }
|
case 9 : { if (node.oct) { proceed++; } break; }
|
||||||
case 10: { if (node.nov) { proceed++ } break; }
|
case 10: { if (node.nov) { proceed++; } break; }
|
||||||
case 11: { if (node.dec) { proceed++ } break; }
|
case 11: { if (node.dec) { proceed++; } break; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,11 +134,11 @@ module.exports = function(RED) {
|
|||||||
node.status({fill:"yellow", shape:"dot", text:"on until " + parseInt(newendtime / 60) + ":" + ("0" + newendtime % 60).substr(-2)});
|
node.status({fill:"yellow", shape:"dot", text:"on until " + parseInt(newendtime / 60) + ":" + ("0" + newendtime % 60).substr(-2)});
|
||||||
}
|
}
|
||||||
//else { node.status({fill:"blue",shape:"dot",text:"off"}); }
|
//else { node.status({fill:"blue",shape:"dot",text:"off"}); }
|
||||||
else { node.status({fill:"blue", shape:"dot", text:"off until " + parseInt(starttime / 60) + ":" + ("0" + starttime % 60).substr(-2)}); }
|
else { node.status({fill:"blue", shape:"dot", text:"off until " + parseInt(starttime / 60) + ":" + ("0" + starttime % 60).substr(-2)}); }
|
||||||
|
|
||||||
var msg = {};
|
var msg = {};
|
||||||
if (node.mytopic) { msg.topic = node.mytopic; }
|
if (node.mytopic) { msg.topic = node.mytopic; }
|
||||||
msg.payload = (process>=2) ? 1 : 0;
|
msg.payload = (proceed >= 2) ? 1 : 0;
|
||||||
node.send(msg);
|
node.send(msg);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -161,15 +161,15 @@ module.exports = function(RED) {
|
|||||||
if (node != null) {
|
if (node != null) {
|
||||||
try {
|
try {
|
||||||
node.emit("input", {payload:"reset"});
|
node.emit("input", {payload:"reset"});
|
||||||
res.send(200);
|
res.sendStatus(200);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
res.send(500);
|
res.sendStatus(500);
|
||||||
node.error("Inject failed:" + err);
|
node.error("Inject failed:" + err);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
res.send(404);
|
res.sendStatus(404);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
RED.nodes.registerType("timeswitch", TimeswitchNode);
|
RED.nodes.registerType("timeswitch", TimeswitchNode);
|
||||||
}
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user