Schedule Dispatch UI — User Guide
The Schedule Dispatch UI is the operator interface for planning and dispatching distributed energy resources (DERs) across the grid. It lets an operator request availability from dispatch resources over a chosen time window, build dispatch schedules on a calendar, review the resulting load shape against forecasts on a graph, and then send those schedules out to the field.
Overview
The app communicates with OpenDSO dispatch services over the NATS message bus using OpenFMB profiles. From the operator's point of view, it answers two questions:
- What can each resource do? — How much load each resource can charge or discharge over a time window (its availability).
- What should each resource do? — The hourly schedule (in kW) the operator commits to and dispatches (a scheduled event).
The resources you schedule are called Dispatch Nodes. Each Dispatch Node corresponds to an EndDeviceGroup in the active region's inventory — for example a group of EVs, batteries, or other controllable load. The app automatically discovers the Dispatch Nodes for whichever region(s) you have selected in inventory; you do not add them manually.
A Dispatch Node is the schedulable unit shown in the app. A Dispatch Event (also called a scheduled event) is one resource's hourly schedule over a time range. The entity that created an event — the operator's organization or an upstream optimizer — is the event dispatcher, and events are color-coded by dispatcher.
Layout
The main screen is split into two resizable panes:
| Pane | Component | What it shows |
|---|---|---|
| Calendar (left/top) | Scheduling table | A grid of Dispatch Nodes (columns) by hour (rows). Each cell shows the scheduled kW value and the resource's status at that hour. |
| Graph (right/bottom) | Load chart | A line chart of the total Scheduled Dispatch, the region's forecast load curves, and an optional Net Load curve. |
Drag the divider between the panes to resize them. Use the orientation toolbar button to switch between a side-by-side and a stacked (top/bottom) layout.
Toolbar Actions
The toolbar at the top of the app provides the main controls:
| Icon | Action | Description |
|---|---|---|
Filter (mdi-filter-menu) | Show Filter | Opens the filter drawer to choose which Dispatch Nodes are shown (see Filtering Dispatch Nodes). |
Calendar-sync (mdi-calendar-sync) | Get Availability | Requests availability for the selected time window from every visible Dispatch Node. Enabled once a time range is selected. |
Send (mdi-send) | Send Dispatches | Sends all pending (new, updated, or cancelling) schedule changes to the field. Enabled only when there are pending changes. |
Rotate (mdi-screen-rotation) | Change Orientation | Toggles between side-by-side and stacked layouts for the calendar and graph. |
Cog (mdi-cog) | Settings | Opens the settings dialog (see Settings). |
The Scheduling Workflow
The day-to-day workflow moves left to right across the toolbar:
1. Select a time window
Click cells (hours) in the calendar to define the time range you care about. The first click sets the start; a second click sets the end of the range. Clicking the same cell again clears the selection.
2. Get availability
With a range selected, click Get Availability. The app sends an availability request to each visible Dispatch Node and shows per-node progress (pending → loading → completed/error). When responses arrive, the available capacity for each resource is shown in the calendar so you can see how much each resource can offer in that window.
The request timeout is configurable in Settings (default 5 minutes / 300000 ms). If a node times out or errors, it is reported individually so a single slow resource does not block the others.
3. Build the schedule
In the calendar, click within a resource's available hours to add scheduled values, building up that resource's Dispatch Event. You can also remove a scheduled hour to trim an event. Newly built or modified events are flagged as pending changes.
Each scheduled cell is colored by the event dispatcher that created it, so you can distinguish your own pending changes from events already committed by other dispatchers.
4. Review against the forecast
As you build the schedule, the graph updates to show:
- Scheduled Dispatch — the total committed dispatch across all visible nodes.
- Forecast curves — one line per forecast the region is publishing.
- Net Load (optional) — select a forecast from the dropdown to plot the forecast combined with the scheduled dispatch, so you can see the net effect of your schedule on regional load.
Values on the graph are in kW.
5. Send the dispatches
Click Send Dispatches to open the Send Distributed Report dialog. It summarizes the pending changes grouped as:
- Scheduling New Events — brand-new schedules.
- Updating Existing Events — changes to events already in the field.
You can mark an existing event for cancellation here. After reviewing, check "I have verified the data above." and click Send Distributed Report. The app sends each change to the field and updates each event's status based on the response (e.g. a successful opt-in becomes Scheduled; an opt-out is flagged as OptOut).
Resource & Event Status
Each scheduled event carries a status that drives its color and what happens when you send dispatches:
| Status | Meaning |
|---|---|
| Unscheduled | A new event you are building that has not been sent yet. |
| Updated | A previously scheduled event you have modified but not yet re-sent. |
| Scheduled | The event is committed and acknowledged in the field. |
| OptOut | The resource declined the dispatch. |
| Cancelling | The event is marked to be cancelled on the next send. |
| Cancelled | The event has been cancelled. |
Dispatch Nodes also report a discovery status that indicates whether the app is receiving schedule data for that resource over NATS:
| Status | Meaning |
|---|---|
| Discovered | Schedule data was successfully found on the message bus. |
| Pending | The app is still attempting to discover schedule data. |
| Discovery Timeout | No schedule data arrived within ~20 seconds. Verify the expected dispatch service is running and reachable on NATS. |
| Connection Error | The app could not connect to the resource. |
A node still in Pending shows a spinning indicator; a node in Discovery Timeout shows a warning icon.
Filtering Dispatch Nodes
Click the Filter toolbar button to open the filter drawer. It presents the resources as a tree grouped by Region → EndDeviceGroup → Dispatch Node. Use the checkboxes (or Select All / Deselect All) to control which Dispatch Nodes appear in the calendar and contribute to the graph. Clicking a node's MRID subtitle copies that MRID to the clipboard.
Settings
The Settings dialog (cog icon) provides:
- Request Timeout (ms) — how long the app waits on a Get Availability or Send Dispatch request before timing out (default
300000). - Show Unmatched Schedule Data — opens a dialog listing schedule data that arrived on the bus but did not match any EndDeviceGroup in the active region's inventory. This is useful for diagnosing resources that are publishing but are not configured in inventory.
- Refresh Local Dispatch Nodes Schedules — clears the locally held events and availability for all nodes and re-discovers them. Use this if the displayed schedules look stale or inconsistent.
How Discovery & Cleanup Work
A few automatic behaviors are worth knowing about so the display makes sense:
- The app loads Dispatch Nodes from the EndDeviceGroups of the region(s) selected in inventory. Changing the active region reloads the nodes.
- It continuously listens for published schedules on NATS and matches them to your Dispatch Nodes. Schedules that don't match any configured EndDeviceGroup are collected under Show Unmatched Schedule Data.
- Committed (Scheduled) events that stop being refreshed on the bus are treated as stale and are automatically removed after a short window. Events you are actively building (Unscheduled) are never auto-removed. If a schedule disappears unexpectedly, confirm the owning service is still publishing it.
Related
- GMS UI Apps overview — other OpenDSO operator applications.
- Settings Configuration Guide — configuring application and service settings panels.
- Deployment Overview — where the Schedule Dispatch UI frontend service fits in an OpenDSO deployment.