MeteoBlue for Home Assistant

Hi all! :waving_hand:

I’d like to share a custom integration I’ve been working on: HomeAssistant-MeteoBlue — a Home Assistant integration for the MeteoBlue weather service.

It exposes current conditions and forecasts as a weather entity, renders the 7-day extended meteogram as image entities (in both light and dark variants), and tracks API credit usage as a sensor — all configured per location through the UI.

:sparkles: What it does

  • :sun_behind_small_cloud: Weather entity with current conditions and a daily or hourly forecast (selectable per location). With hourly selected, the daily forecast is derived locally — only one API call per update.
  • :framed_picture: Meteogram images — the 7-day extended meteogram 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 on dark dashboards.
  • :bar_chart: Credits sensor showing how many credits were used up.
  • :world_map: Multiple locations per API key — each location is added as a subentry and uses either the HA-configured location or custom coordinates (with optional elevation).
  • :level_slider: Configurable toggles and update intervals for the forecast and the meteogram, per location.

:clipboard: Requirements

:package: Installation

Via HACS (recommended): Add https://github.com/dankeder/HomeAssistant-MeteoBlue as a custom integration repository, install MeteoBlue, and restart HA.

Manual: Copy custom_components/meteoblue/ into your config/custom_components/ directory and restart HA.

Then go to Settings → Devices & Services → Add Integration → MeteoBlue, paste your API key, and add one or more forecast locations.

:credit_card: A note on API credits

The free tier gives you 10M credits valid for a year, which is ~27,000 credits/day. As a rough guide for one location:

  • Daily forecast every 12 h + meteogram every 24 h → 24,000/day :white_check_mark:
  • Hourly forecast every 24 h + meteogram every 24 h → 24,000/day :white_check_mark:
  • Daily forecast every 8 h + meteogram every 24 h → 28,000/day :white_check_mark:

Full cost breakdown and more examples are in the project’s README.md.

This is an early release (v0.1.2), so feedback, bug reports and PRs are very welcome — especially from anyone using MeteoBlue’s paid tiers, where I have less testing coverage. Let me know what you think! :raising_hands:

3 Likes

Thank you. I really like meteoblue. It’s possible to show moon icons also? Now it’s night and it still showing sun icon in weather entity. Same in hourly forecast.

Good catch. It's been already fixed on the master branch, but unreleased. Please check the version v0.1.4, it should work correctly there.

1 Like

I love MeteoBlue. Thanks so much for developing this integration, it's working a treat!

Hi and thank you for creating this component.

I use some custom code in my configuration.yaml to create a sensor that contains the hourly forecast in the attributes. Like this, I can use the hourly forecast for other helpers.
Would that also work with your custom integration?

It calls the action: weather.get_forecasts

If I already do it there, should I deactivate the forecast in the integration settings, so I don't double my API-calls?

In the configuration.yaml:

template:
  - trigger:
      - platform: time_pattern
        minutes: "/420"

      - platform: homeassistant
        event: start

    action:
      - service: weather.get_forecasts
        target:
          entity_id: weather.meteoblue_home
        data:
          type: hourly
        response_variable: stunden_antwort

    sensor:
      - name: "Stündlicher Wetterforecast MeteoBlue"
        unique_id: meteoblue_stunden_forecast
        state: "{{ now().isoformat() }}"
        attributes:
          forecast: "{{ stunden_antwort['weather.meteoblue_home'].forecast }}"

Or can I just remove platform: time_pattern ?

Edit
I found the answer, thanks anyway.

How do I get the Free-Weather API? I am not able the choose a free option if I am logged in, there are only paid available.