Reference
Weather, haze, and the indoor swap
Where the readings come from, the thresholds that swap the outdoor block for an indoor movement plan, and how Today, Places, and notifications show it.

Sources#
| Source | Used for | Notes |
|---|---|---|
| APIMS (Malaysian Department of Environment) | Air Pollutant Index, nearest station to the family's coordinates | Default provider. Falls back to Kuala Lumpur stations. |
| Open-Meteo | Temperature forecast and PM2.5 | Fallback provider anywhere in the world. PM2.5 is converted to the Malaysian index and labelled "estimated". |
No family data is sent. The family's city or coordinates select the station.
Thresholds#
| Condition | Effect |
|---|---|
| Air index above 100 | Outdoor block becomes an indoor movement plan |
| Temperature above 32 °C | Outdoor block becomes an indoor movement plan |
Either alone is enough.
Grades on the Today chip#
| Reading | Grade |
|---|---|
| Unknown | unknown |
| 50 or below | ok |
| Above 50 | moderate |
| Above 100 | amber |
Where it appears#
- Today: a banner such as "Haze API 161 (estimated) (>100) — indoor movement plan today." and the haze chip.
- Outside › Places: "Today {temp}° · haze API {api} ({label}) · outdoor before 9:30 / after 17:00", or "indoor movement plan today".
- Notifications: the parents' 06:30 morning haze check fires only when the reading warrants the swap.
Caching#
Readings are cached per family for 30 minutes. A simulated or past date uses its own cache, so a demo date never inherits this morning's haze.