0.80.0 (2026-05-30)
GFS Supplementary Data Open-Meteo exposes lifted_index, cape, boundary_layer_height, and visibility only for the gfs_seamless model (GFS — Global Forecast System, NOAA's global numerical weather prediction model). A second, lightweight Open-Meteo request is now made in parallel with the primary model fetch — always targeting gfs_seamless — so these physically superior inputs are available regardless of which primary model the user has selected.
Improvements
- Improved atmospheric calculations now active by default: The improved seeing, transparency, fog density, and lifted-index calculations (previously behind the "Experimental Features" toggle) are now always active. The toggle is preserved in the UI but has no effect; a message is logged if it is still enabled. See the pyastroweatherio changelog for details.
- Physically tuned cloud-layer weakening defaults (
const.py): High (cirrus) → 40, medium (altocumulus) → 70, low (stratus/fog) → 100. Previous default was 100 for all layers. Existing explicitly-configured values are unaffected. - Condition weight minimum raised to 1 (
config_flow.py): The config flow no longer accepts 0 for any individual condition weight. Setting a weight to 1 is effectively negligible; setting all weights to zero caused a division-by-zero in the scoring formula.
New Features
- Binary sensor: GFS Supplementary Data (
binary_sensor.py,strings.json,translations/): New binary sensor that indicates whether GFS (Global Forecast System — NOAA's global numerical weather prediction model) supplementary data (boundary-layer height, lifted index, visibility, CAPE) was successfully retrieved in the last update cycle.ONmeans the improved atmospheric calculations are using real NWP model data;OFFmeans the GFS fetch failed and atmospheric conditions (seeing, fog, lifted index) are internally estimated from surface observations. The sensor is translated in all six supported languages (en, de, fr, it, pl, sk). - Weather entity:
gfs_supplementary_dataattribute (weather.py,const.py): Thegfs_supplementary_databoolean is now exposed asATTR_WEATHER_GFS_SUPPLEMENTARY_DATAin the weather entity'sextra_state_attributes, making the GFS fetch status readable from any Lovelace card or template that consumes the weather entity without requiring direct access to the binary sensor.
Notes on methodology and accuracy
The promoted calculation variants improve the inputs and mathematics of each estimate, but all three quantities operate under fundamental constraints imposed by the data that weather APIs expose.
Lifted Index
Standard path: The Bolton (1980) approximation lifts a surface air parcel dry-adiabatically to the Lifting Condensation Level (LCL), then moist-adiabatically to 500 hPa, using only 2 m temperature, dewpoint, and sea-level pressure. The environmental temperature at 500 hPa is estimated from a fixed standard-atmosphere lapse rate — there is no actual sounding. Errors of ±3–5 °C LI are typical.
GFS path: Uses the lifted_index value computed by the GFS NWP model from its full 3-D temperature and humidity fields. This is physically far more accurate because the model has complete profile information. GFS horizontal resolution is ~13 km, which is adequate for a synoptic-scale stability indicator.
Why it may differ from Meteoblue: Meteoblue derives LI from ECMWF or GFS soundings too, but may apply additional post-processing, blend multiple models, or display a different vertical layer (e.g. surface-based vs. most-unstable parcel). Differences of 1–2 °C between providers are normal.
Seeing
Surface-only path: Purely empirical; estimates a seeing factor from near-surface water vapour pressure, wind speed, and relative pressure, then converts to arcseconds. Captures only the lowest few metres of the atmosphere.
GFS path: The planetary boundary layer (PBL) height is the primary driver (60 % weight). A shallow, stable nocturnal boundary layer (100–300 m) indicates good seeing; a deep daytime convective layer (> 1500 m) indicates poor seeing.
Fundamental limitation — free-atmosphere turbulence is not captured: Astronomical seeing has two independent components:
- Boundary-layer turbulence (lowest 1–2 km): captured reasonably well by PBL height and surface wind. Typically contributes 0.3–0.8″ FWHM.
- Free-atmosphere turbulence (2–20 km, dominated by the jet stream): contributes 0.5–1.5″ FWHM and accounts for 60–70 % of the total variance in seeing at most mid-latitude sites.
GFS does not expose upper-atmosphere turbulence metrics via the Open-Meteo API. Meteoblue's seeing forecast is based on the Antoniazzi–Giordano model, which uses wind speed and wind shear at multiple pressure levels (300, 200 hPa) extracted from ECMWF IFS — this is why Meteoblue can resolve the free-atmosphere component. A further timing effect: the GFS PBL is at its daily maximum near sunset (1500–2500 m in spring/summer), causing the seeing estimate to spike just as observations begin; the nocturnal stable boundary layer typically collapses to 100–500 m within 1–2 hours after sunset.
Transparency / Magnitude Degradation
Surface-only path: Linearly combines normalised temperature, humidity, wind, dewpoint, LI, seeing, pressure, cloud cover, and altitude with equal weights. Physically not very motivated.
Promoted path: Uses the Pogson relation mag_loss = −2.5·log₁₀(transparency) where transparency is assembled from physically motivated penalties (cloud cover 50 %, humidity haze 18 %, wind-blown aerosol 12 %, LI instability 10 %, seeing correlation 10 %).
Fundamental limitation — aerosol and water vapour column: Real atmospheric extinction is dominated by Rayleigh scattering (well-modelled from pressure), aerosol extinction (AOD — now partially addressed via CAMS), and precipitable water vapour (PWV — requires a humidity sounding, not just 2 m RH). Meteoblue uses CAMS aerosol forecasts and ECMWF PWV columns, which is why it can distinguish a hazy high-humidity night from a dry night with similar cloud cover.