Getting started¶
Install¶
OpenDSS Designer is a Python package; it needs Python 3.10 or newer.
pip install opendss-designer
opendss-designer
This starts a local web server and opens the editor in your browser. Useful
flags: --port 8721 (it picks the next free port if busy) and
--no-browser. There is also --host and --demo for
hosting an instance — neither affects a normal local run.
The app is local by default: the server binds to 127.0.0.1, and your circuits
never leave your machine. The only outbound requests are the ones you ask for
explicitly — the NREL load-profile and NSRDB irradiance fetchers. If you are
using the hosted instance instead, see Security for
what that changes.
Start from a sample
Pick one from the Samples dropdown in the toolbar — Demo substation for the basics, or Radial feeder with DER if you want something with PV, a battery and a daily load shape to run a time series on. from the repository, then press Solve to see the result overlays immediately.
Draw your first circuit¶
- Place elements — click an element in the palette (Source, Busbar, Transformer, Breaker, Load, Capacitor, Generator, PV system, Storage…), then click the canvas to drop it. Placement is sticky: keep clicking to drop several; press Esc to stop. Each palette item has a keyboard shortcut letter — see Components for the full reference.
- Wire them up — drag from one terminal to another. You'll be asked
whether the connection is a Wire (an ideal connection that merges the
two buses) or a Line (a real OpenDSS
Linewith impedance and length). Illegal connections are refused with an explanation. - Set parameters — select an element and edit its OpenDSS parameters in the properties panel: kV, kVA, impedances, phases (1/2/3), wye/delta connection, load model, and so on. Lines can start from conductor presets.
- Watch the validation — unconnected terminals, a missing source, islands, duplicate names, and kV mismatches are flagged live; errors halo the offending element and disable Solve until fixed.
Solve¶
Press Solve to run a snapshot power flow through the real OpenDSS engine. The results overlay the diagram:
- bus voltages in per-unit at every busbar,
- element loading as pie charts with percentages,
- power flows, and total losses in the status bar,
- violations color-coded: undervoltage blue, overvoltage/overload red.
Toggle Auto to re-solve automatically after every change. The Graph tab in the bottom panel plots solved results — pick your axes to get, for example, a classic voltage-profile plot along the feeder. The Fault overlay and Losses tab cover short-circuit currents and per-element losses — see Solving & analysis.
Simulate over time¶
Snapshot solves are one operating point. To simulate a day or a year — loads following demand curves, PV following the sun, storage dispatching — assign shapes in the Shapes tab (draw them, paste CSV, or import real NREL/NLR building profiles and NSRDB irradiance), switch the toolbar to Time series mode, and press ▶ Run. Then scrub or play through the results directly on the diagram. See Shapes & profiles and Time-series analysis.
Save, export, import¶
- Save/Open stores the whole project (diagram + parameters) as a
.oneline.jsonfile. - Export writes a runnable
.dssscript — the exact commands the built-in solver uses — so anything you draw also runs in stock OpenDSS. - Import loads existing
.dssfiles; see Importing DSS files.
Editor essentials¶
| Undo / redo | Ctrl+Z / Ctrl+Y |
| Copy / paste | Ctrl+C / Ctrl+V |
| Delete selection | Del |
| Stop placing | Esc |
Plus: grid snapping, pan/zoom with a minimap, box-select and group-move, right-click context menu, rotation, and double-click actions — double-click a breaker to open/close it, or a wire/line to add a draggable routing point.
To move a connection, drag the terminal it sits on: a terminal holding a single wire hands that wire over rather than starting a second one, so you can walk a line from one component to another in one gesture. Drop it on empty canvas or press Esc to leave it where it was; hold Alt to draw a new wire from an occupied terminal instead.