40 lines
923 B
JavaScript
40 lines
923 B
JavaScript
const { EventEmitter } = require('events');
|
|
const axios = require('axios');
|
|
const log = require('loglevel');
|
|
|
|
const AACHEN = 3247449;
|
|
const STEINFURT = 2828105;
|
|
|
|
class WeatherData extends EventEmitter {
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
get initial() {
|
|
return { aachen: null };
|
|
}
|
|
|
|
start() {
|
|
this.fetch();
|
|
|
|
setInterval(() => {
|
|
this.fetch();
|
|
}, 5*60000);
|
|
}
|
|
|
|
fetch() {
|
|
Promise.all([
|
|
axios.get(`https://api.openweathermap.org/data/2.5/weather?id=${AACHEN}&units=metric&appid=f16fb438a43a12fb3347ca17937649be`).catch(err => log.error(err.config.url, err.message)),
|
|
]).then(resp => {
|
|
let aachen = null;
|
|
|
|
if (resp[0] != undefined) {
|
|
aachen = resp[0].data.main.temp + "°C";
|
|
}
|
|
|
|
this.emit("data", { aachen });
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = new WeatherData(); |