-
Notifications
You must be signed in to change notification settings - Fork 68
/
node_helper.js
72 lines (50 loc) · 2.48 KB
/
node_helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*********************************
Node Helper for MMM-DarkSkyForecast.
This helper is responsible for the data pull from Dark Sky.
At a minimum the API key, Latitude and Longitude parameters
must be provided. If any of these are missing, the request
to Dark Sky will not be executed, and instead an error
will be output the the MagicMirror log.
Additional, this module supplies two optional parameters:
units - one of "ca", "uk2", "us", or "si"
lang - Any of the languages Dark Sky supports, as listed here: https://darksky.net/dev/docs#response-format
The Dark Sky API request looks like this:
https://api.darksky.net/forecast/API_KEY/LATITUDE,LONGITUDE?units=XXX&lang=YY
*********************************/
var NodeHelper = require("node_helper");
var request = require("request");
var moment = require("moment");
module.exports = NodeHelper.create({
start: function() {
console.log("====================== Starting node_helper for module [" + this.name + "]");
},
socketNotificationReceived: function(notification, payload){
if (notification === "DARK_SKY_FORECAST_GET") {
var self = this;
if (payload.apikey == null || payload.apikey == "") {
console.log( "[MMM-DarkSkyForecast] " + moment().format("D-MMM-YY HH:mm") + " ** ERROR ** No API key configured. Get an API key at https://darksky.net" );
} else if (payload.latitude == null || payload.latitude == "" || payload.longitude == null || payload.longitude == "") {
console.log( "[MMM-DarkSkyForecast] " + moment().format("D-MMM-YY HH:mm") + " ** ERROR ** Latitude and/or longitude not provided." );
} else {
//make request to Dark Sky API
var url = "https://api.darksky.net/forecast/" +
payload.apikey + "/" +
payload.latitude + "," + payload.longitude +
"?units=" + payload.units +
"&lang=" + payload.language;
// "&exclude=minutely"
// console.log("[MMM-DarkSkyForecast] Getting data: " + url);
request({url: url, method: "GET"}, function( error, response, body) {
if(!error && response.statusCode == 200) {
//Good response
var resp = JSON.parse(body);
resp.instanceId = payload.instanceId;
self.sendSocketNotification("DARK_SKY_FORECAST_DATA", resp);
} else {
console.log( "[MMM-DarkSkyForecast] " + moment().format("D-MMM-YY HH:mm") + " ** ERROR ** " + error );
}
});
}
}
},
});