Beispiel #1
0
    daily: function (req, res) {
        var options = {
            exclude: 'currently,minutely,hourly,flags,alerts',
            units:   'si',
            APIKey: nconf.get('cloud:forecastio:apitoken')
        };

        var forecast = new Forecast(options);

        var latitude=nconf.get('app:latitude');
        var longitude=nconf.get('app:longitude');

        forecast.get(latitude, longitude, options, function (err, resp, data) {
            if (err) throw err;

            moment.lang('bg');

            data.daily.data.splice(0,1);
            
            data.daily.data.forEach(function(day) {
                data.icon = convertForecastIconToLocal(data.icon);
                day.time = moment.unix(day.time).format('ll');
            });

            res.json(data);
        });
    }
Beispiel #2
0
/**
 * get Forecast.io current weather data
 */
function getWeather() {
	
	//  APIKey: process.env.FORECAST_API_KEY
	var key = {
		APIKey:  "756a4a008fed90be13cd417dd4a3f60e",
		exclude: "minutely,hourly,daily,flags,alerts",
		units:   "si"
	};
	var forecast = new Forecast(key);
	
	// Coordonnees de Chevaigne
	var latitude  = "48.2097";
	var longitude = "-1.6298";
	
	var options = {
		units:   "si",
		exclude: "currently,minutely,daily,flags,alerts"
	};
	
	var enddate = moment('2013-05-17');	
	debug('start getweather');
	
	var currentdate = moment('2013-05-16');
	while (currentdate < enddate) {
		forecast.getAtTime(latitude, longitude, currentdate.unix(), options, insertWeatherData);
		currentdate.add('days',1);
	}
	
	debug('end getweather');
}
Beispiel #3
0
ForecastIO.prototype.getWeather = function(lat, lon, cb) {
  var client = new Forecast({
    APIKey: this.config.apiKey
  });

  client.get(lat, lon, function(err, res, data) {
      cb(err, data);
  });

};
Beispiel #4
0
exports.weather_raintoday = function (api, params) {

	function weather (now) {

		var summary = '';

		if (!now.precipIntensity) {
			summary = summary+rnd(['Осадков нет', 'Сейчас осадков нет', "Осадков сейчас нет", "На данный момент осадков нет", "На сей момент осадков нет", "Сейчас нет осадков", "Осадков на сей момент нет", "Осадки на данный момент отсутствуют", "Сейчас осадки отсутствуют" ,'Нет осадков', "Дождя или снега нет"]);
			if (!now.precipProbability) {
				summary = summary+rnd([' и не ожидается.', ' и не будет.', " да и не будет.", " да и не ожидается."]);
			} else {
				if (now.precipProbability < 0.2) {
					summary = summary+rnd([', но возможны, хотя и с ничтожно малой вероятностью.', ', но вероятны.', ", но могут внезапно выпасть.", ", но их вероятность отрицать не стану.", ", однако с малой вероятностью возможны.", ", однако теоритически возможны.", ", но может быть да и выпадут."]);
				} else if (now.precipProbability < 0.5) {
					summary = summary+rnd([', но, возможно, будут.', ", но возможны.", ", однако стоит их ожидать.", ", но, возможно, стоит к ним приготовиться", ", но, возможно, стоит к ним подготовиться"]);
				} else if (now.precipProbability < 0.7) {
					summary = summary+rnd([', хотя скорее всего все-же будут.', ", но я их предвижу.", ", но я чуствую их приближение.", ", но скорее всего будут.", ", но синоптики их предвещают.", ", но видимо скоро будут."]);
				} else {
					summary = summary+rnd([', но я уверен что будут.', ', но будут.', ", но синпотики их обещают.", ", но точно будут.", ", но очевидно они выпадут."]);
				}
			}
		} else {
			summary = summary+rnd([' Есть осадки, с интенсивностью где-то ', ' Имеются осадки интенсивностью в ', " Имеются осадки с интенсивностью порядка ", " Есть осадки с интенсивностью ", " Есть осадки интенсивностью в ", " Осадки интенсивностью ", " Осадки с интенсивностью ", " Осадки "])+precipIntensity+' баллов.';
		}

		api.print(summary, {});
	}


	if (!last_update.today) {
		forecast.get(59.95, 30.316667, function (err, res, data) {
			if (err) {
				api.print([{text:'[ERROR]', color:'#F00'}, {text:''+err}], {notify: true, sound: 'error.mp3'});
				return false;
			}
			weather(data.currently);
			cache.today = data.currently;
			last_update.today = Date.now();
		});
	} else if (Date.now() - last_update.today > 60*60*1000) {
		forecast.get(59.95, 30.316667, function (err, res, data) {
			if (err) {
				api.print([{text:'[ERROR]', color:'#F00'}, {text:''+err}], {notify: true, sound: 'error.mp3'});
				return false;
			}
			weather(data.currently);
			cache.today = data.currently;
			last_update.today = Date.now();
		});
	} else {
		weather(cache.today);
	}
};
  'send-forcast' : function (req, res) {

    if(req.session.user == undefined || req.session.user == null) {
      res.redirect("/");
      return;
    }

    var options = {
      APIKey : "be4ca0bdfd85a3bcec904b2cdc85a742"
    };

    var forcast = new Forcast(options);

    Region.findOne({
      region_code : req.session.user.region
    }).done(function(err, region) {
        forcast.get(region.loc.lat, region.loc.long, function(err, res, data) {
          console.log(data.currently);
          Forcasts.create({
            region_code : region.region_code,
            forcast : data.currently
          }).done(function(err, forcast){
            return sendFireFlyRequest(req, res, forcast, req.session.user);
            res.redirect("/user/dashboard");
          });
        });
    });

  }
