
Building a Smart Weather Dashboard Card in Home Assistant (with Humor, UV Index & Lightning Alerts)
A weather card is one of the most common elements on a Home Assistant dashboard—but most setups stop at basic temperature and conditions.
That’s a missed opportunity.
In this guide, I’ll show you how to build a dynamic, personality-filled weather template that combines multiple integrations and turns raw sensor data into something actually useful (and a bit entertaining). The result is a dashboard card that adapts based on:
- Time of day
- Temperature
- UV index (with recommendations)
- Wind, humidity, and rain
- Lightning activity nearby
- Pollen levels
This setup uses a combination of Ecowitt, Google Pollen, and Blitzortung, all tied together with a single Jinja2 template.
Why Go Beyond a Standard Weather Card?
Default weather cards are fine—but they don’t interpret data.
For example:
- “UV index: 7” doesn’t tell you much unless you know what that means
- “Wind: 8 m/s” doesn’t tell you if it’s noticeable or annoying
- “Lightning detected” doesn’t tell you if it’s actually dangerous
By adding logic in a template, you turn numbers into context, and context into actionable insight.
Components Used
1. Ecowitt (GW2000C)
Ecowitt provides the backbone of the weather data. In this setup, a GW2000C weather station delivers:
- Temperature (°C)
- Humidity (%)
- Wind speed (m/s)
- Rainfall (mm)
- UV index
This is all local data, which means:
- Fast updates
- High accuracy
- No dependency on cloud APIs
The UV index is especially valuable, as it enables meaningful health-related feedback.
2. Google Pollen Integration
Pollen data is often overlooked, but for many people it’s just as important as temperature.
This integration provides:
- Birch pollen levels
- Grass pollen levels
- Index values (0–5 scale)
We map these values into human-readable descriptions like:
- “Low, but be careful 🌿”
- “High – itchy eyes 🤧”
- “Extreme – good luck 😱”
3. Blitzortung Lightning Detection
Blitzortung is a real-time lightning detection network. In Home Assistant, it gives you:
- Number of recent lightning strikes
- Distance to the latest strike (km)
This allows us to differentiate between:
- “Interesting weather”
- “Potentially dangerous situation”
The Template Approach
Instead of just listing sensor values, we use a Jinja2 template to:
- React to conditions
- Add humor and personality
- Provide recommendations
This makes the dashboard feel alive—and more importantly, useful.
Full Template Example
Here is the complete template used in the dashboard:
type: markdown
content: >
# Hello {{ user }} 👋 {% set hour = now().hour %}
{% set weather = states('weather.forecast_home') %}
{% set rain = states('sensor.gw2000c_hourly_rain_piezo') %}
{% set temp = states('sensor.utetemperatur') | float %}
{% set humidity = states('sensor.gw2000c_humidity') %}
{% set wind_speed = states('sensor.gw2000c_wind_speed')| float | round(1) %}
{% set lightning = states('sensor.home_lightning_counter') | int %}
{% set lightning_distance = states('sensor.home_lightning_distance') | float(999) %}
{% set uv = states('sensor.gw2000c_uv_index') | float(0) %} {% if hour < 6 %}
🌙 Night mode activated. The world is (mostly) asleep.
{% elif hour < 10 %}
🌅 Good morning! Hope the coffee hits right ☕
{% elif hour < 17 %}
🌞 Midday—prime time for productivity (or procrastination).
{% elif hour < 22 %}
🌆 Good evening! Time to slow things down.
{% else %}
🌙 Late evening... maybe time for bed?
{% endif %} {% if temp < -10 %}
🥶 **{{ temp }}°C** – This is not weather, it’s a lifestyle.
{% elif temp < 0 %}
❄️ **{{ temp }}°C** – Below freezing. Literally.
{% elif temp < 10 %}
🧥 **{{ temp }}°C** – Jacket required.
{% elif temp < 20 %}
🙂 **{{ temp }}°C** – Classic mild weather.
{% elif temp < 25 %}
😎 **{{ temp }}°C** – Now we’re talking!
{% else %}
🔥 **{{ temp }}°C** – You are the barbecue now.
{% endif %} Humidity: **{{ humidity }}%**
Wind: **{{ wind_speed }} m/s**
Rain (last hour): **{{ rain }} mm** ☀️ UV index: **{{ uv }}**
{% if uv >= 6 %}
🧴 Use sunscreen. Seriously.
{% elif uv >= 3 %}
😎 Some protection is a good idea.
{% endif %} {% if lightning >= 1 %}
⚡️ {{ lightning }} lightning strikes detected
{% if lightning_distance < 5 %}
⚠️ {{ lightning_distance }} km away – take this seriously!
{% elif lightning_distance < 10 %}
⚠️ {{ lightning_distance }} km away – getting close.
{% else %}
{{ lightning_distance }} km away – safe for now.
{% endif %}
{% endif %}
Making It Actionable: Automation Example
Displaying data is great—but acting on it is better.
Here’s an example automation that uses the UV index to send a notification when protection is recommended.
Use Case:
You get notified when UV levels become high during the day.
alias: UV Alert - High Exposure
description: Notify when UV index gets high
trigger:
- platform: numeric_state
entity_id: sensor.gw2000c_uv_index
above: 5
condition:
- condition: time
after: "09:00:00"
before: "18:00:00"
action:
- service: notify.mobile_app_phone
data:
title: "High UV Index"
message: >
UV index is now {{ states('sensor.gw2000c_uv_index') }}.
Consider sunscreen and protection if you're going outside.
mode: single
Other Automation Ideas
Once you have this data, the possibilities expand quickly:
🌧 Rain-based automation
- Close skylights automatically
- Send reminder to bring in laundry
💨 Wind-based automation
- Retract awnings
- Notify if wind exceeds safe levels
⚡ Lightning safety
- Turn off sensitive electronics
- Notify family members
🌾 Pollen alerts
- Notify allergy sufferers
- Suggest closing windows
Design Tips
A few things that made a big difference in usability:
1. Add Personality (But Keep It Useful)
Humor makes it engaging—but always include real information.
2. Prioritize Important Data
UV and lightning get conditional warnings—because they matter more.
3. Keep It Readable
Avoid dumping too many numbers. Translate them into meaning.
Final Thoughts
This setup turns a simple weather card into a smart assistant that:
- Interprets environmental data
- Adapts to time and conditions
- Provides actionable insights
- Adds a bit of personality to your dashboard
And the best part? It’s all done with a single template.
Some of the links in this article are "affiliate links", a link with a special tracking code. This means if you click on an affiliate link and purchase the item, we will receive an affiliate commission. The price of the item is the same whether it is an affiliate link or not. Regardless, we only recommend products or services we believe will add value to our readers. By using the affiliate links, you are helping support our Website, and we genuinely appreciate your support.