github Makin-Things/weather-radar-card v3.6.0-rc1

latest release: v3.6.0-rc2
pre-release2 hours ago

The 3.6 line lands two big additions to the card — animated wind from DWD's ICON-D2 forecast model, and lightning strikes from the Blitzortung integration — alongside DWD source-quality fixes, NWS alert-paint refinements, and a static-frame mode for users who just want a single current-conditions snapshot.

What's new in 3.6

DWD wind overlay

Three independent visualisation styles, all sampled from DWD's ICON-D2 10 m wind layer (the same product behind the WarnWetter app). Each can be enabled on its own or stacked.

  • dwd_wind: 'barbs' — meteorological wind barbs in WMO/Northern-Hemisphere convention. Pennants = 50 kt, full feathers = 10 kt, half feathers = 5 kt. Calm cells render as open circles.
  • dwd_wind: 'arrows' — discrete downwind arrows colour-coded by Beaufort-ish bands (calm grey → light green → moderate teal → fresh orange → strong red-orange → gale red).
  • dwd_wind_flow: true — animated Canvas2D streamlines, ~1500 particles drifting along the local wind vector with alpha-fade trails. Visually similar to the DWD WarnWetter app and earth.nullschool.net.

The wind overlay is data-source-independent — ICON is global at 0.25° resolution, so the same layer works on RainViewer / NOAA / DWD radars alike. Streamline particle count, lifetime, and pixel speed all scale with map zoom so continental views don't get painted-over and city views stay vibrant. Streamlines respect OS-level prefers-reduced-motion.

type: custom:weather-radar-card
data_source: RainViewer       # or NOAA / DWD — wind works on all three
dwd_wind: arrows
dwd_wind_flow: true

The original wind overlay implementation was contributed by @genericJE in PR #133 — barbs, arrows, streamlines, and the editor subpage. The 3.6.0-beta2 follow-up added the bulk WCS fetch architecture (60–290× fewer HTTP requests per refresh), made the overlay source-independent, and reworked the streamline visual tuning.

Lightning strikes (Blitzortung)

When the Blitzortung integration is loaded in HA, enabling show_lightning: true overlays live lightning strikes on the radar. Strikes appear as a brief flash with a lightning-bolt icon for the first 30 s ("happening now!"), then settle into a chunky + sign coloured by age — fresh white, fading through yellow → orange → coral → red → dark red, mirroring Blitzortung's own map.

show_lightning: true
lightning_max_age_minutes: 30   # card-side cap; default 30

No external HTTP from the card — the integration handles all polling, filtering, and cap setting; the card just renders. Editor toggle is greyed out with a tooltip when the integration isn't installed.

Static-frame mode

past_minutes: 0 (or History Duration "Off" in the editor) loads exactly one current frame and stays on it — no animation loop. Useful for a quick "what's the weather right now" view without the visual noise of playback. The periodic 5-minute refresh still updates the single frame.

NWS alert paint order

Overlapping alerts now sort by (severity, urgency, certainty) lexicographically rather than single-key severity. A Tornado Warning (Observed) paints over a Tornado Warning (Radar-Indicated); both paint over Severe Thunderstorm Warnings; etc. CAP-standard fields, no event-name regex.

DWD coverage-mask cross-fade fix

The grey "no-data" wash and magenta coverage outline that DWD's WMS bakes into every Niederschlagsradar / Radar_wn tile used to compound during the per-frame cross-fade and produce a visible pulse on the boundary every animation tick. Now the mask is stripped at fetch time via a pixelFilter and the outline re-rendered as a separate snap-switched overlay on a dedicated pane (z-index 350) so it doesn't participate in the cross-fade.

Two CSS theme variables let you tune or hide the overlay — set either to transparent to turn off:

--dwd-coverage-dim-color: rgba(0, 0, 0, 1);
--dwd-coverage-outline-color: rgba(255, 0, 255, 1);

This fix originated as PR #132 from @genericJE and shipped as PR #141.

Other

  • XSS-hardening pass on three popup href interpolations (NWS, wildfire, lightning). No known live exploit at any of the three sites; defensive escape protects against future refactors.
  • Per-basemap streamline colour defaults + YAML overrides — satellite gets a brighter pure-white default; light basemaps a deeper near-navy. Three new YAML-only override keys (dwd_wind_flow_color_light, _dark, _sat) accept any CSS colour string for theming.
  • Streak layering — wind streaks now render below markers, popups, wildfires, and NWS polys (in a custom Leaflet pane, z-index 250).
  • Dateline wrap — Pacific-centred low-zoom views now show wind across the wrapped strip too.
  • Edit-mode re-init fix — radar tiles no longer disappear when entering HA's edit mode.

Tests

316 → 403 across the 3.6 cycle. Coverage added for: classifyDwdPixel + dwdPaletteFor (mask stripping), wind helpers (speedColour, decomposeBarbKnots, bilinear sampling), the WCS text parser, fetcher URL building (incl. adaptive scaling, bbox clamping, XML-exception detection), WindGridFetcher coalescing, dateline wrap handling.

Upgrade notes

No breaking changes. Existing 3.5.x configs continue to work unchanged. New features (wind overlay, lightning, static-frame mode, coverage theming) are all opt-in.

The card now requires no editor changes for any 3.5.x config — every new feature is additive. Users updating from 3.5 will see the new editor subpages (Wind Overlay, Hazard Overlays already present) and can opt in at their own pace.

Full Changelog: v3.5.0...v3.6.0-rc1

Don't miss a new weather-radar-card release

NewReleases is sending notifications on new releases.