Topology Nodes
Overview
The Topology Nodes service maintains a real-time, "active/connected" view of the electrical circuit topology within the OpenDSO platform. Unlike Topology Genesis, which provides the static "as-designed" circuit model, Topology Nodes dynamically tracks which devices are currently electrically connected based on the actual state of switching equipment in the field.
This service continuously monitors OpenFMB status profiles (such as SwitchStatusProfile and BreakerStatusProfile) published to the NATS message bus to track the real-time position of switches, breakers, reclosers, and other switching devices. When a switching device changes state (open/close), Topology Nodes recalculates the electrical connectivity of the circuit, determining which equipment is energized and how power can flow through the system.
The resulting "active topology" is critical for many OpenDSO applications and services that need to understand:
- Current electrical connectivity: Which devices are electrically connected at this moment based on switch positions
- Energized equipment: What portions of the circuit are currently energized or isolated
- Electrical grouping: Devices grouped by their electrical connectivity, allowing services to understand which equipment shares the same electrical island
- Source tracing: The path from any device back to its energy source
- Neighbor relationships: Direct electrical neighbors of any piece of equipment
The API endpoints documented below provide various ways to query this dynamic topology information, including requests for specific equipment connectivity, electrical grouping, and subscription capabilities for receiving real-time updates whenever the topology changes. This active topology model enables applications like volt-var optimization, fault location isolation and service restoration (FLISR), demand response, and other distribution automation functions that require accurate, up-to-date knowledge of circuit connectivity.
For information on the static "as-designed" circuit model, see Topology Genesis.
API commands
| Commands | Type | Message Object | Response Object | Description |
|---|---|---|---|---|
opendso.RegionMrid.topology.EquipmentMrid.source | Request | CIMEX | Get Source for region | |
opendso.RegionMrid.topology.request | Request | CIMEX | Get "Closed/Active Region" Topology | |
opendso.RegionMrid.topology.EquipmentMrid.request | Request | CIMEX | Get Equipment CIMEX Data & Current Pos Status | |
opendso.RegionMrid.topology.EquipmentMrid.neighbor | Request | CIMEX | Get Equipments Neighbors | |
opendso.RegionMrid.topology.EquipmentMrid.connected | Request | CIMEX | Get Equipments electrically-connected Equipment | |
opendso.RegionMrid.topology.EquipmentMrid.update | Subscribe | CIMEX | Subscribe to changes | |
| Get Eletrically Connected Groups | ||||
opendso.RegionMrid.topology.EquipmentMrid.group | Request | String | Get devices group | |
opendso.RegionMrid.topology.EquipmentMrid.group | Request | DTO | String | group for different specific device |
opendso.RegionMrid.topology.EquipmentMrid.groups | Request | Array(String) | Returns groups within in the regionID | |
opendso.RegionMrid.topology.EquipmentMrid.groupsdetailed | Request | CIMEX | This "groups details" topic has a larger response, It returns all the known groups, and each groups array of equipment within the groups. | |
opendso.RegionMrid.topology.EquipmentMrid.groups | Request | DTO | Array(String) | Groups for a different-specific region |
opendso.RegionMrid.topology.EquipmentMrid.groupsdetailed | Request | DTO | CIMEX | Group details for a specific regions |
opendso.RegionMrid.topology.EquipmentMrid.groupdevices | Request | DTO | CIMEX | Groups devices (cimex data is returned) |
Group for a specific device
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| source | string | ||
| type | string | json, string | |
| data | string | any-group-id |
Group for a specific region
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| source | string | ||
| type | string | json, string | |
| data | string | any-group-id |
Groups devices
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | ||
| source | string | ||
| type | string | json, string | |
| data | string | any-group-id |