2013-10-19 15:31:42 +02:00
< script type = "text/x-red" data-template-name = "sunrise" >
< div class = "form-row" >
2014-07-15 11:15:04 +02:00
< label for = "node-input-lat" > < i class = "fa fa-globe" > < / i > Latitude< / label >
2013-10-19 15:31:42 +02:00
< input type = "text" id = "node-input-lat" placeholder = "51.025" >
< / div >
< div class = "form-row" >
2014-07-15 11:15:04 +02:00
< label for = "node-input-lon" > < i class = "fa fa-globe" > < / i > Longitude< / label >
2013-10-19 15:31:42 +02:00
< input type = "text" id = "node-input-lon" placeholder = "-1.4" >
< / div >
< div class = "form-row" >
2014-07-15 11:15:04 +02:00
< label for = "node-input-start" > < i class = "fa fa-clock-o" > < / i > Start< / label >
2013-10-19 15:31:42 +02:00
< select id = "node-input-start" style = 'width:70%' >
< option value = "sunrise" > Sunrise< / option >
< option value = "sunriseEnd" > Sunrise end< / option >
< option value = "dawn" > Dawn, morning civil twilight starts< / option >
< option value = "goldenHourEnd" > End of morning golden hour< / option >
< option value = "nauticalDawn" > Morning nautical twilight starts< / option >
< option value = "nightEnd" > Morning astronomical twilight starts< / option >
< / select >
< / div >
< div class = "form-row" >
2014-07-15 11:15:04 +02:00
< label for = "node-input-end" > < i class = "fa fa-clock-o" > < / i > End< / label >
2013-10-19 15:31:42 +02:00
< select id = "node-input-end" style = 'width:70%' >
< option value = "sunset" > Sunset, civil twilight starts< / option >
< option value = "sunsetStart" > Sunset start< / option >
< option value = "goldenHour" > Start of evening golden hour< / option >
< option value = "dusk" > Dusk, Evening astronomical twilight starts< / option >
< option value = "nauticalDusk" > Evening nautical twilight starts< / option >
< option value = "night" > Dark enough for astronomy< / option >
< / select >
< / div >
< div class = "form-row" >
2014-07-15 11:15:04 +02:00
< label for = "node-input-name" > < i class = "fa fa-tag" > < / i > Name< / label >
2013-10-19 15:31:42 +02:00
< input type = "text" id = "node-input-name" placeholder = "Name" >
< / div >
< / script >
< 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 > 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 >
2016-02-15 12:12:29 +01:00
< 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.
2013-10-19 16:37:20 +02:00
The second output emits only on the transition between night to day (< i > -> 1< / i > ) or day to night (< i > -> 0< / i > ).< / p >
2016-02-15 12:12:29 +01:00
< 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 >
2013-10-19 15:31:42 +02:00
< / script >
< script type = "text/javascript" >
RED.nodes.registerType('sunrise',{
category: 'advanced-input',
color:"#ffcc66",
defaults: {
name: {value:""},
lat: {value:"", required:true, validate:RED.validators.number()},
lon: {value:"", required:true, validate:RED.validators.number()},
2014-09-07 22:56:49 +02:00
start: {value:"sunrise", required:true},
end: {value:"sunset", required:true}
2013-10-19 15:31:42 +02:00
},
inputs:0,
outputs:2,
2017-01-29 18:47:06 +01:00
outputLabels: ["once per minute","only on change"],
2013-10-19 15:31:42 +02:00
icon: "sun.png",
label: function() {
return this.name||"Sun rise/set";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
2014-09-07 22:56:49 +02:00
},
oneditprepare: function() {
if (($("#node-input-lat").val() === "") & & ($("#node-input-lon").val() === "")) {
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function(position) {
$("#node-input-lat").val(Number(position.coords.latitude.toFixed(5)));
$("#node-input-lon").val(Number(position.coords.longitude.toFixed(5)));
});
}
}
2013-10-19 15:31:42 +02:00
}
});
< / script >