![]()
Monitor real-time pollen levels from the Google Maps Pollen API directly in Home Assistant.
Get sensors for grass, tree, weed pollen, plus individual plants like OAK, PINE, OLIVE, and many more!
forecast list with {offset, date, has_index, value, category, description, color_*}tomorrow_* and d2_*trend and expected_peakpollenlevels.force_update service to refresh all configured locations.inSeason, index description, health advice
for pollen types, color_hex, color_rgb, and plant details.dailyInfo types/plants), ensuring entities appear once data is ready.***. key=... into public issues. If a key was exposed,
rotate it in Google Cloud Console and restrict it to the required API and
allowed referrers/IPs where possible.You can change:
The config and options flows use modern Home Assistant selectors and include links to Google’s API key setup and security best practices so you can follow the recommended restrictions.
Forecast days are no longer configurable. Pollen Levels always requests 5 days of forecast data so existing sensors can expose the maximum available forecast attributes.
Go to Settings → Devices & Services → Pollen Levels → Configure.
Pollen Levels no longer creates separate per-day pollen type forecast sensors such as:
sensor.example_grass_d1
sensor.example_grass_d2
Forecast data is now exposed on the base pollen type sensor through attributes.
Existing legacy _d1 and _d2 entity registry entries owned by Pollen Levels
are removed automatically during setup/reload. Recorder history is not purged.
This beta brings that cleanup forward so the migration can be tested with the
fixed 5-day forecast model before the release candidate.
Before:
{{ states("sensor.example_grass_d1") }}
{{ states("sensor.example_grass_d2") }}
After:
{{ state_attr("sensor.example_grass", "tomorrow_value") }}
{{ state_attr("sensor.example_grass", "d2_value") }}
For advanced templates, use the forecast attribute and select the desired
offset:
{% set forecast = state_attr("sensor.example_grass", "forecast") or [] %}
{% set tomorrow = forecast | selectattr("offset", "eq", 1) | first %}
{{ tomorrow.value if tomorrow else none }}
With the fixed 5-day horizon, the base sensor can expose future forecast items
with offsets 1 to 4, depending on the data returned by the API.
The v3 pre-release line migrates Pollen Levels to Home Assistant config subentries. Configuration is stored as one parent API-key entry with one or more location subentries. Existing 2.x entries are consolidated by API key during migration:
If legacy entries sharing a key used different update interval or language options, the parent entry keeps the first entry's options and fills missing values from the remaining entries. You can adjust the shared options after upgrading from Settings -> Devices & Services -> Pollen Levels -> Configure.
To add another location after upgrading, go to Settings -> Devices & Services -> Pollen Levels, open the parent entry, and add a new location subentry. Reconfigure a location from that same entry when only its name or map coordinates need to change. Each location has its own sensors and Update now button; shared options such as update interval and language stay on the parent Configure flow.
When reauthenticating or reconfiguring the parent API key, the integration tries the configured locations until one returns usable pollen data. Authentication and quota errors are treated as key-level failures.
During startup, the v3 beta avoids partial parent setup. If any configured location fails its initial non-auth refresh, Home Assistant will retry setup until the underlying issue is fixed or the affected location is removed or reconfigured. This keeps all location entities, devices, and diagnostics in a consistent state during the beta migration.
Create a Home Assistant backup before installing the v3 pre-release. Downgrading to Pollen Levels 2.x after the subentry migration is not supported.
Diagnostics include two support summaries for the v3 migration:
registry_summary shows how many entities and devices are associated with
each location subentry.registry_summary.entities.without_subentry should normally be 0.registry_summary.devices.without_subentry should normally be 0.registry_summary.devices.with_legacy_none_association should normally be
0.runtime_summary reports temporary runtime-only locations that can remain in
memory after deleting a location subentry before the parent entry is reloaded.runtime_summary.stale_location_count should normally be 0 after reloading
the parent entry.runtime_summary.stale_location_count > 0 immediately after deleting a
location, reload the Pollen Levels parent entry from Home Assistant.Diagnostics redact the API key and only include approximate coordinates rounded to 1 decimal for support purposes.
Google Pollen API currently provides health recommendations at pollen type level
(GRASS, TREE, WEED). Plant sensors expose plant-specific index and
description data when available, but health advice is usually not provided for
individual plants.
The integration creates three current-day summary sensors in addition to the individual pollen type and plant sensors:
plants_in_season_todayplant_codes, plant_names, in_season_count,
out_of_season_count, unknown_season_count, total_plant_count,
unknown_season_codes, and unknown_season_names.inSeason values are treated as unknown, not false.overall_pollen_risk_todaycategory, description, top_pollen_codes,
top_pollen_names, top_pollen_categories, and tie_count.top_pollen_types_todaytop_value, top_pollen_codes, top_pollen_names,
top_pollen_categories, and tie_count.You need a valid Google Cloud API key with access to the Maps Pollen API.
The setup form also links directly to the Google documentation for obtaining an API key and best-practice restrictions.
👉 See the FAQ for quota tips, rate-limit behavior, and best practices to monitor and control Google Cloud billing.
HTTP referrer (website) restrictions are intended for browser-based apps and are not supported by this integration.
403 responses during setup or updates now include the API’s reason (when available). They often indicate billing is disabled, the Pollen API is not enabled, or your key restrictions do not match your Home Assistant host.
Home Assistant does not color icons natively from attributes.
If you want dynamic colors driven by color_hex / color_rgb, you have these options:
1) Entities card (attribute row)
type: entities
title: Grass
entities:
- type: attribute
entity: sensor.type_grass
attribute: category
name: Category
- type: attribute
entity: sensor.type_grass
attribute: description
name: Index description
Simple and robust. It shows attributes clearly but doesn’t color the icon.
type: gauge
entity: sensor.type_grass
min: 0
max: 5
severity:
green: 0
yellow: 2
red: 4
Color is driven by thresholds, not by
color_hex.
Pollen dashboard card (recommended): pollenprognos-card
If you want a dedicated pollen Lovelace card with forecast visualizations and a visual editor UI,
pollenprognos-card supports this integration since v2.9.0.
The base sensor forecast, tomorrow_*, d2_*, trend, and expected_peak
attributes keep their existing format for card compatibility.
$ claude mcp add pollenlevels \
-- python -m otcore.mcp_server <graph>