GUI-first Lovelace card for building a visual solar array map with live panel diagnostics, smart status coloring, and in-card configuration workflows.
Overview of the card (GIF). Right-click and select "Play animation" on Safari macOS:

- Built for visual clarity: panel tiles, KPI row, status labeling, and popup diagnostics, for small and big screens.
- GUI-first setup: start with rows/columns, then configure each panel slot.
- Supports large systems: scales to 100+ panels when needed.
- Drag-and-drop panel reordering directly on the card.
- Quick setup by tapping unconfigured panels.
- Array Health Check for peer comparison and underperformance detection.
- Inverter status matching with configurable working/fault terms.
- In-card history graphs in panel and KPI popups (
1h,6h,24h). - Auto-populate sensors by prefix (fill empty slots in order) during setup.
- Full YAML parity for advanced users.
Full GUI setup, no YAML needed:

Drag and Drop Panels
- Press and drag any panel tile onto another tile.
- The two panel slots swap positions.
- Order is saved to card config so layout remains consistent.
Tap-To-Config (Quick Setup)
- Tap an unconfigured panel tile.
- Quick Setup popup opens with:
- Select panel power sensor
- Disable Panel (hide but keep slot when off)
- After selecting power sensor, normal panel detail popup behavior is used.
Panel and KPI Popups
- Panel popup shows status, power, energy, deviation context, inverter status, and history graph.
- Power, Energy, and Custom KPI cards open their own popup views.
- History range chips (
1h,6h,24h) switch graph window.
Layout
- Title: Card title text.
- Rows / Columns: Defines array shape and total panel slots.
- Max card width (px): Limits full card width on large screens.
- Max card height (px): Optional height cap with internal scroll.
Display
- Power decimals: Precision for power values.
- Energy decimals: Precision for energy values.
- Custom KPI decimals: Precision for numeric custom KPI.
- Panel tap action: Open detail popup or no action.
- Use one system power sensor for top KPI:
- Select a single power entity for top KPI power.
- Optional Invert system power value for negative-source sensors.
- Use one system daily energy sensor for top KPI:
- Select a single energy entity for top KPI energy.
- Custom KPI sensor / heading / show toggle:
- Add a fourth KPI with custom title + sensor.
- Limit panel tile max width:
- Prevents tiles from stretching too wide on large screens.
- Max panel tile width (px) controls the cap.
Array Health Check
- Enable Array Health Check: Turns deviation engine on/off.
- Deviation threshold (%): Relative shortfall trigger.
- Absolute shortfall threshold (W): Minimum shortfall in watts.
- Deviation check time (minutes): Runtime gate before checks.
- Minimum active panels: Required active panel count.
- Minimum samples per panel: Data quality gate.
- Smoothing window (minutes): Averages recent power values.
- Dynamic floor start (W): Suppresses low-power false positives.
- Shared history window (hours): Recorder-backed baseline period.
Inverter Status
- Enable inverter status checks: Uses inverter status entity text.
- Show inverter status on panel tiles: Optional on-tile status text.
- Fault terms (comma-separated):
- If status matches these terms, panel is flagged inverter/error state.
- Working terms (comma-separated):
- Terms that indicate expected operation.
Status Colors
- Production base / mid / peak: Gradient colors by panel production level.
- Deviation / Error / Unavailable: Override state colors.
- Production color intensity: Controls production glow strength.
Panels
Each slot contains:
- Display name
- Power sensor P(W) (primary panel source)
- Energy sensor (kWh/Wh) (optional)
- Show panel energy (toggle)
- Panel rated power (W) (used for performance percentage)
- Deviation derate (%) (for naturally shaded panels in health checks)
- Inverter status sensor (optional)
- Show panel tile (hide but keep slot when off)
Tools:
- Default panel rated power + Apply default rated W to all panels
- Auto-populate sensors by prefix (fill empty slots in order)
- Remove all sensors
- In HACS, add this repository as a Custom repository:
- URL:
https://github.com/NoUsername10/Solar-Panel-Visualizer - Category: Dashboard
- URL:
- Install Solar Panel Visualizer.
- Reload Home Assistant frontend (or restart Home Assistant).
- Add card type:
custom:solar-panel-visualizer.
If the resource is not auto-added:
url: /hacsfiles/Solar-Panel-Visualizer/solar-panel-visualizer.js
type: module- Open dashboard.
- Click Edit dashboard.
- Click + Add card.
- Select Solar Panel Visualizer.
- Save.
If not listed in picker, use Manual card:
type: custom:solar-panel-visualizerGUI-only config:
type: custom:solar-panel-visualizerMinimal YAML-only config:
type: custom:solar-panel-visualizer
title: My Array
rows: 1
columns: 4
panels:
- id: panel-1
name: Panel 1
power_entity: sensor.panel_1_power
- id: panel-2
name: Panel 2
power_entity: sensor.panel_2_power
- id: panel-3
name: Panel 3
power_entity: sensor.panel_3_power
- id: panel-4
name: Panel 4
power_entity: sensor.panel_4_powerMIT License.