Beispiel #6
0
    cache.get(cacheKey, function(mcErr, fc){
      if (mcErr) console.error(mcErr);

      if (fc)  {
        cache.close();
        return callback(null, JSON.parse(fc));
      }

      forecastIo.get(lat, lng, function(fioErr, res, data){
        if (fioErr) return callback(fioErr);

        var fc = data;

        var ret = {
          time_queried   : fc.currently.time,
          currently: {
            wind_speed     : fc.currently.windSpeed,
            wind_bearing   : fc.currently.windBearing,
            temperature    : fc.currently.temperature,
            humidity       : fc.currently.humidity,
            description    : fc.currently.summary,
            time           : fc.currently.time
          },

          raw_data: data
        }

        cache.set(cacheKey, JSON.stringify(ret), function(err, success){
          if (err) console.log(err);
          cache.close();
          callback(fioErr, ret);
        }, cacheExpiration)
      })

    })
module.exports = function(key) {

  var forecast = new Forecast({APIKey: key});

  var options = {
      units: 'si'
      , lang: 'de'
      , exclude: 'minutely,hourly'
  }

  function getDetails() {
    return new Promise(function(resolve, reject) {
      forecast.get(51.459265, 7.013491, options, function(err, res, weather) {
          if(err) reject(err);
          resolve(weather);
        });
    });
  }

  var weatherService = {
    forecast: forecast
    , getDetails: getDetails
  };

  return weatherService;
}
Beispiel #8
0
app.get('/alerts', function(request, response) {
	var options = {
		exclude: 'currently,minutely,hourly,daily,flags'
	};
	forecast.get(request.query.latitude, request.query.longitude, options, function(err, res, data) {
		if (err) throw err;
		response.send(JSON.stringify(data));
	});
});
 			regions.forEach(function(region) {
 				forcast.get(region.loc.lat, region.loc.long, function(err, res, data) {
 					console.log(data.currently);
 					Forcasts.create({
 						region_code : region.region_code,
 						forcast : data.currently
 					}).done(function(err, forcast){});
 				});
 			});
