mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-28 04:02:12 +00:00
adjusted openweathermap module to work with /forecast and forecast/daily
This commit is contained in:
parent
9457d95c3f
commit
77640714cc
@ -56,8 +56,6 @@ WeatherProvider.register("openweathermap", {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** OpenWeatherMap Specific Methods - These are not part of the default provider methods */
|
/** OpenWeatherMap Specific Methods - These are not part of the default provider methods */
|
||||||
/*
|
/*
|
||||||
* Gets the complete url for the request
|
* Gets the complete url for the request
|
||||||
@ -87,6 +85,21 @@ WeatherProvider.register("openweathermap", {
|
|||||||
* Generate WeatherObjects based on forecast information
|
* Generate WeatherObjects based on forecast information
|
||||||
*/
|
*/
|
||||||
generateWeatherObjectsFromForecast(forecasts) {
|
generateWeatherObjectsFromForecast(forecasts) {
|
||||||
|
|
||||||
|
if (this.config.weatherEndpoint == "/forecast") {
|
||||||
|
return this.fetchForecastHourly(forecasts);
|
||||||
|
} else if (this.config.weatherEndpoint == "/forecast/daily") {
|
||||||
|
return this.fetchForecastDaily(forecasts);
|
||||||
|
}
|
||||||
|
// if weatherEndpoint does not match forecast or forecast/daily, what should be returned?
|
||||||
|
const days = [new WeatherObject(this.config.units)];
|
||||||
|
return days;
|
||||||
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fetch forecast information for 3-hourly forecast (available for free subscription).
|
||||||
|
*/
|
||||||
|
fetchForecastHourly(forecasts) {
|
||||||
// initial variable declaration
|
// initial variable declaration
|
||||||
const days = [];
|
const days = [];
|
||||||
// variables for temperature range and rain
|
// variables for temperature range and rain
|
||||||
@ -104,10 +117,17 @@ WeatherProvider.register("openweathermap", {
|
|||||||
// add values from forecast to corresponding variables
|
// add values from forecast to corresponding variables
|
||||||
minTemp.push(forecast.main.temp_min);
|
minTemp.push(forecast.main.temp_min);
|
||||||
maxTemp.push(forecast.main.temp_max);
|
maxTemp.push(forecast.main.temp_max);
|
||||||
|
|
||||||
|
if (forecast.hasOwnProperty("rain")) {
|
||||||
if (this.config.units === "imperial" && !isNaN(forecast.rain["3h"])) {
|
if (this.config.units === "imperial" && !isNaN(forecast.rain["3h"])) {
|
||||||
rain += forecast.rain["3h"] / 25.4;
|
rain += forecast.rain["3h"] / 25.4;
|
||||||
} else {
|
} else if (!isNaN(forecast.rain["3h"])){
|
||||||
rain += forecast.rain["3h"];
|
rain += forecast.rain["3h"];
|
||||||
|
} else {
|
||||||
|
rain += 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rain += 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// a new day
|
// a new day
|
||||||
@ -122,7 +142,7 @@ WeatherProvider.register("openweathermap", {
|
|||||||
|
|
||||||
minTemp = [];
|
minTemp = [];
|
||||||
maxTemp = [];
|
maxTemp = [];
|
||||||
rain *= 0;
|
rain = 0;
|
||||||
|
|
||||||
// set new date
|
// set new date
|
||||||
date = moment(forecast.dt, "X").format("YYYY-MM-DD");
|
date = moment(forecast.dt, "X").format("YYYY-MM-DD");
|
||||||
@ -138,15 +158,48 @@ WeatherProvider.register("openweathermap", {
|
|||||||
maxTemp.push(forecast.main.temp_max);
|
maxTemp.push(forecast.main.temp_max);
|
||||||
if (this.config.units === "imperial" && !isNaN(forecast.rain["3h"])) {
|
if (this.config.units === "imperial" && !isNaN(forecast.rain["3h"])) {
|
||||||
rain += forecast.rain["3h"] / 25.4;
|
rain += forecast.rain["3h"] / 25.4;
|
||||||
} else {
|
} else if (!isNaN(forecast.rain["3h"])){
|
||||||
rain += forecast.rain["3h"];
|
rain += forecast.rain["3h"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return days.slice(1);
|
return days.slice(1);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fetch forecast information for daily forecast (available for paid subscription or old apiKey).
|
||||||
|
*/
|
||||||
|
fetchForecastDaily(forecasts) {
|
||||||
|
// initial variable declaration
|
||||||
|
const days = [];
|
||||||
|
|
||||||
|
for (const forecast of forecasts) {
|
||||||
|
const weather = new WeatherObject(this.config.units);
|
||||||
|
|
||||||
|
weather.date = moment(forecast.dt, "X");
|
||||||
|
weather.minTemperature = forecast.temp.min;
|
||||||
|
weather.maxTemperature = forecast.temp.max;
|
||||||
|
weather.weatherType = this.convertWeatherType(forecast.weather[0].icon);
|
||||||
|
|
||||||
|
// forecast.rain not available if amount is zero
|
||||||
|
if (forecast.hasOwnProperty("rain")) {
|
||||||
|
if (this.config.units === "imperial" && !isNaN(forecast.rain)) {
|
||||||
|
weather.rain = forecast.rain / 25.4;
|
||||||
|
} else if (!isNaN(forecast.rain["3h"])){
|
||||||
|
weather.rain = forecast.rain;
|
||||||
|
} else {
|
||||||
|
weather.rain = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
weather.rain = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
days.push(weather);
|
||||||
|
}
|
||||||
|
|
||||||
|
return days;
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert the OpenWeatherMap icons to a more usable name.
|
* Convert the OpenWeatherMap icons to a more usable name.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user