HELIOS is a custom Home Assistant Lovelace card that turns your solar setup into a living 3D view of your home, the sun and the weather, all in real time and right inside your dashboard.
It reads your solar, grid and battery wiring straight from the Home Assistant Energy dashboard, pulls a multi-model weather forecast from Open-Meteo (no key), and stitches both onto a tilted, rotatable map of your home. The sun's daily arc, the live sun disc, the incidence ray, the production / battery / grid chips and the cast shadows all follow a timeline you can scrub days into the past or the future, watching every layer move with it.
The scene is drawn by a self-contained 2.5D engine with no WebGL: a tilted raster basemap with every overlay (buildings, shadows, sun arc, chips and leaders) projected on top in SVG, so the card stays light and fluid on any device, phone included. Basemap tiles come from CARTO (free, no key), themed light or dark to match Home Assistant.
Website + live demo: explore the full card, the documentation and the public roadmap at helios-ha.org.
Helios has three view modes, switched from the round buttons in the top-left corner.
A radial instrument that bins each metric into 24 hours of the day and stands a ring of cylinders around the flat Helios mark at the centre, one bar per hour. The right-hand rail toggles metrics as filters: each active metric adds its own concentric ring (production, consumption, battery SoC, battery, grid, irradiance, custom). Hover or tap a slice to light up that hour across every ring and read each metric's value in the tooltip; hover or tap the centre mark for the period total. A soft day / night wedge on the ground shows when the sun is up over the period, and an N / S compass keeps the dial legible as it rotates with the scene.
A radial comparison of one metric, hour by hour: the current period stands as a ring of bars while a floating marker and stem pin the same hour in the previous comparable period, so you read instantly whether each hour is up or down. Bars are coloured good or bad depending on the metric (more production is good, more grid import is not). An arrow with a drop line marks the current hour, the flat Helios mark sits at the centre (hover or tap it for the period total), and the same day / night wedge grounds the dial.
Helios follows your Home Assistant language, with 63 languages translated today.

HELIOS displaying current solar exposure, cloud coverage and live PV production for the user's home. An interactive live demo is available at helios-ha.org.
Helios is built and maintained by one person, in the open. If it helps your daily routine, a star on GitHub or a small coffee keeps the project alive and lets me keep pushing on the next cycle. Upcoming work is tracked live on the public roadmap at helios-ha.org.
Helios is available directly in the HACS store.
helios.js from the latest release.<config>/www/community/helios/.yaml
url: /local/community/helios/helios.js
type: moduleyaml
type: custom:helios-cardIf Helios does not appear in the picker, the resource is probably not loaded. With a HACS install it is registered automatically. For a manual install, go to Settings then Dashboards, open the three-dot menu, choose Resources, and add the resource as described above, then hard-refresh your browser.
No API key required. The basemap is served by CARTO (free, no key) and weather comes from Open-Meteo (also free, no key).
Solar, grid and battery wiring is not configured per-card: Helios resolves every entity slot from the HA Energy dashboard (Settings then Dashboards then Energy), the same global config the official Energy card reads. Set the slots there once and Helios picks them up automatically. The options below cover only the visual and install-specific bits.
Helios follows the energy dashboard at 100% and never estimates a value:
So: a visible chip is always a real-time measurement; a curve is always your official meter data. If a chip you expect is missing, open the editor: the live-data panel lists, family by family, what your dashboard provides and what is missing.
Minimal config:
type: custom:helios-card
The visual editor exposes every option below. Direct YAML editing also works.
| Key | Type | Default | Description |
|---|---|---|---|
home-latitude |
number | HA home | Optional override (decimal degrees). Applied only when both lat and lon are set and valid; otherwise the card uses hass.config. Useful for a holiday home, a shared install, or several cards each centred on a different place. |
home-longitude |
number | HA home | Companion to home-latitude. Partial or out-of-range values are ignored. |
| Key | Type | Default | Description |
|---|---|---|---|
auto-rotate-enabled |
boolean | false |
Idle camera orbit. Off by default; enable for kiosk / always-on dashboards. Any drag pauses it, then it resumes after a short idle. |
camera-pitch-deg |
15-85 | 55 |
Optional fixed pitch at boot. Drag still works unless locked. |
camera-bearing-deg |
0-359 | hemisphere | Optional fixed bearing at boot. |
camera-locked |
boolean | false |
Disable drag-rotate and the idle orbit; the camera stays at the configured pose. Also toggled live from the lock button on the card. |
The card also remembers the live camera pose, the active mode, the selected clock filters and the lock per home (or per
cache-id), so reopening the dashboard restores exactly what you left.
| Key | Type | Default | Description |
|---|---|---|---|
auto-hide-ui |
boolean | false |
No UI mode: fade the timeline and the on-card controls after a few seconds of inactivity, bringing them back on any tap or move. For kiosks and wall displays. |
| Key | Type | Default | Description |
|---|---|---|---|
display-radius |
50-500 m | 200 |
Distance around the home within which buildings and shadows render. The main perf lever on older phones. |
building-count |
10-100 | 50 |
How many of the nearest buildings to keep around the home. |
building-real-size |
boolean | true |
Extrude buildings to their real OSM heights (capped). When false, every building uses the fixed building-height prism. |
building-height |
3-10 m | 6 |
Fixed prism height used when building-real-size is false. |
building-cluster-radius |
0-100 m | 0 |
Buildings within this distance of the home (or touching it) join the home group at full opacity. Use it to attach garages / verandas to the house. |
building-opacity |
0-1 | 0.5 |
Opacity of the surrounding buildings. The home (and its cluster) always stays at full opacity. |
building-color |
color | theme | Optional base tone for the surrounding buildings. |
shadows-enabled |
boolean | true |
Master toggle for the cast ground shadows (projected from the building footprints). |
shadow-opacity |
0-1 | 0.32 |
Opacity of the cast shadows. |
| Key | Type | Default | Description |
|---|---|---|---|
display-update-frequency-per-hour |
1-6 | 4 |
Storage + render cadence (buckets per hour) for the data store and every graph. 4 = 15-min |
$ claude mcp add Helios \
-- python -m otcore.mcp_server <graph>