Beispiel #10
0
app.get('/cluds.json', function(req, res){
	forecast.get(process.env.LATITUDE, process.env.LONGITUDE, function (err, response, data) {
	  if (err) throw err;
	  var cluds = data.hourly.data.map(function(hour) {return {hour: hour.time * 1000, cover: hour.cloudCover, precip: hour.precipProbability};});
	  var current = data.currently.summary;
	  var icon = data.currently.icon;
	  res.send({current: current, cluds: cluds, icon: icon});
	});
});
 }).done(function(err, region) {
     forcast.get(region.loc.lat, region.loc.long, function(err, res, data) {
       console.log(data.currently);
       Forcasts.create({
         region_code : region.region_code,
         forcast : data.currently
       }).done(function(err, forcast){
         return sendFireFlyRequest(req, res, forcast, req.session.user);
         res.redirect("/user/dashboard");
       });
     });
 });
Beispiel #12
0
var weather_nextday = function (api, callback) {

	var date = new Date();
	var unix = Date.now();
	var unix_seconds = Math.floor(Date.now()/1000)+24*60*60;

	forecast.getAtTime(60, 30, unix_seconds, function (err, res, data) {
		if (err) {
			throw err;
		}
		console.log(data.daily);
	});
}
Beispiel #13
0
	function findForecastIO( regionId, ymd, latitude, longitude, cb) {	
		var options = {
		  exclude: 'currently,minutely,hourly,flags,alerts'
		};
		
		forecast.get(latitude, longitude, options, function (err, res, data) {
			if (err) throw err;
			var today 		= data.daily.data[0]
			var tomorrow 	= data.daily.data[1]
			var result		= [today,tomorrow]
			//console.log('data: ' + util.inspect(data));
			//console.log('result: ' + util.inspect(result));
			cb(err, result)
		});
	}
exports.getByLocationAndDay = function(req, res) {
  var templateData = addLocationDataToTemplateData(templateData, req.params.location);
  templateData.title = 'Weather forecast for ' + templateData.location + ' for ' + utils.toProperCase(req.params.day); //TODO read actual

  forecast.get(templateData.latitude, templateData.longitude, function (err, forecastRes, data) {
    if (err) throw err;
    console.log('Got data:', data);

    templateData.date = utils.formatDate(data.currently.time);
    templateData.summary = data.daily.summary;
    templateData.temp = Math.round((data.currently.temperature - 32) / 1.8, 2); //farenheit to celcius

    res.render('index', {data: templateData});
  });
};
Beispiel #15
0
app.get('/all_weather', function(request, response) {
	forecast.get(request.query.latitude, request.query.longitude, options, function(err, res, data) {
		if (err) {
					console.log('all_weather err: ' + err)
					console.log('all_weather data: ' + data)

			// var status = data.split('<title>')[1].split(' ')[0]
			// console.log('Error in request. \nStatus: ' + status + '\nLatitude: ' + request.query.latitude + '\nLongitude: ' + request.query.longitude);
			response.status(status).send();
		} else {
			console.log('/all_weather data: ' + xinspect(data));
			response.send(JSON.stringify(data));
		}
	});
});
exports.getByLocation = function(req, res) {
  //template data is what the jade template will use
  var templateData = addLocationDataToTemplateData(templateData, req.params.location);
  templateData.title = 'Weather forecast for ' + templateData.location;

  forecast.get(templateData.latitude, templateData.longitude, function (err, forecastRes, data) {
    if (err) throw err;
    //TODO wrap in a try/catch or otherwise test that data is JSON
    templateData.date = utils.formatDate(data.currently.time * 1000); //convert to milliseconds then JS date object
    templateData.summary = data.daily.summary;
    templateData.temp = Math.round((data.currently.temperature - 32) / 1.8, 2); //farenheit to celcius

    //render the template with the template data.
    //pass it as the value to 'data' so it is clearer in the template what text is a reference to data.
    res.render('index', {data: templateData});
  });
};
var fetchForecast = function(){
	forecast.get(29.7750, -95.6130,function (err, res, data) {
		console.log("Fetched forecast");
		try{
			fullForecast = data;
			var precipProbability = data["currently"]["precipProbability"];
			var precipIntensity = data["currently"]["precipIntensity"];
			weather.getForecast();

			if(precipProbability==1 && precipIntensity > 0){
				console.log("Cancelling because of rain.");
				schedule.cancelToday();
			}
		}
		catch(ex){
			console.log("Error getting forecast.");
		}
	});
};
  forecast : function(req, res) {
  	var options = {
  		APIKey : "be4ca0bdfd85a3bcec904b2cdc85a742"
  	};

  	var forcast = new Forcast(options);
  	Region.find().done(function(err, regions) {
  		if(!err) {
  			regions.forEach(function(region) {
  				forcast.get(region.loc.lat, region.loc.long, function(err, res, data) {
  					console.log(data.currently);
  					Forcasts.create({
  						region_code : region.region_code,
  						forcast : data.currently
  					}).done(function(err, forcast){});
  				});
  			});
  		}else{
  			res.send("error");
  		}
  	});
  },
