Some hardware links on this page are affiliate links. As an Amazon Associate I earn from qualifying purchases. We may earn a commission if you buy through them, at no extra cost to you. See the affiliate disclosure.
A forecast card tells you what a weather model expects. It does not tell you what the sensor outside your window actually recorded, or how far off yesterday’s high was. This pack puts both on one dashboard card: solid temperature history from your own outdoor node, dashed forecast temperature from any weather entity, and humidity from that same node on the live panel.
The card reads plain sensor entities. It does not care that the node is ESPHome. A weather entity is only required for the forecast half.
Entity ids in the example are placeholders. Do not publish a latitude, a street, or a station name from a real install.
A morning text push of today’s high and rain chance is morning weather briefing. “Should I open this window?” from indoor versus outdoor absolute humidity is humidity window-vent guide. This page is the chart.
What problem it solves
You want the last several days of measured outdoor temperature (and humidity right now) next to the forecast, in one card, so a bad high or a sensor in the sun is obvious without exporting history.
How it works
- Outdoor node — an ESP32 runs ESPHome with an AHT20 (I²C) or a DHT22 (one GPIO) and publishes temperature and humidity. Shade and airflow matter more than the chip. A sensor in the sun will “beat” every forecast and teach you nothing.
- History — the card’s past columns come from Home Assistant’s recorder, not from the weather entity. New sensors have no past. Give it a day or two, and make sure the recorder is not excluding those entities.
- Forecast — any
weatherentity that exposes a daily forecast (Met.no and the other core integrations). The card subscribes with Home Assistant’s forecast API. Forecast temperature is drawn dashed; measured temperature stays solid. Today’s column can show both. - What is plotted — temperature is the curve (daily high and low across the window you set, default up to two weeks). Humidity is a live attribute (
sensors.humidity,show_humidity), not a second history curve. Precipitation bars appear only if you later add a rain total; they are optional and not required for the temperature comparison. - Modes — combination (measured plus forecast) is the pack default. Station-only drops the forecast. Forecast-only drops the sensor history. A toggle on the card switches daily, a single-day pager, and an hourly scroll.
- Install — the card is in HACS as Weather Station Card. After download, hard-refresh the browser, then add the custom card. The editor can pick sensors; the pack’s YAML is the known-good starting point.
Leave extra forecast lookups that send your Home Assistant location to a third party off unless you want them. The pack’s config uses your sensors plus the weather entity you already run.
Hardware notes
- Node. ESP32-C6 Super Mini, same I²C pins as the ESP32-C6 climate sensor: AHT20 VIN to 3V3, SDA GPIO0, SCL GPIO1. DHT22 data to a free GPIO (the snippet uses GPIO4) with the model set to DHT22. Do not use GPIO8, GPIO9, GPIO12, GPIO13, or GPIO15.
- Enclosure. A ventilated, shaded housing. White plastic, off a sun-facing wall, sensor facing the air not the board. USB power is fine. Do not seal the sensor in a box with the ESP32; the board warms the reading.
- Weather entity. Confirm in Developer Tools that
weather.get_forecastswithtype: dailyreturnstemperatureandtemplowbefore you debug the card. - Rain. Optional. A tipping-bucket pulse counter can feed
sensors.precipitationlater. Skip it until the temperature comparison is honest. - Wi-Fi. Credentials stay in
secrets.yaml.
Snippet
Outdoor node:
substitutions:
friendly_name: Outdoor climate
sda_pin: GPIO0
scl_pin: GPIO1
sensor:
- platform: aht10
variant: AHT20
temperature:
name: Temperature
id: outdoor_t
humidity:
name: Humidity
id: outdoor_rh
update_interval: 60s
Dashboard card (replace the entity ids with yours):
type: custom:weather-station-card
title: Outdoor
weather_entity: weather.forecast
sensors:
temperature: sensor.outdoor_temperature
humidity: sensor.outdoor_humidity
show_main: true
show_humidity: true
forecast:
type: daily
sensors.temperature is required for the measured curve. sensors.humidity feeds the live humidity line.
Setup outline
- Flash the outdoor YAML. Confirm temperature and humidity in Home Assistant, in the shade, and compare them once with a known thermometer.
- In HACS, download Weather Station Card. Hard-refresh. Add the card to a dashboard and paste the pack config, or use the visual editor and pick the same entities.
- Set combination mode, a day count you care about (start with 7), and the weather entity.
- Wait until the recorder has history. Yesterday’s column should show a solid measured range. The forecast side of today and the following days should be dashed.
- If the past stays empty, check Settings → System → Recorder for an exclude that matches
sensor.outdoor_*, then wait out the purge window.
Troubleshooting
- No measured curve.
sensors.temperatureis empty, the entity has been excluded from the recorder, or the node has been up for less time than the chart window. A brand-new sensor shows a short past. That is not a card bug. - Forecast side blank. The weather entity has no daily forecast. Call
weather.get_forecastsin Developer Tools. Hourly-only entities need the card’s hourly mode, not the daily default. - Measured high is always several degrees above the forecast. The sensor is in the sun or against a wall that heats up. Move it. Do not “fix” that with a large negative offset or you will hide a real warm day.
- Humidity missing.
show_humidityis off, orsensors.humiditypoints at the wrong entity. Humidity does not draw the history curve; temperature does. - Card not in the Add Card list. The resource did not load. Hard-refresh after the HACS download. Confirm the resource URL under Settings → Dashboards → Resources.
- DHT22 spikes at dawn. Condensation on an unshielded module. The AHT20 in a vented cap is the calmer outdoor choice.
Credits
Based on the Lovelace card Weather Station Card. This write-up is an original overview of an ESPHome outdoor temperature/humidity node plus that card’s measured-versus-forecast view. It is not a copy of the card.