快速入门
本页按“准备设备 → 启动接收端 → 配置设备连接 → 验证数据 → 调用 RPC → 接收告警抓拍”的顺序完成一次接入。
设备和接收端连接的是同一个系统集成商 MQTT Broker。接收端只负责订阅和调用;Broker 地址、端口及认证信息由系统集成商提供。
1. 准备设备和运行环境
在 App 中完成设备的标靶配置和初始化,记下设备 ID。验证位移前,设备必须处于测量状态并能看到有效标靶。
在能够访问 Broker 的电脑或服务器上安装 Git、Docker 和 Docker Compose v2。以下命令在 Bash 终端执行。
2. 配置并启动接收程序
先在接收端所在的电脑或服务器上下载示例,并填写系统集成商提供的 Broker 域名或 IP、端口,以及设备 ID:
git clone https://github.com/inteagle-vision/inteagle-vdm-mqtt-examples.git
cd inteagle-vdm-mqtt-examples
export VDM_DEVICE_ID=YOUR_DEVICE_ID
export MQTT_HOST=YOUR_BROKER_HOST
export MQTT_PORT=1883 # 替换为 Broker 的实际端口
是否需要认证及认证信息由系统集成商指定。需要用户名、密码时,填写分配给接收程序的账号:
export MQTT_USERNAME=YOUR_USERNAME
export MQTT_PASSWORD=YOUR_PASSWORD
选择数据格式并启动:
export VDM_PAYLOAD_FORMAT=protobuf
./run_demo.sh protobuf
export VDM_PAYLOAD_FORMAT=json
./run_demo.sh json
脚本在后台启动接收程序并连接上述 Broker。保持这些服务运行,再配置设备端连接;以下命令均在仓库根目录执行。
3. 让设备连接 Broker
在 App 中添加系统集成商 MQTT 连接:
| 配置 | 填写内容 |
|---|---|
| Broker 地址 | 系统集成商提供的域名或 IP,公网、内网均可 |
| 端口 | 系统集成商指定的 MQTT 端口 |
| 用户名、密码 | 按系统集成商为设备分配的认证信息填写;是否需要认证以接入要求为准 |
| Payload | 第 2 步选择的 Protobuf 或 JSON |
保存并启用连接。设备连接成功后,向 vdm/{deviceId}/telemetry 发布位移,接收程序订阅同一设备的主题。设备端 Payload 必须与接收程序选择的格式一致。
4. 确认收到位移数据
查看接收程序的输出:
docker compose logs -f python-data go-data java-data javascript-data
READY 只表示订阅已建立,不代表设备已经上报数据。看到包含标靶 ID 和非空位移数组的 telemetry 行,才表示位移链路已打通。例如:
{
"schemaVersion": 1,
"displacement": {
"sampleFrequencyHz": 2,
"firstSampleTimestampMs": "1734567890000",
"targets": [{"targetId": "T01", "dx": [0.01, 0.02], "dy": [0.0, 0.01]}]
}
}
{
"disp": {
"t": 1734567890,
"f": 2,
"d": {"T01": {"dx": [0.01, 0.02], "dy": [0.0, 0.01]}}
}
}
T01 是示例标靶 ID,X / Y 位移单位为 mm;2 Hz 表示数组中相邻样本相隔 0.5 秒。Protobuf 的首个样本时间使用 Unix 毫秒,JSON 使用 Unix 秒。
确认接收程序收到包含标靶 ID 和位移数组的消息。telemetry 还可能包含环境和设备状态,完整字段见 遥测数据。按 Ctrl+C 只退出日志查看,后台接收程序仍会运行。
5. 查询设备属性
位移数据正常后,任选一种语言发送一次 RPC(远程调用),查询设备 ID、型号、固件版本和测量状态:
| 语言 | 在当前终端执行 |
|---|---|
| Java | docker compose run --rm --no-deps java-data --query-attributes |
| Go | docker compose run --rm --no-deps go-data --query-attributes |
| Python | docker compose run --rm --no-deps python-data --query-attributes |
| JavaScript | docker compose run --rm --no-deps javascript-data --query-attributes |
看到 RESPONSE 且 code=0,说明请求已到达设备并收到成功响应。程序随后继续接收数据;按 Ctrl+C 退出本次运行。
请求发送到 vdm/{deviceId}/rpc/req,响应来自 vdm/{deviceId}/rpc/resp。后续可调用标靶管理接口和测量控制接口,完整格式见 RPC 格式。
6. 接入告警与抓拍
位移和 RPC 接通后,再配置告警。按 告警配置示例查询能力、创建规则,并订阅 vdm/{deviceId}/3A。等级和参数见 告警参考。
需要抓拍时,为规则配置 SNAPSHOT 动作。仅配置一个已启用的系统集成商 MQTT 连接,且未另行指定或关闭抓拍上传时,设备默认向该连接发送;多个连接时需指定接收目标。
启动抓拍接收程序:
./run_demo.sh "$VDM_PAYLOAD_FORMAT" --evidence
docker compose logs -f python-evidence go-evidence java-evidence javascript-evidence
各接收程序独立保存图像包,校验通过后调用 ackEvidencePackage。VERIFIED 表示完整包校验通过,ACKED 表示设备已接受确认。完整代码、保存位置与补传方法见 抓拍接入说明。
联调排查
| 现象 | 检查项 |
|---|---|
| 设备无法连接 Broker | 设备端填写的 Broker 域名或 IP、端口、认证信息及网络连通性 |
| 程序就绪但没有消息 | App 中连接是否在线、设备 ID 和 Payload 格式是否正确 |
| 有环境数据但没有位移 | 设备是否正在测量,标靶是否已初始化并有有效观测 |
| 消息解析失败 | 设备与接收程序所选格式是否一致 |
| RPC 超时 | 设备是否在线,是否允许请求 Topic 发布和响应 Topic 订阅 |
测试结束后执行 docker compose --profile evidence down 停止服务。抓拍文件保留在 Docker 数据卷中。
在本机运行单一语言时,参见 GitHub SDK 与运行步骤。
需要自行搭建联调 Broker 时,参见 NanoMQ 联调环境。