Beispiel #19
0
 .get((request, response) => {
   forecast.get(location.lat, location.lng, options, (err, res, data) => {
     if (err) throw err;
     response.json(data);
   });
 });
Beispiel #20
0
module.exports.get = function(req,cb) {
	forecast.get(latitude, longitude, options, cb);
};
Beispiel #21
0
function get_forecast(callback) {
  forecast.get(conf.lat, conf.long, {units: "si"}, function (err, res, data) {
    if (err) throw err;
    callback(data);
  });
}
Beispiel #22
0
// npm init -y
// sudo npm install forecast.io --save

var Forecast = require('forecast.io');

var weather = new Forecast( { APIKey : "92ff92fbeb70cdedef19cd5490d46f54" } );

weather.get( 51.4007,-0.8525, function( error, resource, data ) {
	if ( error ) {
		console.log( error );
	} else {
		console.log( data.currently.summary );
		console.log( data.minutely.summary );
		console.log( data.hourly.summary );
		console.log( data.daily.summary );
	}
});
Beispiel #23
0
var Forecast = require('forecast.io');
//var util = require("util");

//  APIKey: process.env.FORECAST_API_KEY
var key = {
  APIKey:  "756a4a008fed90be13cd417dd4a3f60e",
  exclude: "minutely,hourly,daily,flags,alerts",
  units:   "si"
};
var forecast = new Forecast(key);

// Coordonnees de Chevaigne
var latitude  = "48.2097";
var longitude = "-1.6298";

// Coordonnees de Rennes
//var latitude  = "48.1076";
//var longitude = "-1.6845";

var options = {
   units:   "si",
   exclude: "minutely,hourly,daily,flags,alerts"
};

//var time = new Date().getTime(); 

