A Home Assistant rain radar card using tiled radar imagery from RainViewer, NOAA/NWS, and DWD (Deutscher Wetterdienst).
This card displays animated weather radar loops within Home Assistant. It supports multiple radar data sources and map styles, and can be zoomed and panned seamlessly. Markers, hazard overlays (US wildfires + NWS watches & warnings), a forecast nowcast (DWD), opt-in motion-compensated playback (rain drifts between frames instead of teleporting), full sections-grid resize support, and 11 languages.
- Real-time lightning strikes when the Blitzortung integration is installed — bolt + pulse for first 30 s, then a coloured + sign on a two-pane outline-vs-fill split (dense storm clusters read clean instead of black-blob). Card-side max-age cap defaults to 30 min. (3.6.0)
- Wind overlay — barbs, arrows, animated streamlines from DWD's ICON-D2 model. Bulk WCS fetch with 60 s coalescing cache, zoom-aware streamlines. See Hazard & Layer Overlays. (3.6.0)
- Wind source registry — choose
dwd_icon,dwd_aicon(DWD's AI-augmented variant), orndfd_wind(NWS NDFD 2.5 km CONUS / AK / HI / PR). Fresh US installs default tondfd_windautomatically. (3.6.1) - AbortController on tile + data fetches — superseded fetches no longer complete on the wire after a pan / zoom / teardown. (3.6.2)
- Tablet-friendly progress-bar touch target via
progress_bar_touch_heightYAML option, contributed by @cgjolberg. (3.6.4) - Per-user state framework (dormant) —
ViewerStatewraps HA's frontend-storage WebSocket API. First user-visible consumer (adjustable playback speed) ships in 3.7. (3.6.5)
- Adjustable playback speed — toolbar button cycles ¼× / ½× / 1× / 2× / 4×; editor dropdown sets the YAML default. Optional per-user persistence via
viewer_layer_controladmin opt-in. Contributed by @genericJE. (3.7.0-alpha1) - Motion compensation for radar transitions — opt-in
motion_compensation: true. Rain visibly drifts between frames instead of teleporting. Pyramidal Lucas-Kanade optical flow on a distance-from-white intensity channel; source-agnostic across DWD / RainViewer / NOAA. Built on top of @genericJE's #156. (3.7.0-alpha2)
For the full release history see CHANGELOG.
Active threads, no specific version commitment — alpha line for 3.7 is intentionally iterative until a real shape emerges. See docs/todo.md for full backlog with status per item.
- Real-time per-user layer visibility control panel — UI for toggling individual overlays in real time. Persistence framework already shipped (3.6.5); first consumer shipped (playback speed in 3.7.0-alpha1); the on-map panel itself is the remaining piece. Full design in docs/layer-control-design.md.
- Additional wind sources — Open-Meteo for global coverage, ICON pressure levels for upper-air wind, regional finer-than-ICON-D2 sources (AROME, MEPS, HRRR). Tiers and trade-offs documented in docs/todo.md.
| Topic | What's there |
|---|---|
| Configuration | Full options table, Map Style choices, Animation knobs, Double-tap action, sections-grid behaviour |
| Data Sources | RainViewer / NOAA / DWD specifics, per-source caps, NOAA & DWD notes, DWD forecast leading-edge note |
| Hazard & Layer Overlays | US wildfire perimeters, NWS watches & warnings, lightning (Blitzortung), and global wind — usage, knobs, safety disclaimers |
| Markers | The markers[] schema, track-resolution rules, default home marker, migration from the legacy single-marker fields |
| Examples | Sample YAMLs for common setups (basic, dense DWD loop, NOAA, OSM, mobile-only, person tracking, hazard overlays) |
| Animation architecture | Internal: layer z-stack, two-slot crossfade, opacity ownership, dynamic tile size, pause behaviour, invariants |
| Wildfire feature design | Internal: NIFC WFIGS feed, render decisions, InciWeb gating, refresh cadence |
| NWS alerts feature design | Internal: api.weather.gov polling, zone resolution + caching, severity sort, popup chrome |
| Wind feature design | Internal: bulk WCS fetch + adaptive scaling, coalescing cache, zoom-aware streamlines, layering |
| Motion compensation feature design | Internal: pyramidal Lucas-Kanade optical flow, distance-from-white channel, inline-Blob worker pattern, crossfade-time translate |
| Backlog / TODO | Open and shipped features |
| Contributing | Local dev setup including the Docker HA testbed (npm run ha:up) |
The card is part of the default HACS store. To install the latest stable, search for "Weather Radar Card" in HACS → Frontend → Explore & Add Repositories. Toggle Show beta versions in HACS to opt into prereleases.
Download the files from the latest release and place them in www/community/weather-radar-card in your HA config directory:
└── configuration.yaml
└── www
└── community
└── weather-radar-card
└── weather-radar-card.js
└── home-circle-dark.svg
└── home-circle-light.svg
└── pause.png
└── play.png
└── preview.jpg
└── radar-colour-bar-dwd.png
└── radar-colour-bar-nws.png
└── radar-colour-bar-universalblue.png
└── recenter.png
└── skip-back.png
└── skip-next.png
Upgrading from v2? Delete
leaflet.js,leaflet.css,leaflet.toolbar.min.js, andleaflet.toolbar.min.cssfromwww/community/weather-radar-card/— they are bundled intoweather-radar-card.jsin v3 and the old files are no longer used.
Then add the following to your Lovelace resources:
resources:
- url: /local/community/weather-radar-card/weather-radar-card.js
type: moduletype: 'custom:weather-radar-card'That's it. The card defaults to RainViewer, your HA instance's location, and a zone.home marker. From there, the GUI editor exposes every knob — see Configuration for the full reference and Examples for common starting points.
For touchscreen dashboards, YAML can enlarge the timeline scrub target upward over the lower map while preserving its slim visual track and original bottom-bar height:
show_progress_bar: true
progress_bar_touch_height: 44See CHANGELOG.md for the complete history of changes.