☕ Coffee Frost Monitor

Last night vs normal, and frost risk ahead

Each card is one station's most recent overnight low. Colour = how cold (warning ≤4°C, frost ≤2°C, severe ≤0°C). The badge tells you exactly which source the number came from — a grey proxy means it is not yet observed (an early forecast standing in until real data lands).

Confidence: high = WU/INMET observed & cross-check agreed medium = trustworthy but ≥3°C from the coarse reference (often a real cold-drainage night — look closer), or a single/reanalysis source low = forecast proxy (not yet observed)

Frost risk ahead

Forward ensemble probability of an overnight low at/below 2°C. Only dates with non-zero risk are shown.

Realised overnight lows — full history, every source traced

The dark line is the value we trust for each night; each dot is coloured by the source that produced it, so you can see the handover between feeds. The shaded band is the 30-year climatological normal range (5th–95th percentile); dashed lines mark the 4 / 2 / 0°C frost thresholds. Use the range control to zoom from the last 3 months out to years (on long spans the per-night dots drop away and the line shows the seasonal frost cycle). Hover any night for the source, confidence and every competing source value.

Recent nights (provenance)

Cross-PWS shows how many Wunderground stations the town has and how the coldest was treated: cold ✓ real = an extreme cold reading corroborated by near-saturation (a true frost hollow), cold ⚠ suspect = an unsupported cold outlier demoted to the next station, N PWS / 1 PWS = stations in agreement.

Forecasts — every model, overlaid on what actually happened

Recent realised lows (dark) then each deterministic model's forecast low going forward (dashed, one colour per model). The shaded band is the ensemble spread (coldest member → mean). Where models disagree, the spread between the dashed lines is the forecast uncertainty.

Forward table

Stations — where each town's number comes from

Trust-first roster. For the selected town: every Wunderground PWS mapped to it (how far, when it last reported, whether it set tonight's low), the nearest official INMET station, and whether today's value is a real observation or a proxy. A town with no PWS in range is carried by NASA POWER / INMET / a forecast proxy — shown explicitly here.

Forecast skill — the track record

How each model has actually scored against realised lows, by lead time. Bias = average (forecast − realised): positive means the model runs too warm, negative too cold. MAE = average size of the miss. Both should grow with lead time. n is the number of station-nights scored — small n means treat with caution.

Mean absolute error vs lead

Bias vs lead

Detail

Data health — how fresh and complete each feed is

Trust starts with knowing what is live. Lag is days behind today; coverage is how many of the belt's stations the feed reached. A red lag or zero coverage means the blend is leaning on the next source down.

Source precedence

When sources disagree for the same night, the blend keeps the highest-precedence one and flags (never silently overwrites) the disagreement: WundergroundINMETERA5 / MosaicNASA POWERforecast proxy. IMERG is precipitation only and is never used for temperature.

Live health-check — the exact Fathom CSVs, every raw point

A faithful local replica of the Fathom page built straight from the export CSVs (frost_monitor / _inmet_native / _wu_5min / _forecast_hourly / _realised_* / _climatology). The meteogram plots every raw observation on a true time axis — line breaks are genuine data gaps, not smoothing — so we can confirm whether a missing point is absent in the data or just dropped by Fathom's renderer. Click any table row or map dot to drive every panel.

Lowest observed — last night

Lowest forecast — any model

Forecast grid — whole belt, by region

Colour-banded overnight lows for every town, grouped by region. By model: columns are recent realised nights then forecast days for one model. By day: columns are the models for one date (plus the actual, once observed). Bands: >4 / 2–4 / 1–2 / 0–1 / ≤0°C. Click a town to drive the meteogram below. Filter/search shared with the strip above.

factors:

Meteologix model-chart maps — step through the forecast

The scraped Meteologix rendered model-chart images for the coffee belt, one per forecast timestep. Pick a model and parameter, then drag the slider (or press ▶ to play) to step from the run out to the horizon. Images load on demand from the forecast tree — nothing is embedded. When no map index is present this panel hides and the offline SVG belt map below takes over.

Meteologix model-chart map

Belt map — where is it cold

Each dot is a town — the colder it is, the bigger and redder the dot. The shaded, named areas are the six coffee regions, colour-matched to the exposure table on the right. The coldest towns are labelled with their values. Hover any dot for the town + value; click it to drive the grid above and the meteogram below. Pick the night (last realised, default) or a forecast day — and which model supplies the forecast. Same bands and metric as the grid.

Left of now = recent observations (INMET hourly, WU 5-min) plus the ERA5 reanalysis line at the town point (ringed markers = ERA5's official daily Tmin/Tmax); right = Meteologix model curves. Show max temp off collapses each line to its per-day overnight-low envelope.

Critical factors — moisture & rainfall

The frost context on the same time axis as the meteogram above: dew point (°C, left) and humidity (%, right) as hourly realised lines (INMET + WU) left of now, Open-Meteo daily forecast right of now; rainfall (mm) as daily bars along the base. On a frost night watch the temperature–dew gap close and humidity climb toward saturation. Meteologix carries no moisture, so the forecast side is Open-Meteo only.

Soil moisture — realised & multi-model forecast

Volumetric soil moisture (m³/m³) on the same time axis as the meteogram above. Left of now = ERA5 reanalysis (daily; Open-Meteo 9 km, all towns). Right = Open-Meteo model forecasts — one curve per toggled model, two layers selectable (0–7 cm surface, 7–28 cm sub-surface). Dry soils (<0.1) radiate heat quickly on calm, clear nights — increasing frost risk. WU, INMET, and Meteologix do not provide soil moisture (consumer/agro sensors not in those feeds).

Realised history — all sources, year to date

Per-source daily Tmin (and Tmax when shown) since 1 Jan 2026, over the 30-year climatological p5–p95 band; dashed lines mark the 4 / 2 / 0°C frost thresholds. With ~7-day forecast on, each model's overnight-low forecast issued about a week before each realised day is drawn dashed and model-coloured — so you can see which model tracked the obs — and graded in the table at right.

Forecast skill — ~7-day lead

Data health & realised source — selected town

Why a feed looks the way it does, and exactly which source produced tonight's number and how far away it is. WU has real holes (some towns 100% blank, others not yet pulled); INMET is continuous but often tens of km away; ERA5/POWER are gridded points at the town.