fix(flomni): RT machine renamed mpc2844 -> mpc-flomni
Read the Docs Deploy Trigger / trigger-rtd-webhook (push) Successful in 1s
CI for csaxs_bec / test (push) Successful in 3m25s

PSI DHCP updated the DNS on 2026-11-03: mpc-flomni.psi.ch -> 129.129.98.71,
mpc2844.psi.ch no longer resolves. Device configs (ptycho_flomni, simulated),
rt_flomni/rt_omny ophyd, webhmi_client default host, sim devices, e2e harness, docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit was merged in pull request #349.
This commit is contained in:
Mirko HollerandClaude Opus 5.5 authored and holler committed 2026-11-03 09:43:14 +01:00
1 parent ffcc879d42
commit ea05701533
12 files changed
+63 -63

No files matched your search

@@ -77,10 +77,10 @@ Naming: "move ahead" in the text above (sample PIDs `FAST_FZP_PID_LOOP(0)` < 0)
beyond its centre during the exposure, on the side that gives it more stroke for the next step. It is not a
"pre-move" of the FZP to the next point (that is `TargetSelect` `use_final` 1, see below).
## Update 2026-10-20 (flOMNI loop on PREEMPT_RT, mpc2844)
## Update 2026-10-20 (flOMNI loop on PREEMPT_RT, mpc-flomni)
The loop has new modules since the text above was written (flOMNI `FeedbackLoop/tuning_guide.md`,
`feedback_report.md` 5.6, 6n, 6o, 6q). Parameters are changed in the web HMI (`http://mpc2844:8080`, tab
`feedback_report.md` 5.6, 6n, 6o, 6q). Parameters are changed in the web HMI (`http://mpc-flomni:8080`, tab
Parameters) instead of OrchestraHMI. `i` = x or y, as above. Module names now: `PID_x`, `PID_y` (sample stage),
`PID_x_fzp`, `PID_y_fzp` (FZP scanner), `AnalogInput_6289` (was `AnalogInput_6259`).
@@ -16,7 +16,7 @@ in PID_ _FZP
limit the analog output LB and UB
```
## Update 2026-10-20 (flOMNI loop on PREEMPT_RT, mpc2844)
## Update 2026-10-20 (flOMNI loop on PREEMPT_RT, mpc-flomni)
The limited range is the present operating state: `PID_x_fzp` / `PID_y_fzp` `Ub` / `Lb` = ±1.5 V because the cap
sensors are calibrated over about ±2 V only (flOMNI `feedback_report.md` 6n). FZP ≈ 0.13 µm/V in x, ≈ 0.05 µm/V in y,
@@ -95,7 +95,7 @@ as default or inconsistent, violated error rules, the definition with its sha1,
## Connection
`flomni.rt_settings` sends its requests through the device `flomni_loop_settings` (device server). The device
talks to the web HMI on the loop machine (`http://mpc2844:8080`, REST `/api/settings`; port 80 as fallback) with the
talks to the web HMI on the loop machine (`http://mpc-flomni:8080`, REST `/api/settings`; port 80 as fallback) with the
API token in its device config (`ptycho_flomni.yaml`, `token:`; the line of `~/loop-data/webhmi/api_token` on
mpc2844). Without that device (e.g. a simulated config) the client talks to the web HMI directly with
mpc-flomni). Without that device (e.g. a simulated config) the client talks to the web HMI directly with
`~/.flomni_webhmi_token`. The web HMI tab *Loop settings* shows and changes the same settings with the same rules.
+24 -24
View File
@@ -7,7 +7,7 @@ feyex:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: D
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -30
- -1
@@ -32,7 +32,7 @@ feyey:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: E
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -1
- -10
@@ -53,7 +53,7 @@ fheater:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -15
- 0
@@ -76,7 +76,7 @@ foptx:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -17
- -12
@@ -115,7 +115,7 @@ fopty:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: F
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 4
@@ -147,7 +147,7 @@ foptz:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 27
@@ -168,7 +168,7 @@ fsamroy:
deviceClass: csaxs_bec.devices.omny.galil.fupr_ophyd.FuprGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -5
- 365
@@ -186,7 +186,7 @@ fsamx:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: E
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -162
- 0
@@ -206,7 +206,7 @@ fsamy:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: F
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 2
- 3.8
@@ -226,7 +226,7 @@ ftracky:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: H
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 2.2
- 2.8
@@ -244,7 +244,7 @@ ftrackz:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: G
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 4.5
- 5.5
@@ -262,7 +262,7 @@ ftransx:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 50
@@ -280,7 +280,7 @@ ftransy:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -100
- 0
@@ -300,7 +300,7 @@ ftransz:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 145
@@ -318,7 +318,7 @@ ftray:
deviceClass: csaxs_bec.devices.omny.galil.fgalil_ophyd.FlomniGalilMotor
deviceConfig:
axis_Id: D
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -200
- 0
@@ -357,7 +357,7 @@ fosax:
deviceClass: csaxs_bec.devices.smaract.smaract_ophyd.SmaractMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 10.2
- 10.6
@@ -395,7 +395,7 @@ fosay:
deviceClass: csaxs_bec.devices.smaract.smaract_ophyd.SmaractMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -3.1
- -2.9
@@ -426,7 +426,7 @@ fosaz:
deviceClass: csaxs_bec.devices.smaract.smaract_ophyd.SmaractMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -6
- -4
@@ -469,7 +469,7 @@ rtx:
- -200
- 200
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -491,7 +491,7 @@ rty:
- -100
- 100
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -511,7 +511,7 @@ rtz:
- -100
- 100
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -525,7 +525,7 @@ rtz:
rt_positions:
deviceClass: csaxs_bec.devices.omny.rt.rt_flomni_ophyd.RtFlomniFlyer
deviceConfig:
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
readoutPriority: async
connectionTimeout: 20
@@ -621,13 +621,13 @@ flomni_temphum:
# The loop settings (FZP, trigger, tracker; flOMNI FeedbackLoop/loopsettings) stored with every scan: read from the
# web HMI on the loop machine at the start of each scan (baseline). Web HMI down: available = 0, the scan continues.
# The user commands flomni.rt_settings go through this device (RPC), so the token is needed only here.
# token: the web HMI API token (~/loop-data/webhmi/api_token on mpc2844; behind the beamline firewall, Mirko
# token: the web HMI API token (~/loop-data/webhmi/api_token on mpc-flomni; behind the beamline firewall, Mirko
# 2026-10-23). When empty, token_file (on the machine of the device server) is used.
flomni_loop_settings:
description: flOMNI real-time loop settings (web HMI loop settings, snapshot at scan start)
deviceClass: csaxs_bec.devices.omny.flomni_loop_settings.FlomniLoopSettings
deviceConfig:
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
token: "3CcGHMdz16G7zuC6iPHEoZPWvKDY1HkCZnTlP1msZbg"
token_file: ~/.flomni_webhmi_token
timeout: 2.0
@@ -39,7 +39,7 @@ feyex:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: D
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -30
- -1
@@ -66,7 +66,7 @@ feyey:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: E
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -1
- -10
@@ -90,7 +90,7 @@ fheater:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -15
- 0
@@ -115,7 +115,7 @@ foptx:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -17
- -12
@@ -145,7 +145,7 @@ fopty:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: F
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 4
@@ -171,7 +171,7 @@ foptz:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 27
@@ -195,7 +195,7 @@ fsamroy:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFuprGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -5
- 365
@@ -216,7 +216,7 @@ fsamx:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: E
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -162
- 0
@@ -240,7 +240,7 @@ fsamy:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: F
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 2
- 3.8
@@ -264,7 +264,7 @@ ftracky:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: H
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 2.2
- 2.8
@@ -286,7 +286,7 @@ ftrackz:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: G
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 4.5
- 5.5
@@ -308,7 +308,7 @@ ftransx:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 50
@@ -330,7 +330,7 @@ ftransy:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -100
- 0
@@ -356,7 +356,7 @@ ftransz:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 0
- 145
@@ -378,7 +378,7 @@ ftray:
deviceClass: csaxs_bec.devices.sim.sim_galil.SimFlomniGalilMotor
deviceConfig:
axis_Id: D
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -200
- 0
@@ -406,7 +406,7 @@ fosax:
deviceClass: csaxs_bec.devices.sim.sim_smaract.SimSmaractMotor
deviceConfig:
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- 10.2
- 10.6
@@ -431,7 +431,7 @@ fosay:
deviceClass: csaxs_bec.devices.sim.sim_smaract.SimSmaractMotor
deviceConfig:
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -3.1
- -2.9
@@ -455,7 +455,7 @@ fosaz:
deviceClass: csaxs_bec.devices.sim.sim_smaract.SimSmaractMotor
deviceConfig:
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
limits:
- -6
- -4
@@ -487,7 +487,7 @@ rtx:
- -200
- 200
axis_Id: A
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -510,7 +510,7 @@ rty:
- -100
- 100
axis_Id: B
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -531,7 +531,7 @@ rtz:
- -100
- 100
axis_Id: C
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
sign: 1
enabled: true
@@ -545,7 +545,7 @@ rtz:
rt_positions:
deviceClass: csaxs_bec.devices.sim.sim_rt_flomni.SimRtFlomniFlyer
deviceConfig:
host: mpc2844.psi.ch
host: mpc-flomni.psi.ch
port: 2222
# time per scan position; determines simulated scan duration
sim_point_dwell_s: 0.02
+3 -3
View File
@@ -596,7 +596,7 @@ class RtFlomniMotor(Device, PositionerBase):
read_attrs=None,
configuration_attrs=None,
parent=None,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=2222,
sign=1,
socket_cls=SocketIO,
@@ -807,7 +807,7 @@ class RtFlomniFlyer(Device):
read_attrs=None,
configuration_attrs=None,
parent=None,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=2222,
socket_cls=SocketIO,
device_manager=None,
@@ -988,7 +988,7 @@ class RtFlomniFlyer(Device):
if __name__ == "__main__":
rtcontroller = RtFlomniController(
socket_cls=SocketIO, socket_host="mpc2844.psi.ch", socket_port=2222, device_manager=None
socket_cls=SocketIO, socket_host="mpc-flomni.psi.ch", socket_port=2222, device_manager=None
)
rtcontroller.on()
rtcontroller.laser_tracker_on()
+1 -1
View File
@@ -1352,7 +1352,7 @@ class RtOMNYFlyer(Device):
if __name__ == "__main__":
rtcontroller = RtOMNYController(
socket_cls=SocketIO, socket_host="mpc2844.psi.ch", socket_port=2222, device_manager=None
socket_cls=SocketIO, socket_host="mpc-flomni.psi.ch", socket_port=2222, device_manager=None
)
rtcontroller.on()
rtcontroller.laser_tracker_on()
+2 -2
View File
@@ -5,7 +5,7 @@ and the baseline device FlomniLoopSettings (devices/omny/flomni_loop_settings.py
same way. Standard library only (runs in the IPython client and in the device server).
URL: explicit `url`, else env FLOMNI_WEBHMI_URL, else http://<host>:8080 with <host> = `host`, else the host of the
rtx device config, else mpc2844.psi.ch. With the default URL a request that cannot reach port 8080 is repeated on
rtx device config, else mpc-flomni.psi.ch. With the default URL a request that cannot reach port 8080 is repeated on
port 80 of the same host (nftables redirect 80 -> 8080 on the loop machine, the port the PSI gateway passes); that URL
is then kept. An explicit URL gets no fallback.
@@ -21,7 +21,7 @@ import urllib.request
DEFAULT_TOKEN_FILE = "~/.flomni_webhmi_token"
DEFAULT_PORT = 8080
DEFAULT_HOST = "mpc2844.psi.ch"
DEFAULT_HOST = "mpc-flomni.psi.ch"
class WebHmiError(Exception):
+2 -2
View File
@@ -708,7 +708,7 @@ class SimFlomniGalilMotor(FlomniGalilMotor):
prefix="",
*,
name,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=8081,
limits=None,
sign=1,
@@ -761,7 +761,7 @@ class SimFuprGalilMotor(FuprGalilMotor):
prefix="",
*,
name,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=8084,
limits=None,
sign=1,
+2 -2
View File
@@ -253,7 +253,7 @@ class SimRtFlomniMotor(RtFlomniMotor):
prefix="",
*,
name,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=2222,
limits=None,
sign=1,
@@ -290,7 +290,7 @@ class SimRtFlomniFlyer(RtFlomniFlyer):
prefix="",
*,
name,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=2222,
device_manager=None,
sim_point_dwell_s=None,
+1 -1
View File
@@ -204,7 +204,7 @@ class SimSmaractMotor(SmaractMotor):
prefix="",
*,
name,
host="mpc2844.psi.ch",
host="mpc-flomni.psi.ch",
port=3334,
limits=None,
sign=1,
+1 -1
View File
@@ -77,7 +77,7 @@ def main(): # noqa: C901
from csaxs_bec.devices.sim.sim_smaract import SimSmaractMotor
dm = FakeDeviceManager()
host = "mpc2844.psi.ch"
host = "mpc-flomni.psi.ch"
# --- instantiate the simulated endstation -----------------------------------
fsamx = dm.add(