命令与期望状态

命令调用设备已经定义的功能,期望状态表达希望设备应用的属性。操作者需要当前设备控制权限,设备客户端需支持对应协议和模型。

MQTT 命令流程

设备订阅自身下行后,从下面的 Topic 接收命令:

tc/v1/{projectKey}/{deviceKey}/down/command/{commandId}

正文包含 targetDeviceKey、commandKey、input 与 attempt。直连设备只处理目标标识等于自身的命令。以 commandId 持久去重,不能以 attempt 作为新的业务键。

回复发往:

tc/v1/{projectKey}/{deviceKey}/up/command/{commandId}/reply
{
  "messageId": "01993c89-8a10-7b20-91aa-aabbccddeeff",
  "occurredAt": "2026-10-08T08:30:01Z",
  "status": "SUCCESS",
  "output": {"sequence": 1}
}

新回复使用真实时间及有效 UUIDv7。状态允许 ACK、SUCCESS、FAILED;ACK 不代表完成。输出匹配命令模型。重复收到同命令时返回已保存的原结果,不重复执行硬件副作用。

属性设置

MQTT 属性下发使用 /down/property/set,载荷含 requestId 与 properties。设备按 requestId 去重并在 /up/property/set/reply 回复。Desired 与 Reported 分开保存;回复和新的上报才能说明实际结果。其他协议不能直接假设支持此动作。

查看结果

控制台命令列表或执行记录提供受理、尝试、回复与失败事实。HTTP 或 CoAP 设备主动领取,平台受理时投递尝试可能仍为零。离线、超时和拒绝需按实际终态处理。

网络失败后先查询原操作或原命令,不换业务键立即重发;平台幂等与设备执行去重两层都需要实现。教学流程见控制回执实战。