Files
eco/docs/schematic_panels.md
Henrik Lemke 98d8e4a0c5 docs: "Did you know?" tips, pages for recent features, and a docs-site job
- docs/did_you_know/: one short tip per feature added since May 2026
  (<date>-<slug>.md, YAML front matter: added/tags/details), listed
  newest first; index.md describes the format for adding more.
- New pages for features that had none: launching, command_history,
  tab_completion, live_gui, tweak, scanning, status_server,
  channel_access, shared_files, schematic_panels. Wired into index.rst
  together with the existing queues page.
- Fix archiver_stripchart/listening_monitor: the method is
  archiver.strip_plot (strip_chart does not exist on DataHub); document
  the per-device .strip_plot().
- NAMESPACE_MONITOR_FORMAT.md: scan monitoring is wired into Daq's scan
  callbacks since 2026-09-09.
- scripts/eco-docs (+ -install-user-service): build the docs from an own
  clone and serve them over HTTP as user systemd units, rebuilt by a
  timer; a failed build never replaces the served site.
2026-10-25 14:26:52 +01:00

2.4 KiB

Live schematic panels: prepump, alarms, beamline

Some assemblies can draw themselves as a clickable SVG schematic that updates live from the control system. These are a scriptable, in-session version of the corresponding caQtDM panels. Open one with .show():

prepump.show()                 # prepump P&ID: valves, gauges, pumps, per-line state
alarms.show(live=True)         # Bernina alarm overview, green/red per channel
beamline.svg_panel(live=True)  # X-ray beamline layout

Where the panel appears is chosen automatically: a native Qt window in a terminal session, inline in a notebook, docked in the desktop. Force it with backend="window"|"inline"|"sidecar". Clicking a symbol acts on that component in your live session (e.g. toggling a valve).

Prepump system

prepump holds the beamline's pre-vacuum lines (line1_usd, line2_lic, line3, line4) together with the roots pump and the gp gauge. Pump-down and vent are scripted sequences with the interlocking done for you:

prepump.pump_down("line1_usd")   # or prepump.line1_usd.pump_down()
prepump.vent("line2_lic")
prepump.isolate_all()
prepump.check()                  # lists missing or failed components at every depth

pump_down closes the line's vent valve and isolates the other lines (so they are not pumped against a rising gp). It then opens the line's pump valve and waits until both gp and the line's own gauge reach the target pressure. Afterwards each other line is restored to what it was doing before. It returns True on success and False on timeout (timeout=700 s by default).

The building blocks (VacuumGauge, Valve, TurboPump, IonPump, ...) are described in eco/devices_general/vacuum/README.md in the repository.

Alarm panels

alarms (the Bernina overview), papamoll_alarms_35fs and papamoll_alarms_100fs model the caQtDM alarm overviews. Each channel reports OK, WARNING or ALARM:

alarms.worst_severity()          # one value for the whole panel
alarms.show(live=True)

Build your own panel from a list of channels with eco.elements.alarm.AlarmPanel. See eco/devices_general/alarms/README.md in the repository.

Your own assembly

Any Assembly that implements _widget_svg_panel(self, live=False, **kwargs) gets this .show() behaviour for free. See {doc}widget_containers for composing panels from existing widgets instead.