weather: fetch and expose precipitation and snowfall
This commit is contained in:
1 parent
e3250a34da
commit
c769a6dff3
2 files changed
+62
-2
No files matched your search
+49
-2
@@ -2131,10 +2131,21 @@ window.weatherThemes = {
|
||||
}
|
||||
|
||||
function fetchWeather() {
|
||||
var WEATHER_CFG = (window.CONFIG && window.CONFIG.weather) || {};
|
||||
var currentFields = ['temperature_2m', 'relative_humidity_2m', 'weather_code', 'wind_speed_10m', 'wind_direction_10m'];
|
||||
var hourlyFields = ['temperature_2m', 'weather_code', 'wind_speed_10m', 'wind_direction_10m'];
|
||||
if (WEATHER_CFG.precipitation !== false) {
|
||||
currentFields.push('precipitation');
|
||||
hourlyFields.push('precipitation');
|
||||
}
|
||||
if (WEATHER_CFG.snowfall !== false) {
|
||||
currentFields.push('snowfall');
|
||||
hourlyFields.push('snowfall');
|
||||
}
|
||||
var url = 'https://api.open-meteo.com/v1/forecast?latitude=' + WEATHER_LAT +
|
||||
'&longitude=' + WEATHER_LON +
|
||||
'¤t=temperature_2m,relative_humidity_2m,weather_code,wind_speed_10m,wind_direction_10m' +
|
||||
'&hourly=temperature_2m,weather_code,wind_speed_10m,wind_direction_10m' +
|
||||
'¤t=' + currentFields.join(',') +
|
||||
'&hourly=' + hourlyFields.join(',') +
|
||||
'&daily=weather_code,temperature_2m_max,temperature_2m_min' +
|
||||
'&timezone=Europe/Berlin&forecast_days=5';
|
||||
|
||||
@@ -2151,6 +2162,15 @@ window.weatherThemes = {
|
||||
speedKmh: Number(data.current.wind_speed_10m || 0),
|
||||
dirDeg: Number(data.current.wind_direction_10m || 0)
|
||||
};
|
||||
window.__currentWeather = {
|
||||
code: Number(data.current.weather_code || 0),
|
||||
tempC: Number(data.current.temperature_2m || 0),
|
||||
humidity: Number(data.current.relative_humidity_2m || 0),
|
||||
precipMm: Number(data.current.precipitation || 0),
|
||||
snowMm: Number(data.current.snowfall || 0),
|
||||
windKmh: Number(data.current.wind_speed_10m || 0),
|
||||
windDirDeg: Number(data.current.wind_direction_10m || 0)
|
||||
};
|
||||
// while the weather sim runs it owns the theme - a live
|
||||
// poll must not override the configured test weather
|
||||
if (!__weatherSimActive)
|
||||
@@ -2171,6 +2191,15 @@ window.weatherThemes = {
|
||||
speedKmh: Number(rec.json.current.wind_speed_10m || 0),
|
||||
dirDeg: Number(rec.json.current.wind_direction_10m || 0)
|
||||
};
|
||||
window.__currentWeather = {
|
||||
code: Number(rec.json.current.weather_code || 0),
|
||||
tempC: Number(rec.json.current.temperature_2m || 0),
|
||||
humidity: Number(rec.json.current.relative_humidity_2m || 0),
|
||||
precipMm: Number(rec.json.current.precipitation || 0),
|
||||
snowMm: Number(rec.json.current.snowfall || 0),
|
||||
windKmh: Number(rec.json.current.wind_speed_10m || 0),
|
||||
windDirDeg: Number(rec.json.current.wind_direction_10m || 0)
|
||||
};
|
||||
if (!__weatherSimActive)
|
||||
setWeatherTheme(getWeatherThemeName(currentWeatherCode));
|
||||
updateWeatherDisplay();
|
||||
@@ -2234,6 +2263,15 @@ window.weatherThemes = {
|
||||
dirDeg: Number(hourly.wind_direction_10m[curIdx] || 0)
|
||||
};
|
||||
}
|
||||
window.__currentWeather = {
|
||||
code: Number(curCode || 0),
|
||||
tempC: Number(curTemp || 0),
|
||||
humidity: Number(current.relative_humidity_2m || 0),
|
||||
precipMm: Number((hourly.precipitation && hourly.precipitation[curIdx]) || 0),
|
||||
snowMm: Number((hourly.snowfall && hourly.snowfall[curIdx]) || 0),
|
||||
windKmh: Number(window.__currentWind ? window.__currentWind.speedKmh : 0),
|
||||
windDirDeg: Number(window.__currentWind ? window.__currentWind.dirDeg : 0)
|
||||
};
|
||||
if (!__weatherSimActive && curCode !== currentWeatherCode) {
|
||||
currentWeatherCode = curCode;
|
||||
setWeatherTheme(getWeatherThemeName(curCode));
|
||||
@@ -2256,6 +2294,15 @@ window.weatherThemes = {
|
||||
speedKmh: Number(curWindSpeed || 0),
|
||||
dirDeg: Number(curWindDir || 0)
|
||||
};
|
||||
window.__currentWeather = {
|
||||
code: Number(curCode || 0),
|
||||
tempC: Number(curTemp || 0),
|
||||
humidity: Number(current.relative_humidity_2m || 0),
|
||||
precipMm: Number(current.precipitation || 0),
|
||||
snowMm: Number(current.snowfall || 0),
|
||||
windKmh: Number(curWindSpeed || 0),
|
||||
windDirDeg: Number(curWindDir || 0)
|
||||
};
|
||||
var windDisplay = currentUnits === 'imperial'
|
||||
? Math.round(curWindSpeed * 0.621371) + ' mph'
|
||||
: Math.round(curWindSpeed) + ' km/h';
|
||||
|
||||
@@ -105,6 +105,19 @@ window.CONFIG = {
|
||||
weatherSimInterval: 30000, // ms per weather step when weatherSim is true
|
||||
// weatherSim: true, weatherSimInterval: 15000
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Weather data
|
||||
// ------------------------------------------------------------------
|
||||
// Open-Meteo fields used by the scene. These knobs only control which
|
||||
// optional weather values are requested and exposed as window.__currentWeather.
|
||||
weather: {
|
||||
precipitation: true, // mm/h total precipitation
|
||||
snowfall: true, // cm/h snowfall
|
||||
hourly: true, // use hourly values for the simulated clock
|
||||
// weather: { precipitation: false, snowfall: false, hourly: false }
|
||||
// weather: { precipitation: true, snowfall: true }
|
||||
},
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Tiles and caches
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user