You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The integration exposes WebSocket commands for programmatic access to panel topology and entity mappings. These commands are available to custom cards,
AppDaemon scripts, or any WebSocket client connected to Home Assistant.
span_panel/panel_topology
Returns the full physical layout of a SPAN panel in a single call — circuits with their breaker slot positions, entity IDs grouped by role (power, energy,
switch, select), and sub-devices (BESS, EVSE) with their entities.
A custom card rendering the physical panel needs to know which breaker slot each circuit occupies, which entity provides its power reading, which switch
controls its relay, and so on. Without this command, the card would need to query the device registry, entity registry, and individual entity states in separate
calls, then infer which entities belong to the same circuit by parsing naming conventions. That correlation is fragile — entity naming patterns can differ
between installs, and EVSE feed circuit sensors live on the EVSE sub-device rather than the panel device. The topology command provides all of these
relationships explicitly, keyed by circuit UUID, so the card reads a single structured response instead of guessing.
Not all roles are present on every circuit. Roles are omitted when the entity does not exist (e.g., current is absent if the panel does not report per-circuit
current, switch is absent for always-on circuits).
Sub-Device Object
Field
Type
Description
name
string
HA device display name
type
string
bess, evse, or unknown
manufacturer
string/null
Device manufacturer
model
string/null
Device model
serial_number
string/null
Device serial number
sw_version
string/null
Device firmware/software version
entities
object
Entity ID keyed map with domain, name
Errors
Code
Description
device_not_found
The device_id does not exist in HA
not_span_panel
The device is not a SPAN Panel device
not_loaded
The integration or config entry is not loaded
no_data
The coordinator has no panel data yet
Usage from a Custom Card
consttopology=awaitthis.hass.callWS({type: "span_panel/panel_topology",device_id: this._config.device_id,});// topology.circuits is keyed by circuit UUIDfor(const[circuitId,circuit]ofObject.entries(topology.circuits)){// circuit.tabs => [5, 6] (breaker positions)// circuit.entities.power => "sensor.span_panel_kitchen_power"constpowerState=this.hass.states[circuit.entities.power];}
Multi-Panel Homes
Each panel is a separate config entry with its own device ID. To render multiple panels, call span_panel/panel_topology once per panel device ID. The response
is scoped to a single panel — circuits, sub-devices, and entity mappings from other panels are never included.