Weather Station Card — Weather station meets forecast

Hi everyone,

You know that moment when your weather app cheerfully says "sunny" and your soaking wet laundry on the line strongly disagrees? I built a Lovelace card for that.

It puts what your weather station actually measured over the past few days right next to what the forecast says is coming, on one chart. Today is the column where the two halves meet — convenient for "did the forecast lie to me again?" research.

  • Got a weather station? Past comes from your sensors. The forecast is graded.

  • No weather station, just a weather.* entity? A toggle pulls past data from Open-Meteo so you still get the side-by-side view.

  • Sensors but no forecast? Also fine. Just your data, no fortune-telling.

On top sits a live "now" panel — temperature, condition icon, clock — driven directly by your sensors, so it doesn't quietly disagree with the chart underneath it.

Installation is via HACS as a custom repository. Setup is mostly pointing the card at your sensors and pressing save; the README has the full reference for the day you want to make it complicated.

Feedback, bug reports and translations very welcome — easier to wrangle in GitHub Issues or Discussions than buried in this thread.

Big thanks to @mlamberts78, whose weather-chart-card is the upstream this forked from. None of this would exist without that chart layout.

2 Likes

looks interesting, will test.

1 Like

Looks nice - will refine my setup over time - thanks for the card.

I had an issue with installing it, though:

After using the link on the Github page

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

I got this pop-up

Followed by this message

image

So, I added the repository manually to HACS and it worked :+1:

Thanks for the kind words, and thanks for reporting the install glitch. That's exactly the kind of feedback I was hoping to get.

I went through everything on my side that the HACS button touches:

  • The badge URL is correctly formatted (owner, repo name, category=dashboard, the right value for HACS 2.x).
  • The GitHub repo is public and the slug matches what the popup showed.
  • hacs.json is present and valid, with the right filename.
  • The latest release (v2.1.0) isn't a draft or pre-release, and the weather-station-card.js file is attached as a release asset.
  • Hitting GitHub's API directly against all three endpoints HACS uses during validation returns HTTP 200 from my end.
  • My own Home Assistant log shows no HACS errors against the repo.

So I haven't been able to reproduce the "Repository not found" message from here. Happy that the manual route worked for you in the end.

If anyone else runs into this, please drop a note in this thread (or on GitHub (Issues · chriguschneider/weather-station-card · GitHub)) — would help to know if it's a one-off or a pattern.

Chrigu

I also get the not found message.

Thanks @chriguschneider - here's something else that's a little strange:

With 'Round Temperatures' set to 'off', the daily view

as well as the today view

are both rounding the temperatures to one decimal, just like my sensors are formatted.

But the hourly view shows this:

When I set 'Round Temperatures' set to 'on', it works across the board(s) but I only see full numbers.

Is there a way to have all temperatures show one decimal?

Thanks for the detailed report and screenshots, @chairstacker — that was exactly the right catch.

You were seeing it correctly: with Round temperatures turned off, the card was just showing whatever precision the weather data happened to have, so
the daily/today views showed one decimal while the hourly view looked rounded to whole numbers. That inconsistency is fixed in v2.1.1:
Release v2.1.1 · chriguschneider/weather-station-card · GitHub

Now, with Round temperatures off, every temperature — daily, today and hourly — shows exactly one decimal place (e.g. 28.0°). With it on, you still
get whole numbers everywhere, same as before. Nothing to change in your YAML; just update via HACS and hard-reload.

Let me know if it looks right on your end!

Thanks for both posts, this one slipped past us until you reported it. :folded_hands:

The one-click install button was handing HACS the wrong category, which caused that pop-up. Adding the repo manually, like you did, was the right workaround. It's fixed now, so the button works without the error.

Thanks again

The icon to the left of the temperature display isn't showing up for me. All I see is a circle with an exclamation point. What's the problem?

Very interesting Card!
Before find this, I used the Weather Chart Card from @mlamberts78, in association with a weather template.
The Weather Template combine the data from Met.No for the forecasts and from my Meteobridge for the local data.
The ability to show past data from the local weather station is very kind.

1 Like

Thanks for the screenshot — that made it easy to spot. Good news: the icon isn't broken or failing to load. A circle with an exclamation mark is actually the card's "severe weather" symbol, and the card was wrongly deciding that you were having a storm.

Here's why: to pick a weather symbol, the card looks at your wind. Internally it expects wind in metres per second, but your station reports in km/h. The card wasn't converting between the two, so a perfectly normal breeze of ~31 km/h was read as if it were 31 m/s — that's hurricane-force — and it put the severe-weather symbol on the current conditions and on every past day. Your future days looked fine because those icons come straight from your weather integration, which the card doesn't re-evaluate.

The same issue also affected °F temperatures (snow could show as rain) and rainfall measured in inches, so I fixed all three at once.

This is now fixed in v2.1.2: Release v2.1.2 · chriguschneider/weather-station-card · GitHub — update via HACS, and the symbol next to the temperature and the past-day icons will match the real weather, with nothing to change in your configuration.

Thanks for reporting it!

Nice card - thanks!

My units for rain is inches, but the attributes row label is mm/h. Should this be a units conversion option?

@PecosKidd Turns out hard-coding "mm" was a bold assumption about how the world measures rain. Fixed in v2.1.3 — inch sensors now read in / in/h on their own, and Units → "Convert precipitation to" lets you force either. Thanks for catching my metric tunnel vision. Update via HACS.

