Battery, radiation, semaphore: extending the alpha.2 recorder fix
Follow-up to v1.8.2-alpha.2 after field validation against a Victron Cerbo GX setup confirmed the PV-path fix works (adaptive calibration kicks in, recorder no longer freezes globally). Two symptoms remained: battery data took several minutes to populate, and each card mount caused a brief lag. A related report described every apex-charts card on the same dashboard flatlining while Helios was loading, the signature of Helios still monopolising the recorder on cards that share the connection.
Fix, three parts
- Battery and radiation fetches now follow the same statistics-first pattern as PV (#159). 5-minute buckets, around 576 rows per entity for a 2-day window, versus 150-200k raw on a 1 Hz BMS. Raw history fallback for entities without long-term statistics tracking. Module-level cache mirrors the PV pattern, no more refetch on every card mount.
- Global concurrency semaphore on the WebSocket fetch path (#160). Caps Helios's in-flight history / statistics fetches at 2, so the recorder keeps headroom for other history-bound cards (apex-charts, mini-graph, etc.) on the same dashboard.
- The 30-day shading-map trainer fetch defers behind the user-facing PV history and calibration fetches via
requestIdleCallback(1 s timeout fallback for browsers without it). The chip and chart paint first, the trainer fills in once the main thread has breathing room.
Installation
Pick v1.8.2-alpha.3 in HACS (show beta versions toggle), or download helios.js from this release and drop it under config/www/community/helios/ replacing the existing bundle. Refresh the dashboard.
What to watch for
Compared to alpha.2:
- Battery chart curve and chip should populate within the same second as the PV chart, not 5 minutes later.
- Each card mount should land with at most a one-frame flicker, not the visible recorder lag of alpha.2.
- Other history-bound cards on the same dashboard should keep rendering normally while Helios loads.
If something regresses, the browser console (F12) is the right place to look. Issue reports on the Helios repo referencing #155.