Recorder unblock on high-frequency PV sensors
Originating bug report: Reddit thread, tracked here as #155.
A user running a Victron Cerbo GX MPPT at more than one sample per second observed the Helios card never finishing its loading state (5+ hours), and the HA recorder going unresponsive for unrelated entities while the card was open. Disk latency on the HA host spiked above 12 s.
Root cause
Helios was pulling 30 days of raw state history in a single WebSocket call to feed the adaptive calibration and the shading-map trainer. On a 1 Hz sensor that's roughly 2.6 million state rows in one payload, which saturated the HA recorder's SQLite connection and starved every other consumer.
Fix, three parts
- Calibration and shading-map trainer migrated to
recorder/statistics_during_period(#156). Hourly buckets for the 5-day calibration (~120 rows). 5-min buckets for the 30-day trainer (~8.6k rows). Both paths fall back to the narrow raw window when the source entity is not long-term-statistics tracked. - Raw history fetch bound to the chart's visible window (~2 days) and now passes
significant_changes_only: trueserver-side across PV, grid, battery, and radiation (#157). 30 to 70 % fewer rows on noisy sensors. - Module-level cache + WebSocket timeout fallback (#158). The PV history / stats cache now survives the user navigating away from the card and back (15-min TTL). A stalled recorder no longer hangs the card forever, calls time out after 30 s and the card degrades to live chip values.
Installation
Pick v1.8.2-alpha.2 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 Lovelace dashboard once and the new card runs.
Feedback
This is a prerelease aimed at users with high-frequency PV / battery sensors. If you observe regressions on a normal install, please open an issue on the Helios repo referencing #155.