mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	add some status to suncalc (to see how it looks)
This commit is contained in:
		| @@ -14,44 +14,47 @@ | ||||
|  * limitations under the License. | ||||
|  **/ | ||||
|  | ||||
| var RED = require(process.env.NODE_RED_HOME+"/red/red"); | ||||
| var SunCalc = require('suncalc'); | ||||
| module.exports = function(RED) { | ||||
|     var SunCalc = require('suncalc'); | ||||
|  | ||||
| function SunNode(n) { | ||||
|     RED.nodes.createNode(this,n); | ||||
|     this.lat = n.lat; | ||||
|     this.lon = n.lon; | ||||
|     this.start = n.start; | ||||
|     this.end = n.end; | ||||
|     function SunNode(n) { | ||||
|         RED.nodes.createNode(this,n); | ||||
|         this.lat = n.lat; | ||||
|         this.lon = n.lon; | ||||
|         this.start = n.start; | ||||
|         this.end = n.end; | ||||
|  | ||||
|     var node = this; | ||||
|     var oldval = null; | ||||
|         var node = this; | ||||
|         var oldval = null; | ||||
|  | ||||
|     this.tick = setInterval(function() { | ||||
|         var now = new Date(); | ||||
|         var hour = now.getUTCHours(); | ||||
|         var mins = now.getUTCMinutes(); | ||||
|         var times = SunCalc.getTimes(now, node.lat, node.lon); | ||||
|         var hour1 = times[node.start].getUTCHours(); | ||||
|         var mins1 = times[node.start].getUTCMinutes(); | ||||
|         var hour2 = times[node.end].getUTCHours(); | ||||
|         var mins2 = times[node.end].getUTCMinutes(); | ||||
|         var e1 = (hour*60+mins) - (hour1*60+mins1); | ||||
|         var e2 = (hour*60+mins) - (hour2*60+mins2); | ||||
|         var moon = SunCalc.getMoonIllumination(now).fraction; | ||||
|         msg = { payload:0, topic:"sun", moon:moon }; | ||||
|         if ((e1 > 0) & (e2 < 0)) { msg.payload = 1; } | ||||
|         if (oldval == null) { oldval = msg.payload; } | ||||
|         if (msg.payload != oldval) { | ||||
|             oldval = msg.payload; | ||||
|             msg2 = msg; | ||||
|             node.send( [msg,msg2] ); | ||||
|         } | ||||
|         else { node.send(msg); } | ||||
|     }, 60000); | ||||
|         this.tick = setInterval(function() { | ||||
|             var now = new Date(); | ||||
|             var hour = now.getUTCHours(); | ||||
|             var mins = now.getUTCMinutes(); | ||||
|             var times = SunCalc.getTimes(now, node.lat, node.lon); | ||||
|             var hour1 = times[node.start].getUTCHours(); | ||||
|             var mins1 = times[node.start].getUTCMinutes(); | ||||
|             var hour2 = times[node.end].getUTCHours(); | ||||
|             var mins2 = times[node.end].getUTCMinutes(); | ||||
|             var e1 = (hour*60+mins) - (hour1*60+mins1); | ||||
|             var e2 = (hour*60+mins) - (hour2*60+mins2); | ||||
|             var moon = SunCalc.getMoonIllumination(now).fraction; | ||||
|             msg = { payload:0, topic:"sun", moon:moon }; | ||||
|             if ((e1 > 0) & (e2 < 0)) { msg.payload = 1; } | ||||
|             if (oldval == null) { oldval = msg.payload; } | ||||
|             if (msg.payload == 1) { node.status({fill:"yellow",shape:"dot",text:"day"},true); } | ||||
|             else { node.status({fill:"blue",shape:"dot",text:"night"},true); } | ||||
|             if (msg.payload != oldval) { | ||||
|                 oldval = msg.payload; | ||||
|                 msg2 = msg; | ||||
|                 node.send( [msg,msg2] ); | ||||
|             } | ||||
|             else { node.send(msg); } | ||||
|         }, 60000); | ||||
|  | ||||
|     this.on("close", function() { | ||||
|         clearInterval(this.tick); | ||||
|     }); | ||||
|         this.on("close", function() { | ||||
|             clearInterval(this.tick); | ||||
|         }); | ||||
|     } | ||||
|     RED.nodes.registerType("sunrise",SunNode); | ||||
| } | ||||
| RED.nodes.registerType("sunrise",SunNode); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user