Skip to content

核心业务流程

1. 设备上行:数据上报 (Telemetry)

这是设备主动向平台汇报状态的流程。

时序图

详细步骤

  1. 采集:设备(如四路继电器)检测到开关状态变化或周期性读取传感器数据。
  2. 发布:设备将数据封装为 JSON 格式,发布到 Topic sys/{product_id}/{device_id}/thing/event/property/post
  3. 接收后端服务作为 MQTT 客户端,通过 TCP 长连接实时收到订阅的消息。
  4. 处理
    • 后端服务校验数据格式与设备身份。
    • 更新 Redis 中的设备影子 (Shadow) 状态。
    • 将时序数据写入 InfluxDB 存档。
  5. 推送:如果用户正在查看小程序,后端通过 WebSocket/SSE 将最新状态实时推送给前端。

2. 设备上下线感知 (Webhook)

这是平台维护设备在线状态的关键流程。

时序图

详细步骤

  1. 事件触发:当设备发起连接或意外断开时,EMQX 内部触发系统事件。
  2. 回调:EMQX 根据配置的 Webhook 规则,向后端 HTTP 接口发送 JSON 数据(包含 ClientID、断开原因等)。
  3. 状态同步:后端收到请求后,解析 ClientID 获取设备 ID,并在 Redis 中更新该设备的在线状态标记。

在线状态以 Webhook 事件为主,并可结合设备心跳或 TTL 机制进行兜底判断。

3. 应用下行:指令控制 (Command)

这是用户通过手机控制设备的流程。

时序图

详细步骤

  1. 操作:用户在小程序点击“开启继电器 1”。
  2. 请求:小程序发送 HTTPS 请求 POST /device/control 携带目标设备 ID 和指令参数。
  3. 鉴权:后端服务验证用户是否有权限控制该设备。
  4. 下发
    • 后端生成控制指令 Payload。
    • 后端通过 MQTT 发布到 Topic sys/{product_id}/{device_id}/thing/service/property/set
  5. 执行:设备收到 MQTT 消息,解析指令,驱动继电器动作。
  6. 反馈
    • 设备动作完成后,发布响应消息到 sys/.../reply 确认执行结果。
    • 后端收到确认后,更新数据库状态,并返回操作成功给小程序(或通过异步通知)。

3. 设备配网与绑定流程 (待补充)

待后续详细设计配网方式(蓝牙配网 / AP 配网)后补充。