v0.16.4-beta.2 - Phantom ring + FCM reconnect storm fixes (beta)
Pre-release
Pre-release
Beta release — please test before promoting to stable
Two independent reliability fixes.
Fixed
- Phantom doorbell ring on Home Assistant restart — event entities (doorbell ring, door opened, camera on) inherited their availability from the device
connection_state. A transient intercom disconnect, or the brief window during an HA restart, flapped them tounavailableand back; on recovery theEventEntityrestores its last event (e.g.ring) and Home Assistant fires state triggers, so automations watching the doorbell ran with no push notification involved. Event availability is now decoupled from connectivity (events are momentary historical markers), eliminating the flap. Real doorbell rings still fire normally. - Hardened the FCM push client against firebase-messaging reconnect storms (#12) — a poisoned
StreamReaderin the upstream_listenloop re-raises the same exception object every iteration, growing its traceback whilelogging.exceptionformats it inside the HA event loop; on Python 3.14 this is quadratic and pegs the core until the Supervisor watchdog kills HA.- A
logging.Filteron thefirebase_messaging.fcmpushclientlogger stripsexc_infoafter 3 tracebacks per 5-minute window (records are kept as one-liners), defusing the CPU bomb even while the upstream loop spins. abort_on_sequential_error_countis back to a bounded value (3) so the client gives up instead of spinning; the watchdog restarts it with a delayed, doubling backoff (5 → 15 min cap) that resets once the listener is healthy. A persistent server-side failure now means "push down for a while" instead of a crash loop.
- A
How to test
- Install via HACS with Show beta versions enabled, or download the source for
v0.16.4-beta.2manually. - Restart Home Assistant.
- Confirm no phantom doorbell notification fires on startup.
- Verify a real doorbell ring still triggers your automations as expected.
If everything is stable for a few days, this will be promoted to v0.16.4.