1 Like

Fixed. Thanks a (metric) ton!

1 Like

Hi,
First of all, I’d like to thank you for all the work you’re putting into this project. I just recently got my first weather station, and now I’m trying to improve our dashboard to display the data in the best possible way. Your widget is almost exactly what I was looking for. But I have a few suggestions, if you don’t mind.

Red color - even though I have rounding set to one decimal place in the entity settings and rounded temperatures set in the tab. The dew point value is showing this crazy result. :grin:

Blue color - there’s almost no space between the card elements, which makes it hard to read, not just on mobile devices.

Yellow color - In some cases, the temperature value in the chart overflows into the element above it

Purple color - and this might be due to my theme settings, although I see it in your screenshots as well. The temperature is very hard to read on the chart. It would most likely be enough to tone down the color of the yellow column slightly so it isn’t so prominent.

And one last thing—though this is definitely my mistake and I haven’t been able to fix it yet. I’m unable to set the value for the “Illuminance” entity. My weather station interprets this as “Solar Irradiance” with the unit W/m².

If it helps, here’s a link to the integration documentation I’m using: https://github.com/schizza/SWS-12500-custom-component

Thanks for any response.

@Faasteer Thanks a lot for the detailed writeup with the marked screenshot — that kind of feedback is gold. Everything you flagged has been worked through over the last releases; I’d love your verdict on whether it’s enough:

Fixed in v2.2.2:

  • Dew point decimals (red): attribute-sourced dew points are now capped at one decimal.
  • Temperature overflowing into the labels above (yellow): the temperature scale now always reserves enough pixel room for its labels, even at small chart heights — the line can’t push its values into the date band anymore. Bar heights are untouched.
  • Readability on the yellow columns (purple): every temperature value now draws with a halo in the card’s background colour, so labels stay legible on top of the sunshine bars in both themes. Dark themes additionally render the forecast sunshine in a warmer honey gold instead of the old murky olive, and the low-temp blue is now theme-aware (brighter in dark, deeper in light).

New in v2.2.3 (just released):

  • Solar irradiance support: your SWS-12500’s W/m² sensor now works directly in the Illuminance slot — the card detects the unit / device_class: irradiance and converts internally (~120 lm/W). It feeds the condition classifier, the measured sunshine bars, and the live sun-strength row. If the sunshine detection feels too eager or too strict for your sensor, condition_mapping.sunshine_lux_ratio is the tuning knob.

Still open — and here I’d like your opinion (blue): the spacing between the card elements hasn’t changed structurally yet. Could you update to v2.2.3, have a fresh look on your mobile layout, and tell me whether the readability improvements above already do the job for you — or whether the rows still feel too cramped? If it’s the latter, a spacing rework is next on my list, and a current screenshot from your setup would help me aim it right.

Two releases went out and I forgot to post about the bigger one. So, quickly:

v2.3.0 — the editor got its life together: a 4,200 px scroll became five collapsible panels whose headers tell you what’s inside. The whole card speaks 23 languages now (the editor used to fall back to English for everything but DE/EN), and the moon line computes itself — no Moon integration, and the disc is drawn to the actual illumination instead of picking one of 8 phase icons.

v2.4.0 — open a panel and everything’s actually there: toggle pills instead of the old add-dropdown. If you never knew this card had a sunshine bar, that’s why.

And if your station gives you rain rate and daily total as two separate entities, you can wire both now:

sensors:
  precipitation: sensor.rain_today       # mm — the bars
  precipitation_rate: sensor.rain_rate   # mm/h — the live cell

Ecowitt, Tempest, ESPHome gauge, whatever. Keep the total, the bars need it. Nice side effect: the live weather icon can finally show rain on a counter-only setup — a cumulative total isn’t a rate, and the classifier won’t guess one.

One more thing: the card is in the HACS default store now — just search for it under Frontend, no custom repository. Which also retires the “Repository not found” mess a couple of you ran into back in May.

Full changelog · thanks @Faasteer, @chairstacker, @bussio and @PecosKidd for the reports. @Faasteer — mobile spacing is the one thing still open, if you ever get a screenshot my way.

1 Like

Two releases today, both about the one number that matters in October: where is the snow line, and is it coming for me.

v2.13.0 — tap the zero-degree row. A popup with the forecast curve for the coming days, the low point marked, day separators, and a History link for the nostalgic. Needs a sensor with a forecast attribute of {datetime, level} points; MeteoSwiss Weather v0.10.0 ships one (new thread, say hi). Nothing to configure.

v2.14.0 — the row tells you where it’s heading. An arrow for direction and pace (rises fast · rises · stays · falls · falls fast — the pressure-trend arrows, you know them), then the next low or high with weekday and time: :down_right_arrow: 1’578 m Thu 04:00. The tooltip adds the turn after it (“then up to 2’509 m Fri 05:00”). The snowflake on the current row changes when the estimated snow line gets within 300 m of your elevation, and when the coming low brings it to your doorstep the value turns rain-blue with a :snowflake:. Elevation comes from HA, from the sensor, or from the new elevation option.

Also in 2.13: Serbian in Latin script (thanks @cpmarexel2f) and current_temp_size works again.

Both in HACS. Mountain folks: is “300 m below the zero-degree level” a fair guess where you live?