Release v2.0.0-rc13
Pre-releaseSummary
Thirteenth and final release candidate of v2.0. One change on top of v2.0.0-rc12:
🛡️ 429 rate-limit cascade fix (#56)
Netatmo's push WebSocket broadcasts the same RTC `terminate`/`rescind` event to every device registered for push notifications (each with a unique `_id` but the same `session_id`). The coordinator previously processed every duplicate as a fresh event, calling `async_request_refresh()` each time → 3 HTTP calls per duplicate. With 6 receivers + a normal call, that's ~18 API calls in 2s, tripping the 429 rate limit (see attached log on issue #56).
Fix: track session_ids closed within the last 60s in a small in-memory dict. Terminate/rescind events whose session_id is in that set are skipped (no refresh, no duplicate logbook entries, no duplicate "end" event). Test coverage: 6 duplicate terminates → 1 refresh, same for rescind.
This also collapses the cosmetic noise where `bticino_intercom_terminated` logbook events fired ~10 times per call.
Soak
This is the final RC. Once we confirm a few days without 429 in the wild, v2.0.0 stable follows.
Upgrade requirements
Same as v2.0.0-rc12: Home Assistant ≥ 2026.5.0, pybticino `>=1.8.2`.
CI note
GitHub Actions was experiencing partial degradation when this tag was pushed (HACS validation hit a GitHub API rate limit). This release was created manually with the same packaging logic the CI workflow uses; the artifact below is bit-identical to what the workflow would produce. HACS validation will be rerun once GitHub recovers.
Full Changelog: v2.0.0-rc12...v2.0.0-rc13