forecast.get(latitude, longitude, options, function (err, res, data) {
  if (err) throw err;
  else {
      //console.log('data: ' + util.inspect(data));
      var temp=data.currently.temperature;
Beispiel #24
0
var Forecast = require('forecast.io'),
	options = {
	  APIKey: process.env.FORECAST_API_KEY
	},
	forecast = new Forecast(options),
	weathercolor = require('./weathercolor.js');

forecast.get(40.681975, -74.003441, function (err, res, data) {
	if (err) throw err;
	var nowTemp = data.currently.temperature,
		todaysHigh = data.daily.data[0].temperatureMax,
		todaysLow = data.daily.data[0].temperatureMin;

	console.log(new Date())
	console.log("NOW",nowTemp)
	console.log("LOW",todaysLow)
	console.log("HIGH", todaysHigh);

	weathercolor(nowTemp)
});
Beispiel #25
0
exports.weather_today = function(api, params) {

	function weather(now){

		var summary = '';

		if (!now.precipIntensity) {
			// повторение, чтобы была мелкая вероятность выпадения "Дождя или снега нет"
			summary = summary+rnd(['Осадков нет', 'Сейчас осадков нет', "Осадков сейчас нет", "На данный момент осадков нет", "На сей момент осадков нет", "Сейчас нет осадков", "Осадков на сей момент нет", "Осадки на данный момент отсутствуют", "Сейчас осадки отсутствуют" ,'Нет осадков', "Дождя или снега нет"]);
			if (!now.precipProbability) {
				summary = summary+rnd([' и не ожидается.', ' и не будет.', " да и не будет.", " да и не ожидается."]);
			} else {
				if (now.precipProbability < 0.2) {
					summary = summary+rnd([', но возможны, хотя и с ничтожно малой вероятностью.', ', но вероятны.', ", но могут внезапно выпасть.", ", но их вероятность отрицать не стану.", ", однако с малой вероятностью возможны.", ", однако теоритически возможны.", ", но может быть да и выпадут."]);
				} else if (now.precipProbability < 0.5) {
					summary = summary+rnd([', но, возможно, будут.', ", но возможны.", ", однако стоит их ожидать.", ", но, возможно, стоит к ним приготовиться", ", но, возможно, стоит к ним подготовиться"]);
				} else if (now.precipProbability < 0.7) {
					summary = summary+rnd([', хотя скорее всего все-же будут.', ", но я их предвижу.", ", но я чуствую их приближение.", ", но скорее всего будут.", ", но синоптики их предвещают.", ", но видимо скоро будут."]);
				} else {
					summary = summary+rnd([', но я уверен что будут.', ', но будут.', ", но синпотики их обещают.", ", но точно будут.", ", но очевидно они выпадут."]);
				}
			}
		} else {
			summary = summary+rnd([' Есть осадки, с интенсивностью где-то ', ' Имеются осадки интенсивностью в ', " Имеются осадки с интенсивностью порядка ", " Есть осадки с интенсивностью ", " Есть осадки интенсивностью в ", " Осадки интенсивностью ", " Осадки с интенсивностью ", " Осадки "])+now.precipIntensity+' баллов.';
		}

		summary = summary+' Ветер '+now.windSpeed+' м/с.';
		summary = summary+' Давление '+now.pressure+' мм.';

		if (now.cloudCover) {
			if (now.cloudCover < 0.2) {
				summary = summary+rnd([' Небольшие облака.', ' Небо чисто.', " Небо чистое. ", " Небо синее.", " Безоблачно."]);
			} else if (now.cloudCover < 0.5) {
				summary = summary+rnd([' Немного облачно.', ' Небольшая облачность.', " Слегка облачно.", " Мало облаков"]);
			} else if (now.cloudCover < 0.7) {
				summary = summary+rnd([' Достаточно облачно.', " Весьма облачно.", " Небо почти всё в облаках.", "Небо почти укрыто облаками."]);
			} else {
				summary = summary+rnd([' Небо укрыто облаками.', " Небо всё в облаках.", " Небо всё закрыто.", "Неба не видно за облаками.", "Пасмурно."]);
			}
		}

		summary = summary+rnd([' Температура около ', ' Температура ', " ", " В среднем около", " Температура примерно ", " Температура где-то "])+f2c(now.temperature)+rnd([' градусов Цельсия', ' градусов', ' градусов по Цельсию', '°C'])

		api.print(summary, {});
		}

	if (!last_update.today) {
		forecast.get(59.95, 30.316667, function (err, res, data) {
			if (err) {
				api.print([{text:'[ERROR]', color:'#F00'}, {text:''+err}], {notify: true, sound: 'error.mp3'});
				return false;
			}
			weather(data.currently);
			cache.today = data.currently;
			last_update.today = Date.now();
		});
	} else if (Date.now() - last_update.today > 60*60*1000) {
		forecast.get(59.95, 30.316667, function (err, res, data) {
			if (err) {
				api.print([{text:'[ERROR]', color:'#F00'}, {text:''+err}], {notify: true, sound: 'error.mp3'});
				return false;
			}
			weather(data.currently);
			cache.today = data.currently;
			last_update.today = Date.now();
		});
	} else {
		weather(cache.today);
	}
};
 return new Promise(function(resolve, reject) {
   forecast.get(51.459265, 7.013491, options, function(err, res, weather) {
       if(err) reject(err);
       resolve(weather);
     });
 });
Beispiel #27
0
function getForecast(coord) {
	forecast.get(coord.lat, coord.lon, function (err, res, data) {
		if (err) throw err
		e.emit('weather data', data.hourly)
	});
}
function getData(latitude, longitude) {
	forecast.get(latitude, longitude, function (err, res, data) {
	  if (err) throw err;
	  processData(data);
	});
}