An animated weather card that gathers everything your weather integrations know.
Animated day and night scenes, rain in the next hour, weather warnings, lightning nearby, air quality, UV, pollen, sun and moon, all in one card with a compact mini version.
Highlights
- Animated scene for every condition, by day and by night, with the real moon phase
- Rain in the next hour, hourly and daily forecasts
- Weather warnings banner from Meteoalarm, DWD, NWS or Météo-France, lightning nearby, drought restrictions
- Air quality, pollutants, UV index and pollen with tomorrow's forecast
- Full screen view and a refresh button for fresh data
- Today and the sun and moon times in the server time zone when your profile uses it
- Animations paused while the card is off-screen
Works with
Brands & integrations
Météo-France
Blitzortung
VigiEau
OpenUV
Atmo France
WAQI
Google Air Quality
Meteoalarm
DWD Weather Warnings
NWS Alerts
Cards
type: custom:weather-plus-cardInstall
- 1Open the repository in the Marketplace with the Add to Marketplace button above, or add
github.com/juju35/ha-weather-cardas a custom repository (category Dashboard). - 2Download it from the Marketplace.
- 3Reload the browser and add the card from the dashboard editor.
Gallery 17
Documentation
From the README Features
Features
Weather card#
custom:weather-plus-card — A weather entity and the sensors of the weather integrations around it.
- Animated scene for each condition, by day and by night (from
sun.sun): the sun's rays turn and its glow breathes, at night the moon, in its real phase, shines among twinkling stars or peeks above the rain and storm clouds, tinted for the night, clouds drift, rain falls (harder when it pours), snow flutters down, hail bounces, lightning flashes over the cloud, fog rolls and the wind blows in gusts; a warning sign for exceptional weather.animations: falseor the system's reduce motion setting keeps it still. The animations pause while the card is off-screen or the browser tab is hidden, and go on when it shows again - Warning banner (
warning_entities): the warnings of Meteoalarm, DWD (Deutscher Wetterdienst), NWS alerts or Météo-France sensors under the header, one row per warning with its title, in its level's colour (yellow, orange, red), the highest first; a click opens its entity. It hides itself when there is no warning - The temperature in large with today's high and low, the feels-like temperature, and chips for humidity, wind (an arrow turned to its direction, gusts on hover), pressure (with its 3-hour trend from the history: rising, falling or steady), cloud cover, UV index, pollen and air quality (Pollen: low, Air: fair, in the colour of their level)
- The status pill shows the highest weather warning (Orange warning, the banner's included), else lightning nearby (Lightning 6 km away), else the condition
- Every chip, row and reading opens the more-info dialog of its entity
- Full screen button (top right,
popup: falseremoves it): the detail over the whole screen and its width, sections side by side as the width allows, with 24 hours and 10 days of forecast; the keyboard focus stays inside it (Tab goes round its controls); it closes with its button, Escape, a click outside or the back button on a phone, and gives the focus back to its button - Refresh button (top right,
refresh: falseremoves it): asks the integrations behind the card — weather, rain, alerts, sensors — for fresh data right away; the icon turns while they answer, even withanimations: false(not with the system's reduce motion setting) - In a Sections view the card takes the full width (12 columns) and goes down to 9; on a narrow card the scene gets smaller, the status pill shortens its text only when the title is down to a few letters (and on the narrowest cards shows its coloured dot only, its text in the tooltip) and the daily rows leave out their range bar
Sections, in the order of sections (a section with no data hides itself):
| Section | What it shows | From |
|---|---|---|
alerts |
Weather warnings by phenomenon in plain words with their colour (High waves · yellow, Heavy rain · orange; the official name in the tooltip), pulsing from orange; drought restrictions with their level and the restricted uses; lightning strikes and their distance; a poor air quality; thunderstorms in the hourly forecast | Météo-France weather alert, VigiEau, Blitzortung, the forecast |
rain |
Rain in the next hour as a 5-minute timeline coloured by intensity, with Heavy rain in 15 min / Light rain now, stopping in 10 min; rain, snow and frost chances; today's rainfall and the forecast totals for the next 6 and 24 hours | Météo-France next rain, rain / snow / freeze chance, daily precipitation, the hourly forecast |
hourly |
Icons by day or night, a temperature curve that draws itself, precipitation probability (or amount) bars, the wind of each hour (an arrow, its speed, the gusts on hover, strong gusts highlighted); scrolls sideways | weather.get_forecasts (hourly) |
daily |
One row a day: icon, precipitation probability, low and high on a range bar coloured by temperature against the whole week, the current temperature on today's | weather.get_forecasts (daily, or twice daily folded into days) |
air |
The air quality index (1 good … 6 extremely poor) with its advice and zone, and tomorrow's next to the title, then each pollutant — PM2.5, PM10, ozone, NO₂, SO₂ — on the six levels, the most degraded first; a poor air (level 4 and up) also shows in the alerts | Atmo France (index and pollutants), or the concentrations of WAQI, AirVisual, Google Air Quality, Airly, sensor.community… placed on the European EAQI thresholds |
uv |
The UV index on its scale, its level and the advice that goes with it, today's peak | A UV sensor (Météo-France, OpenUV…), else the weather entity's uv_index |
pollen |
The overall pollen risk (1 very low … 6 extremely high) with its advice and main species, and tomorrow's next to the title, then one row per species on six levels, the most present first; a high risk (4 and up) also shows in the alerts | Pollens (RNSA), Atmo France, Google Pollen, or any pollen sensor |
sun |
The sun's course over the day, sunrise, sunset and the daylight length; dawn, golden hour and dusk | sun.sun, and Home Assistant's location |
moon |
Today's moon drawn as it looks (mirrored south of the equator), its phase, how much of it is lit and its day in the cycle, moonrise and moonset, the next full and new moons | Computed from the date; the phase name from the Moon integration when it is set up |
Mini card#
custom:weather-plus-mini-card — The weather on two lines, for a compact dashboard.
- The animated scene, the temperature with today's high and low, the rain to come in the hour (or the condition and feels-like temperature), and the active warnings; the highest warning of the banner under the header
- In a Sections view its height follows its content (
rows: auto) - The detail button (top right) unfolds the full card, and back, as does a click anywhere else (
zoom: falseremoves it); the unfolded card has the Refresh and Full screen buttons. When the weather is unavailable, the folded card shows the Refresh button too, to retry - In a Sections view it takes 6 columns (half a section); on the narrowest sections its status pill shows its dot only, then the badge and the scene step aside for the title and the temperature
Supported integrations
Supported integrations
The card works with any weather integration (Météo-France, Met.no, Open-Meteo, OpenWeatherMap, Pirate Weather, AccuWeather, Met Office, Environment Canada…): the current conditions come from the weather entity, the forecasts from its forecast subscription (weather.get_forecasts), with the old forecast attribute as a fallback.
The other sections read the sensors of these integrations, found by their translation key, their entity id (English and French) or their attributes; the ones on the weather entity's device come first:
| Data | Integrations | Role in entities |
|---|---|---|
| Rain in the next hour | sensor.*_next_rain) |
next_rain |
| Rain, snow, frost chances | rain_chance, snow_chance, freeze_chance |
|
| Weather warnings | sensor.*_weather_alert), Niak Weather (Vigilance officielle), or any sensor with a green / yellow / orange / red level per phenomenon |
alert |
| Thunderstorms | lightning_counter, lightning_distance), Niak Weather (Orage proche), and the forecast |
lightning_counter, lightning_distance |
| Drought restrictions | vigieau |
|
| UV index | uv, uv_max |
|
| Pollen | Pollens (RNSA), |
pollen (a list), pollen_risk |
| Air quality index | aqi sensor ( |
aqi |
| Pollutants | air (a map: pm25, pm10, o3, no2, so2) |
|
| Sun | sun.sun |
sun |
| Cloud cover | cloud_coverage |
cloud_cover |
| Pressure trend | The weather entity's pressure sensor (else the entity itself), read from the recorder's history | pressure |
| Today's rainfall | daily_precipitation |
|
| Tomorrow's air and pollen | — | |
| Warning banner | binary_sensor, awareness level and headline), Alerts list, by severity), |
warning_entities option |
| Moon phase | Moon (sensor.moon_phase), optional |
moon |
Prerequisites
Prerequisites
- Home Assistant 2024.8 or later with a
weatherentity
Configuration
Configuration
Everything is optional: with no option at all, the card takes the first weather entity and every sensor it recognizes.
type: custom:weather-plus-card
type: custom:weather-plus-card
entity: weather.paris
name: Home
sections: [alerts, rain, hourly, daily, air, pollen]
hours: 18
days: 7
warning_entities:
- binary_sensor.meteoalarm
- sensor.berlin_current_warning_level
entities:
uv: sensor.openuv_current_uv_index
vigieau: sensor.alert_level_in_paris
pollen:
- sensor.pollens_75_graminees
- sensor.pollens_75_bouleau
type: custom:weather-plus-mini-card
entity: weather.paris
| Option | Type | Default | Description |
|---|---|---|---|
entity |
string | first weather.* |
The weather entity |
name |
string | its name | Card title |
show_title |
boolean | true |
Show the title in the header (e.g. false under a section heading of your own) |
show_subtitle |
boolean | true |
Show the subtitle under the title |
sections |
list | [alerts, rain, hourly, daily, air, uv, pollen, sun, moon] |
Sections shown, in this order |
hours |
number | 12 |
Hours of the hourly forecast |
days |
number | 5 |
Days of the daily forecast |
animations |
boolean | true |
Animate the scene and the sections |
popup |
boolean | true |
Full screen button that opens the detail over the whole screen |
refresh |
boolean | true |
Refresh button that asks the integrations for fresh data (hidden on the folded mini card, unless the weather is unavailable) |
zoom |
boolean | true |
Mini card: detail button to unfold the full card |
warning_entities |
list | — | Warning entities shown as a banner under the header (Meteoalarm, DWD, NWS alerts, Météo-France); hidden when none has a warning (yellow and up) |
entities |
map | detected | Overrides of the detected entities, by role (see Supported integrations) |
language |
string | HA language | en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el |
Changelog
All 34 versions 1.12.1Nov 13, 2026Latest
Fixes
- Folding back on a tap elsewhere now works on iOS (Safari and the companion app): a tap on something that is not clickable sent no click to the page, so the detailed view of the mini card stayed open. The press and the release are caught instead; a slider dragged out of the card and a scroll do not fold anything.
- Leaving the card (another dashboard view, a conditional card hidden) brings it back in its default state: mini card compact.
- A click could do nothing: Home Assistant updates the card several times a second, and a rewrite of the card between the press and the release replaced the element pressed, so that the click was lost. The card is no longer rewritten while a press is in progress; the pending update is drawn right after the click.
- No focus ring after a mouse click or a tap: the focus is kept across updates only for the keyboard.
1.12.0Nov 12, 2026
Features
show_titleandshow_subtitleoptions (also in the visual editor) hide the header's title and its subtitle (the condition), separately, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).
1.11.1Nov 9, 2026
Fixes
- Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.
1.11.0Nov 9, 2026
Performance
- Translations load on demand: the bundle keeps English only (324 KB → 163 KB) and each other language is its own
ha-weather-card.i18n.<lang>.jsfile next to it, fetched the first time a card needs it. Home Assistant loads every dashboard resource on every dashboard, so each page used to download and parse all 22 languages to use one. Until a language file has arrived (a few milliseconds), texts fall back to English, and the cards redraw once it is there.
Maintenance
- Build:
scripts/i18n-split.mjssplits the built bundle and rebuilds every table from the split files to check them (the build fails on any difference);src/keeps every language as before. - Release: every file of
dist/is attached. Manual installation copies the translation files too.
1.10.2Nov 8, 2026
Fixes
- When the Home Assistant profile uses the server time zone, "Today" in the daily forecast, the day the daily list starts from and the day of dawn, dusk, golden hour and moonrise follow that time zone too, instead of the browser's.
- A forecast entry without a valid
datetimeis left out of the daily forecast instead of stopping the card from rendering.
1.10.1Nov 7, 2026
Fixes
- The pressure trend reads its 1 hPa threshold in the unit of its source (a pressure sensor in inHg, Pa or mmHg, or the weather entity's own unit), and its tooltip shows the change in that unit. The hourly precipitation bars read amounts in inches or centimetres as their millimetre equivalent.
- Times (hourly forecast, sunrise and sunset, twilight, moonrise and moonset, the next storm) follow the 12/24 h format of the Home Assistant profile and, when the profile uses the server time zone, that time zone.
- Full screen detail: Tab and Shift+Tab stay inside it, going round its controls instead of reaching the page behind.
- The card picker shows the cards' name and description in the Home Assistant language.