{"id":50342224,"url":"https://github.com/thedave94/pollenwatch","last_synced_at":"2026-05-29T18:00:31.162Z","repository":{"id":361176475,"uuid":"1253408899","full_name":"TheDave94/pollenwatch","owner":"TheDave94","description":"Multi-source European pollen aggregator for Home Assistant — CAMS + polleninformation.at + DWD, with consensus/divergence analytics.","archived":false,"fork":false,"pushed_at":"2026-05-29T14:06:35.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T14:14:34.340Z","etag":null,"topics":["allergy","cams","copernicus","hacs","home-assistant","home-automation","pollen","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheDave94.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T12:36:14.000Z","updated_at":"2026-05-29T14:05:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TheDave94/pollenwatch","commit_stats":null,"previous_names":["thedave94/pollenwatch"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/TheDave94/pollenwatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheDave94%2Fpollenwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheDave94%2Fpollenwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheDave94%2Fpollenwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheDave94%2Fpollenwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheDave94","download_url":"https://codeload.github.com/TheDave94/pollenwatch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheDave94%2Fpollenwatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33664259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["allergy","cams","copernicus","hacs","home-assistant","home-automation","pollen","python"],"created_at":"2026-05-29T18:00:17.326Z","updated_at":"2026-05-29T18:00:26.161Z","avatar_url":"https://github.com/TheDave94.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PollenWatch\n\n[![Validate](https://github.com/TheDave94/pollenwatch/actions/workflows/validate.yml/badge.svg)](https://github.com/TheDave94/pollenwatch/actions/workflows/validate.yml)\n[![Lint \u0026 Test](https://github.com/TheDave94/pollenwatch/actions/workflows/lint.yml/badge.svg)](https://github.com/TheDave94/pollenwatch/actions/workflows/lint.yml)\n[![hacs](https://img.shields.io/badge/HACS-Custom-41BDF5.svg)](https://hacs.xyz/)\n\nA multi-source European pollen aggregator for Home Assistant. The Home Assistant\necosystem already has ~10 pollen integrations that each wrap a *single*\nprovider; PollenWatch instead **combines independent sources** and adds a\n**cross-source analytics layer** on top. That combination is the point.\n\n\u003e **Status: release candidate (v1.0.0-rc1) — feature-complete, validating.**\n\u003e Not yet declared stable. Two things to know before you rely on it:\n\u003e - **DWD has never run in production.** Its data path is validated against the\n\u003e   live DWD feed and mocked tests, but the maintainer is outside DWD coverage\n\u003e   (Austria), so a German user enabling DWD is its first real-world run —\n\u003e   please [open an issue](https://github.com/TheDave94/pollenwatch/issues) if\n\u003e   anything looks off.\n\u003e - **Consensus has a known 3-source edge** ([#1](https://github.com/TheDave94/pollenwatch/issues/1)):\n\u003e   with ≥3 sources, a lone higher reading can pull the consensus up without\n\u003e   flagging divergence. Documented and deferred for a redesign.\n\u003e\n\u003e Minimum Home Assistant **2024.11.0** (see\n\u003e [HA_COMPATIBILITY.md](HA_COMPATIBILITY.md) for the API audit).\n\n## Sources\n\nEach source is optional except Open-Meteo, and **what you get depends on your\nlocation**: outside Germany you get no DWD; outside the 13 polleninformation\ncountries you get only Open-Meteo (which covers all of Europe).\n\n| Source | Coverage | API key | Notes |\n| --- | --- | --- | --- |\n| **Open-Meteo (CAMS)** | All of Europe | none | **Always-on primary.** 6 species, hourly, 5-day forecast, 92-day backfill. |\n| **polleninformation.at** | 13 countries¹ | **free key required** | Optional. Daily 0–4 index; more species, country-dependent. |\n| **DWD Pollenflug** | **Germany only** | none | Optional. Daily 7-point regional index; you pick your DWD region. |\n\n¹ AT, CH, DE, ES, FR, GB, IT, LV, LT, PL, SE, TR, UA.\n\nPollenWatch tracks six canonical allergens — **alder, birch, grass, mugwort,\nolive, ragweed**. Not every source covers every one (e.g. DWD has no olive); a\nsource only produces sensors for the allergens it actually reports at your\nlocation.\n\n## Analytics\n\nOn top of the raw per-source sensors:\n\n- **recent_percentile** — today's level versus the recent window (per source).\n  Open-Meteo computes it on day one from its 92-day backfill; the other sources\n  baseline on Home Assistant recorder history and honestly report\n  \"insufficient history\" until ~2 weeks accrue (and \"off_season\" when the whole\n  window is zero).\n- **personal_score** — a source's raw value × your per-species sensitivity\n  multiplier (0.0–2.0), for personal-threshold automations.\n- **consensus + divergence** *(cross-source)* — for any allergen ≥2 sources\n  cover. Sources are compared on a common **3-level scale derived from the\n  EAACI / Copernicus CAMS thresholds** (each source's native scale is bucketed\n  or collapsed onto it — see [ANALYTICS.md](ANALYTICS.md), where every threshold\n  is sourced, not invented). **consensus** is categorical — `none` / `low` /\n  `high` / `mixed` — and **divergence** is a binary flag that turns on when the\n  sources genuinely disagree. Note the [#1](https://github.com/TheDave94/pollenwatch/issues/1)\n  3-source edge above.\n\n## Installation\n\nPollenWatch is not in the default HACS store yet. Add it as a custom repository:\n\n1. In Home Assistant, open **HACS → Integrations → ⋮ → Custom repositories**.\n2. Add `https://github.com/TheDave94/pollenwatch` with category **Integration**.\n3. Install **PollenWatch**, then restart Home Assistant (minimum HA 2024.11.0).\n4. Go to **Settings → Devices \u0026 Services → Add Integration** and search for\n   **PollenWatch**.\n\n## Setup \u0026 configuration\n\nInitial setup (Open-Meteo):\n\n- **Location** — pick the point to monitor on the map (defaults to your Home\n  Assistant location). Open-Meteo snaps it to the nearest ~10 km CAMS grid cell;\n  setup is refused if the location is outside CAMS European coverage.\n- **Allergens** — choose from alder, birch, grass, mugwort, olive, ragweed.\n- **Location is fixed** once set (to keep recorder history and the percentile\n  baseline coherent). To move it, remove and re-add the integration. You can add\n  PollenWatch more than once for several locations.\n\nIn the integration's **options** (after setup) you can change allergens and the\nupdate interval, set **personal sensitivity** multipliers, and enable the\noptional sources:\n\n- **polleninformation.at** — toggle on, pick your country, and paste a free API\n  key (requested from polleninformation.at). Stored encrypted in HA.\n- **DWD** — toggle on and pick your DWD region (Germany only; enabling it for a\n  non-German location is rejected as out-of-coverage).\n\n## Entities\n\nRaw sensors live under a per-source device (e.g. \"PollenWatch Open-Meteo\"):\n`sensor.pollenwatch_\u003csource\u003e_\u003callergen\u003e` (state = that source's current value;\nattributes include a daily-peak forecast and provenance). Source-specific\nderived sensors sit alongside them:\n`..._\u003callergen\u003e_recent_percentile` and `..._\u003callergen\u003e_personal_score`.\n\nThe cross-source metrics live under a separate **\"PollenWatch Analytics\"**\ndevice: `sensor.pollenwatch_analytics_\u003callergen\u003e_consensus` and\n`binary_sensor.pollenwatch_analytics_\u003callergen\u003e_divergence`.\n\n### Using the pollenprognos-card\n\n[pollenprognos-card](https://github.com/krissen/pollenprognos-card) does not yet\nauto-detect PollenWatch. Until a dedicated adapter exists, map the raw sensors\nwith the card's manual configuration (e.g. entity prefix\n`pollenwatch_open_meteo_`).\n\n## Attribution\n\nPollenWatch's data carries these required attributions:\n\n\u003e Generated using Copernicus Atmosphere Monitoring Service information.\n\u003e Pollen data via Open-Meteo.com.\n\n\u003e © Polleninformation Austria\n\n\u003e © Deutscher Wetterdienst (DWD)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedave94%2Fpollenwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthedave94%2Fpollenwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedave94%2Fpollenwatch/lists"}