Setup¶
Prerequisites¶
- Google Cloud account (free tier is sufficient)
- Google Cloud API key with the following APIs enabled:
- Home Assistant 2025.1.0 or later
See Google Maps Platform pricing for free tier limits.
Get an API key¶
- Go to the Google Cloud Console
- Create a new project (or select an existing one)
- Go to APIs & Services → Library
- Search for and enable each of: Air Quality API, Pollen API, Weather API
- Go to APIs & Services → Credentials → Create Credentials → API key
- Copy the key
Tip
For home use, an unrestricted key is fine. To restrict it, allow HTTP referrers or the IP address of your HA server.
Install¶
- Open HACS in Home Assistant
- Go to Integrations → Explore & Download Repositories
- Search for Particle Man and click Download
- Restart Home Assistant
- Download the latest release from GitHub Releases
- Copy the
custom_components/particle_man/folder into yourconfig/custom_components/directory - Restart Home Assistant
Initial configuration¶
Shown when you add the integration via Settings → Devices & Services → Add Integration → Particle Man.
| Field | Description |
|---|---|
| API Key | Your Google Cloud API key with Air Quality, Pollen, and Weather APIs enabled |
| Location name | Label for this location (default: Home) |
| Latitude | Pre-filled from your HA home address |
| Longitude | Pre-filled from your HA home address |
After setup, all other settings are available at any time via the Configure button — no need to remove and re-add the integration.
Options¶
Accessed via Configure on the integration card. Settings span multiple pages depending on which APIs are enabled.
Saving options automatically reloads the integration. API call counters are not reset on reload.
Automagic mode (default)¶
With Automagic on, Particle Man automatically calculates the safest polling interval for your setup. You don't set an interval manually — it's derived from:
| Factor | What it does |
|---|---|
| APIs enabled | Determines how many calls are made per poll |
| Number of locations | Multiplies calls (each location is polled separately) |
| Monthly API limits | Sets the ceiling the interval must stay under |
| Quiet hours window | Reduces effective polling time, so active polls are closer together |
| 5% safety buffer | Adds headroom so the projection doesn't land exactly at the limit |
Specific formula (weather interval):
safe_interval = ⌈ active_minutes_per_month × calls_per_poll × num_locations × 1.05 / monthly_limit ⌉
The result is floored at 15 minutes. active_minutes_per_month uses the actual day count of the current billing month (not a fixed 30-day assumption), minus any quiet hours.
Air Quality and Pollen are always fetched on a separate 60-minute cadence (matching Google's data refresh rate). At 7+ locations they scale above 60 minutes automatically.
All of these assumptions are surfaced as attributes on the Monthly AQ Calls, Monthly Pollen Calls, and Monthly Weather Calls diagnostic sensors. Open any of these in Developer Tools → States to see exactly what interval and assumptions are in effect.
With Automagic on, the quiet hours and location settings from Configure are the only inputs you need. The interval calculation is invisible unless you inspect the diagnostic sensors.
Manual mode¶
Switch Automagic off to control the interval and limits yourself.
| Option | Default | Description |
|---|---|---|
| Check every (minutes) | 20 | How often to fetch new data (15–1440 min) |
| Air Quality limit | 10,000 | Monthly AQ call ceiling before pausing |
| Pollen limit | 5,000 | Monthly Pollen call ceiling before pausing |
| Weather limit | 10,000 | Monthly Weather call ceiling before pausing |
The options form shows projected monthly usage and a suggested minimum interval for the current month, quiet hours, and location count.
Quiet hours¶
Quiet hours pause all API fetches during a nightly window. They reduce API consumption and, in Automagic mode, allow a shorter daytime polling interval while still fitting within the monthly limit.
| Option | Default | Description |
|---|---|---|
| Enable quiet hours | On | Pause polling overnight |
| Pause from | 23:00 | Start of the quiet window |
| Resume at | 05:00 | End of the quiet window |
Quiet hours apply globally — all locations pause and resume together.
APIs to enable¶
| Option | Default |
|---|---|
| Air Quality | On |
| Pollen | On |
| Weather | On |
Disabling an API removes its sensors and stops counting calls for that service.
Air Quality options¶
| Option | Default | Description |
|---|---|---|
| Forecast days | 5 | Days of forecast data (1–5) |
| Language | en | Language for display names and health guidance (BCP-47) |
| Add regional AQI sensor | Off | Show a country-specific AQI alongside Universal AQI — see About the two AQI types |
| Regional AQI standard | us_aqi | Which regional standard to use |
Supported regional AQI standards
| Code | Index |
|---|---|
us_aqi |
United States (EPA AQI) |
can_ec |
Canada (Environment Canada) |
gbr_defra |
United Kingdom (DEFRA) |
deu_uba |
Germany (UBA) |
fra_atmo |
France (ATMO) |
chn_mep |
China (MEP) |
ind_cpcb |
India (CPCB) |
jpn_caqi |
Japan (CAQI) |
mex_sedema |
Mexico (SEDEMA) |
nld_lki |
Netherlands (LKI) |
sgp_nea |
Singapore (NEA) |
kor_keco |
South Korea (KECO) |
esp_calidad |
Spain (Calidad) |
Weather options¶
| Option | Default | Description |
|---|---|---|
| Units | Metric | Temperature, wind, and precipitation units. HA can convert for display independently |
| Weather alerts sensors | Off | Creates three sensors: Alert Count (integer), Alert Highest Severity (MINOR/MODERATE/SEVERE/EXTREME), and Alert Event Types (comma-separated codes). All show empty/0 when no alerts are active |
Locations¶
Multiple locations can be monitored using the same API key. Each location gets its own Pollution, Pollen, and Weather devices but shares the Diagnostics device and monthly quota.
Add, edit, or remove locations via Configure → Locations.
Warning
Multiple locations multiply API call counts proportionally. Automagic mode accounts for this automatically. In manual mode, the options form shows combined projected usage — increase the interval if you add locations.
Removing the integration¶
- Go to Settings → Devices & Services → Particle Man
- Click the three-dot menu → Delete
- Restart Home Assistant
- (Optional) Uninstall via HACS or delete
custom_components/particle_man/from your config directory