const axios = require('axios');
const apiUrl = "https://api.openweathermap.org/data/3.0/onecall";
const apiParams = {
lat: 48.34743,
lon: 14.71785,
appid: "2f47e79aff3a76e63912638247d765f3",
units: "metric"
};
const basePath = "javascript.0.variables.OpenWeatherMap.";
fetchWeatherData();
let dtHeute = new Date(Date.now()),
intStundeAktuell = dtHeute.getHours(),
tagZahl = dtHeute.getDay(),
strWochentag = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag' ],
strDatumZeit = formatDate(new Date(dtHeute), ', DD.MM.YYYY');
strDatumZeit = strWochentag[tagZahl] + strDatumZeit;
async function fetchWeatherData() {
try {
const response = await axios.get(apiUrl, { params: apiParams });
const weatherData = response.data;
//console.log("Wetterdaten: " + JSON.stringify(response.data));
setState('alias.0.Wetter.WetterDatumZeit', new Date(Date.now()), false);
setState('alias.0.Wetter.WetterDatumZeitEU', strDatumZeit, false);
createAndSetState(`${basePath}current.temp`, weatherData.current.temp, "number", "°C");
createAndSetState(`${basePath}current.humidity`, weatherData.current.humidity, "number", "%");
createAndSetState(`${basePath}current.weather`, weatherData.current.weather[0].description, "string");
createAndSetState(`${basePath}current.wind_speed`, weatherData.current.wind_speed, "number", "m/s");
createAndSetState(`${basePath}current.wind_gust`, weatherData.current.wind_gust || 0, "number", "m/s");
const isRaining = weatherData.current.weather[0].description.toLowerCase().includes("rain");
createAndSetState(`${basePath}current.raining`, isRaining, "boolean");
} catch (e) {
console.error("Fehler beim Abrufen der Wetterdaten: " + e.message);
}
}
function createAndSetState(id, value, type, unit = "") {
if (!existsState(id)) {
createState(id, value, {
type: type,
unit: unit,
read: true,
write: false
});
}
setState(id, value, true);
}
if (intStundeAktuell >= 6 && intStundeAktuell < 22) {
setInterval(function() {fetchWeatherData();}, 360000);
}