跳转至

说明

Command Handler — 用 MQTT 远程指挥采集

通过 MQTT 消息从云端/手机发送命令,控制节点启动、停止和查询采集任务。

算法直觉

命令驱动架构

传感器节点本身不主动决定何时采集——它等待 MQTT 服务器发来命令。这样:

  • 云端控制:服务器统一指挥所有节点
  • 灵活调度:支持"5 分钟后开始采集 30 秒"这样的延时任务
  • 低功耗:没事做的时候节点可以休眠

命令格式

所有命令通过 MQTT_SUBSCRIBE_TOPIC/mqtt/server)接收,响应发到 MQTT_PUBLISH_TOPIC/mqtt/node)。

基本格式SENSE,<MODE>,<PARAMS>

完整命令列表

命令 含义 示例
SENSE,ONLINE,F=f 启动在线采集,频率 f Hz SENSE,ONLINE,F=20
SENSE,ONLINE,STOP 停止在线采集
SENSE,ONLINE,STATUS 查询在线状态
SENSE,OFFLINE,F=f,D=d 启动离线采集 SENSE,OFFLINE,F=100,D=30
SENSE,OFFLINE,F=f,D=d,DL=delay 延时启动 SENSE,OFFLINE,F=100,D=10,DL=300
SENSE,OFFLINE,F=f,D=d,TIME=YYMMDDHHMMSS 定时启动 SENSE,OFFLINE,F=100,D=10,TIME=251231120000
SENSE,OFFLINE,STOP 停止离线采集
SENSE,RT,START,F=f 启动实时处理 SENSE,RT,START,F=50
SENSE,RT,STOP 停止实时处理
SENSE,RT,DETECT=ON 启用阈值检测
SENSE,RT,DETECT=OFF 禁用阈值检测
SENSE,RT,STATUS 查询 RT 状态

API 参考

// 初始化命令处理器(MQTT 初始化后调用)
esp_err_t sensing_command_init(void);

// 处理接收到的 MQTT 命令
esp_err_t sensing_command_process(const char *command, int command_len);

注意事项

响应格式

命令处理结果通过 MQTT 响应,格式为 SENSE,<MODE>,<STATUS>,<INFO>。例如:SENSE,ONLINE,OK,F=20

命令大小写敏感

命令字符串区分大小写。SENSE,online 不会被识别。

延时启动的实现

延时启动通过 esp_timer 一次性定时器实现。延时期间可被 STOP 命令取消。