GrabBag/App/ParkingSpaceGuide/Doc/停机引导远程控制协议.md

4.9 KiB
Raw Blame History

停机引导远程控制协议

版本信息

项目 内容
文档版本 V1.1
更新日期 2026-09-09
适用范围 ParkingSpaceGuideView 远程发现、控制和状态订阅
说明 控制端协议。引导结果字段见《停机引导对接协议》。

远程协议名称为 ParkingSpaceGuideRemote,版本 1.1。

1. 协议概述

ParkingSpaceGuideApp 提供远程服务。ParkingSpaceGuideView 通过 UDP 发现服务端,通过 ZeroMQ REQ/REP 发送控制命令,通过 ZeroMQ PUB/SUB 接收实时引导结果。

状态数据与《停机引导对接协议》中的 ParkingSpaceGuideResult 相同。

默认参数:

参数 默认值 传输方式 用途
discoveryPort 5555 UDP 控制端广播搜索,服务端单播响应。
controlPort 15655 ZeroMQ REQ/REP 选择机型、开始/停止、维护模式、轮挡时间、历史回放。
publishPort 15656 ZeroMQ PUB/SUB 发布完整引导状态。
topic parking_guide ZeroMQ topic 状态订阅主题。

2. UDP 发现

请求:

{"cmd":"discover","service":"ParkingSpaceGuide","protocol":"ParkingSpaceGuideRemote"}

响应:

{
  "ok": true,
  "code": 0,
  "cmd": "discover",
  "protocol": "ParkingSpaceGuideRemote",
  "version": "1.1",
  "service": "ParkingSpaceGuide",
  "deviceName": "ParkingSpaceGuideApp",
  "deviceId": "设备唯一标识",
  "controlPort": 15655,
  "publishPort": 15656,
  "topic": "parking_guide",
  "activated": false,
  "workMode": "normal",
  "timestamp": 1783339200000
}

须校验 ok、cmd、protocol、service,并确认端口和主题有效。

3. ZeroMQ 控制

请求和应答均为单个紧凑 JSON。请求包含 cmd、protocol(固定 ParkingSpaceGuideRemote)。

cmd 请求字段 说明
select_model modelType 选择机型,须为当前配置中的可选机型。此处 modelType 为选择值,不是检测结果。
start modelType,可空 开始引导。空表示不选机型、不校验。
stop 无 停止引导。
set_maintenance enabled true 进入维护模式,false 退出。
chock_on / chock_off 无 记录上/下轮挡时间。
get_panel_config 无 获取机型表和当前运行状态。
list_sessions limit 列出历史会话,默认 50 条。
get_session_samples sessionUuid 获取会话引导明细,按时间排序,用于还原该次引导过程。
get_status 无 获取当前完整 ParkingSpaceGuideResult。
get_info 无 获取服务信息,字段同发现响应。
ping 无 心跳。

成功:ok=true,code=0。失败:

{
  "ok": false,
  "code": -3,
  "cmd": "start",
  "message": "服务端拒绝启动停机引导,请检查设备或安全状态",
  "protocol": "ParkingSpaceGuideRemote",
  "version": "1.1"
}
code 含义
0 成功
-1 请求不是有效 JSON
-2 参数错误
-3 服务端拒绝执行
-4 不支持的命令
-5 协议名称不匹配

开始(modelType 须为当前配置中的机型名称,下面 C919 仅为示例):

{"cmd":"start","protocol":"ParkingSpaceGuideRemote","modelType":"C919"}

不选机型开始:

{"cmd":"start","protocol":"ParkingSpaceGuideRemote","modelType":""}

开始成功时返回 activated=true、workMode。停止成功时 activated=false。

get_status 的 status 为《停机引导对接协议》定义的完整结果对象。

get_panel_config 的 panel:models 为当前配置的可选机型,不是协议写死的清单。C919 仅为示例。

{
  "models": [
    { "name": "A320", "verifiable": true },
    { "name": "B737", "verifiable": true },
    { "name": "C919", "verifiable": false }
  ],
  "workMode": "normal",
  "activated": false
}

verifiable=true 表示选择名称包含 A320 或 B737,按检测家族匹配,例如 A320-200 对应检测 A320。其余配置机型为 false。

list_sessions 返回 sessions 数组。字段与《停机引导对接协议》第 7 节对齐,另含 sessionUuid、startTime、endTime。sessionUuid 仅用于回放关联,不是结果协议字段。startTime、endTime 及轮挡时间为设备本地 yyyy-MM-dd HH:mm:ss;未记录或进行中的时间为空。

get_session_samples 返回 samples 数组,按 timestamp 升序。元素为当时完整 ParkingSpaceGuideResult,字段与《停机引导对接协议》第 7 节一致,不含点云和图像。

4. ZeroMQ 状态订阅

发布为双帧消息:第一帧为主题 parking_guide,第二帧为完整 ParkingSpaceGuideResult JSON。客户端须按完整主题匹配。