Web 远程控制平台
quatm.web 是 Quatm 核心包的内置子包(quatm/web/),随 pip install quatm
一起安装,无需额外组件。它把桌面 GUI 的全部核心能力搬进浏览器,并在桌面端
与手机移动端分别做了适配。
平台定位
Quatm 桌面 GUI 功能强大,但实验室外、路途中或手机上无法使用。quatm.web
把实验控制延伸到任何有浏览器的设备:
- 桌面电脑:完整的实验操作台,布局与桌面 GUI 对齐;
- 手机/平板:专为触屏优化的紧凑界面,随时查看实验状态、调整参数、启停任务;
- 零安装:客户端只需浏览器,无需安装任何软件或依赖。
Web 服务由实验 PC 上的 webhub 提供,通过 ZeroMQ 直连实验的 Hub 网络,与桌面
GUI 共享同一套状态:实验队列、扫描定义、任务暂存、逻辑循环、属性树全部同源。
一键启动
Web 服务已封装为进程管理器的一个 Servers 条目,开箱即用:
"Servers": {
"Web Hub": {
"active": false,
"script": "../quatm/servers/webhub.py",
"host": "0.0.0.0",
"port": 8000
}
}
把 active 改为 true(或在进程管理器中点击 Web Hub),浏览器打开
http://<实验PC>:8000 即可。也可命令行启动:
python -m quatm.web --project <用户项目> --port 8000
功能总览
Web 平台共九个功能页,逐一复刻桌面 GUI 的核心窗口:
| 页面 | 对应桌面 GUI | 能力 |
|---|---|---|
| 监控 | Datastream Monitor / Image Monitor | 实时曲线(通道/序列/数组)、消息日志、相机图像 |
| 实验 | Browser + Experiment Window + ExperimentQ | 实验文件列表、参数表单、运行/停止;与桌面实验队列双向同步(桌面 Browser 在线时任务交由其队列执行器运行,状态实时回传) |
| 仪表盘 | Dashboard | 按设备分组渲染参数控件,带单位/范围/步进元数据,直接写回属性库 |
| 数据 | h5storage | 实时运行追踪(每个 run 完成即累积、X/Y 任选字段绘制实时扫描图)+ HDF5 归档浏览、8 种拟合模型、CSV 导出 |
| 属性 | Property Editor | 完整属性树浏览与编辑(与桌面 GUI 共享同一属性系统) |
| 分析 | Analysis Manager | 启动/停止分析脚本,与桌面 GUI 的勾选状态互通 |
| 时间线 | Experiment Timeline | 解析 AdWin 序列:TTL 位掩码拆解、device_db 反向映射、多通道阶梯图 |
| 通知 | Notification Editor | 推送通知配置(Webhook),实验完成/异常自动推送 |
| 进程 | Process Manager | 远程查看与启停实验 PC 上的服务/驱动/GUI 进程 |
实验页进一步对齐桌面 Browser 的顶部 dock,提供 队列管理 / 任务暂存 / 逻辑循环 三个 标签页:
- 实验队列:与桌面 Browser 的队列执行器双向同步(Web 提交 → 桌面队列执行, 状态实时回传;桌面排队任务在 Web 同样可见);
- 实验暂存:与桌面 GUI 共用同一份
prepfile.json,任务暂存、推送、排序; - 实验逻辑:与桌面 GUI 共用同一份
loopfile.json,任务循环 + 数据条件分支, 支持最大次数/最大连续次数终止。
与桌面 GUI 同源的实验操作
Web 实验窗口完整复刻桌面实验窗口的操作逻辑:
- 参数保存/加载:与桌面 GUI 同目录、同格式(
experiment_params/<实验>/<日期>/),桌面保存的参数集 Web 可直接加载; - 参数扫描:Scan 下拉与桌面
scanCombo同源(属性树),SequenceEditor 式 编辑器在浏览器中直接创建/编辑扫描(参数、起止、步数、随机化、Snake/nD 模式); - 实验窗口按钮行:提交 / Run Next / Prep / Save / Load,与桌面布局一致。
移动端特调
在手机/平板上打开同一地址,界面自动切换为触屏优化布局:
- 导航横向滚动,所有页面一屏可达;
- 布局自动堆叠为单列,图表高度适配小屏;
- 按钮与输入控件放大到触控友好尺寸(≥38px);
- 参数网格、进程列表、表格等自动重排。
远程访问
实验 PC 与远程客户端共用同一套 configuration/configfile/configfile.json
约定。生成服务器侧(Hub 绑定 tcp://*:56xx)与客户端侧(端点指向实验 PC)配置:
# 实验 PC:Hub 开放到局域网
python -m quatm.web endpoints --project <项目> --server --out server_config.json
# 远程机器:端点指向实验 PC
python -m quatm.web endpoints --project <项目> --remote-host 10.5.78.161 --out client_config.json
也可通过 SSH 隧道安全访问(Hub 本身无认证,建议仅在内网/VPN 使用):
ssh -L 5601:localhost:5601 -L 8000:localhost:8000 user@experiment-pc
架构
浏览器(桌面/手机)──HTTP/WebSocket──► webhub(quatm.servers.webhub)
│ ZeroMQ 直连实验 Hub 网络
┌─────────────────────┼──────────────────────┐
▼ ▼ ▼
Data/Image Hub Property Hub Message Hub
│ │ │
实验数据实时流 与桌面 GUI 共享 实验日志与
(含实时追踪) 的属性系统 异常通知
Web 服务与桌面 GUI 使用完全相同的 Hub 端点与消息协议,因此两者可以同时在线、 协同操作:桌面提交的任务在手机端可见,手机端修改的参数在桌面 GUI 实时同步。