Skip to main content

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

CommandsTypeMessage ObjectResponse ObjectDescription
opendso.RegionMrid.topology.EquipmentMrid.sourceRequestCIMEXGet Source for region
opendso.RegionMrid.topology.requestRequestCIMEXGet "Closed/Active Region" Topology
opendso.RegionMrid.topology.EquipmentMrid.requestRequestCIMEXGet Equipment CIMEX Data & Current Pos Status
opendso.RegionMrid.topology.EquipmentMrid.neighborRequestCIMEXGet Equipments Neighbors
opendso.RegionMrid.topology.EquipmentMrid.connectedRequestCIMEXGet Equipments electrically-connected Equipment
opendso.RegionMrid.topology.EquipmentMrid.updateSubscribeCIMEXSubscribe to changes
Get Eletrically Connected Groups
opendso.RegionMrid.topology.EquipmentMrid.groupRequestStringGet devices group
opendso.RegionMrid.topology.EquipmentMrid.groupRequestDTOStringgroup for different specific device
opendso.RegionMrid.topology.EquipmentMrid.groupsRequestArray(String)Returns groups within in the regionID
opendso.RegionMrid.topology.EquipmentMrid.groupsdetailedRequestCIMEXThis "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.groupsRequestDTOArray(String)Groups for a different-specific region
opendso.RegionMrid.topology.EquipmentMrid.groupsdetailedRequestDTOCIMEXGroup details for a specific regions
opendso.RegionMrid.topology.EquipmentMrid.groupdevicesRequestDTOCIMEXGroups devices (cimex data is returned)

Group for a specific device

FieldTypeLabelDescription
idstring
sourcestring
typestringjson, string
datastringany-group-id

Group for a specific region

FieldTypeLabelDescription
idstring
sourcestring
typestringjson, string
datastringany-group-id

Groups devices

FieldTypeLabelDescription
idstring
sourcestring
typestringjson, string
datastringany-group-id