MQTT通信设计

机器狗MQTT通信设计说明

客户端基本信息

Client_id:robot_go2_{device_id}
其中{device_id} 是机器狗的唯一序列号(SN),以支持多个机器狗。例如,robot_go2_001。
Clean Start:False
Session Expiry Interval:7200
根主题:robot_go2/{device_id}/

上行状态链路:机器狗发布,云平台订阅

设备上下线

topic: robot_go2/{device_id}/status/connection

注意:该topic为设备客户端会话的遗嘱消息话题,遗嘱消息延迟5秒发布,以防平台无法感知到机器狗长时间异常掉线。

设备上线

机器狗启动后,客户端将向topic发送如下消息体:
QoS:1
Retain:True,以防平台重启后无法获取设备的连接状态

{"status": "online","timestamp": 1769137736.8978987,"ip": "192.168.1.101"
}

必填字段解释:

column name type constraint description
status 状态 string 机器狗设备连接状态,上线时仅为online
timestamp 上线时间 int 时间戳
ip 设备IP string 机器狗设备IP,方便调试时区分

设备下线

机器狗主动离线或异常掉线时,客户端将向topic发送如下消息体:
QoS:1
Retain:True,以防平台重启后无法获取设备的连接状态

{"status": "offline","timestamp": 1769137736.8978987,"reason": "unexpected_disconnect"
}
column name type constraint description
status 状态 string 机器狗设备连接状态,离线时仅为offline
timestamp 离线时间 int 时间戳
reason 离线原因 string 正常离线为initiative_disconnect,异常掉线时为unexpected_disconnect

注意:机器狗主动断开时,客户端将发布消息。而异常掉线时,将由Broker延迟发布遗嘱消息,此时消息中的时间戳为设置遗嘱的时间,不是设备掉线的时间,请勿将遗嘱消息中的时间直接作为离线时间,请使用服务器时间

设备状态上报

机器狗上线后以固定频率向话题发布状态消息。
topic: robot_go2/{device_id}/status/state
QoS:0
Retain:False

{"stamp": 1769412570, "mode": "LieDown", "move_speed": 0.0,"yaw_speed": 0.0,"battery_level": 71,"cpu_temperature": 36,"avg_motor_temperature": 25.4
}

必填字段解释:

column name type constraint description
timestamp 时间戳 int 当前状态的时间
mode 机器狗姿态 string 机器狗姿态,目前仅有站立和趴下两种,站立时为Stand,可行走;趴下时为LieDown,不可行走
move_speed 前后速度 float 0-3.8 机器狗前后移动时的线速度(m/s)
yaw_speed 转动速度 float 0~4 机器狗旋转移动时的角速度(rad/s)
cpu_temperature 主板温度 float -20 - 100 机器狗主板温度℃
avg_motor_temperature 电机平均温度 float -100 - 150℃ 机器狗12个关节电机的平均温度