A Home Assistant integration for the MeteoBlue weather service. It exposes current conditions and forecasts as a weather entity, renders 7-day extended meteograms as image entities (light and dark variants), and tracks API credit usage as a sensor — all configured per location through the UI.
- 🌤️ Weather entity with current conditions and a daily or hourly forecast (selectable per location).
- 🖼️ Meteogram images — the 7-day extended meteogram, available in both light and dark variants. The dark variant is generated locally by inverting the light image while preserving hue and saturation, so it stays readable in dark dashboards.
- 📊 Credits sensor showing total API credits consumed, so you can monitor your usage against your MeteoBlue plan.
- 🗺️ Multiple locations per API key. Each location is added as a subentry and uses either the Home Assistant configured location or custom coordinates (with optional elevation).
- 🎚️ Independent toggles and update intervals for the forecast and the meteogram, per location.
- Home Assistant 2026.3.2 or newer.
- Python 3.14.2 or newer (matches the supported Home Assistant runtime).
- A MeteoBlue API key from my.meteoblue.com.
- In HACS, open Integrations → menu → Custom repositories.
- Add
https://github.com/dankeder/HomeAssistant-MeteoBlueas an Integration repository. - Install MeteoBlue from the HACS list and restart Home Assistant.
- Copy custom_components/meteoblue/ into your
Home Assistant
config/custom_components/directory. - Restart Home Assistant.
Settings → Devices & Services → Add Integration → MeteoBlue, then enter:
- Name — a label for this API key (e.g. MeteoBlue).
- API key — your key from my.meteoblue.com.
The key is validated against the MeteoBlue Account API before the entry is created.
Each location is a subentry on the API-key entry. Open the entry and choose Add forecast location:
| Field | Description |
|---|---|
| Name | Display name for the location (used in entity IDs). |
| Location mode | auto uses the Home Assistant configured location; custom lets you pick a point on the map. |
| Latitude / Longitude (custom mode) | Picked via the map selector. |
| Elevation (custom mode, optional) | Meters above sea level. |
| Enable forecast | Whether to create the weather entity. |
| Forecast type | daily or hourly. With hourly, the integration also exposes a daily forecast that it derives locally from the hourly data, so only one Forecast API call is made per update. |
| Forecast update interval | Minimum 6 hours, default 6 hours. |
| Enable meteogram | Whether to create the meteogram image entities. |
| Meteogram update interval | Minimum 6 hours, default 6 hours. |
The 6-hour minimum reflects MeteoBlue's update cadence: forecast models run twice per day, so polling more often just spends credits without delivering newer data.
For a location named Home, the integration creates:
| Entity ID | Description |
|---|---|
weather.meteoblue_home_weather |
Current conditions and forecast. Only created when Enable forecast is on. |
image.meteoblue_home_meteogram |
7-day extended meteogram (light). Only created when Enable meteogram is on. |
image.meteoblue_home_meteogram_dark |
Same meteogram, tone-inverted for dark themes. |
sensor.meteoblue_home_credits_used |
Total API credits consumed by your account, increasing over time. |
Free API tier provides 10mil credits for 1 year. Each request costs certain amount of credits. The cost of API calls used by this integration are:
| API package | Credits per request |
|---|---|
basic_day |
4000 credits/request |
basic_1h |
8000 credits/request |
meteogram_extended |
16000 credits/request |
A free-tier budget of 10M credits/year works out to roughly 27,000 credits per day. A few worked examples for one location:
- Daily forecast every 12 h + meteogram every 24 h —
2 × 4000 + 1 × 16000= 24,000/day. Comfortably within the free tier. - Hourly forecast every 24 h + meteogram every 24 h -
1 × 8000 + 1 × 16000= 24,000/day. Fits into the free tier. - Daily forecast every 6 h + meteogram every 24 h —
4 × 4000 + 1 × 16000= 32,000/day. Slightly over budget of the free tier — bump the forecast to every 8 h. - Daily forecast every 8 h + meteogram every 24 h —
3 × 4000 + 1 × 16000= 32,000/day. Fits into the free tier. - Hourly forecast every 6 h + meteogram every 12 h —
4 × 8000 + 2 × 16000= 64,000/day. Requires a paid plan.
The credits sensor lets you confirm actual consumption against these estimates.
The repository ships a small set of helper scripts in scripts/:
- scripts/setup — install dependencies via
uv sync. - scripts/run — start Home Assistant with this integration loaded against the config/ stub.
- scripts/lint — run
ruff formatandruff check. - scripts/test — run the test suite with
pytest.
Set METEOBLUE_USE_FAKE_CLIENT=1 before scripts/run to load
FakeMeteoBlueApiClient, which serves canned responses from
tests/fixtures/ instead of calling the MeteoBlue API.
- MeteoBlue Forecast API documentation and OpenAPI spec.
- MeteoBlue Image API documentation.
- MeteoBlue Account API documentation.
- Issue tracker.
Licensed under the Apache License, Version 2.0.