TS-PSMB-4088 MQTT接口文档

1. 概述和目标

本文档详细说明产品TS-PSMB-4088的MQTT协议接口,帮助开发者通过MQTT服务器获取和解析设备信息。

2. 协议版本

当前使用的协议版本是3.0.x,遵循x.x.x版本格式。其中,x.x.x 版本格式表示主版本号、次版本号和修订号。

版本 更新说明 负责人
3.0.3 - 修复了内存泄漏导致的设备重启
- 优化了算法速度
- 提高了数据上报的稳定性
-
LanceChan
3.0.2 - 增大了TCP缓冲区,加快了OTA传输速度
-
LanceChan
3.0.0 - 支持新增配置项
- 优化数据传输结构
- 支持自动校准功能
-
LanceChan
2.3.x 旧版本功能 LanceChan

3. 通信架构

设备端通过SSL与MQTT服务器建立安全连接,服务器通过MQTT订阅获取设备信息。

4. 连接参数

mqtt、用户名、密码通过配置项接口设置。 mqtts需要通过TsHelper工具生成带证书的固件,通过OTA方式升级。

5. 消息格式

5.1 设备连接信息

设备连接

类型:设备发布

主题: /dev/{devId}/online

{
    "devName": "TS-PSMB-4088",
    "devId": "TSKJA1B9A954",
    "devVersion": "3.0.0",
    "online": true,
    "updateTime": 1665285245,
    "updateTimeStr":"2024-08-01 12:00:00"
}

设备掉线

类型:遗嘱信息

主题: /dev/{devId}/online

{
    "devId": "TSKJA1B9A954",
    "online": false
}
字段名 类型 取值 解释
devName 字符串 "TS-PSMB-4088" 设备型号
devId 字符串 "TSKJxxxx" 设备ID
devVersion 字符串 "3.0.0" 设备软件版本
online bool true/false 设备在线状态
updateTime 整数 Unix 时间戳 数据更新时间
updateTimeStr 字符串 "2024-08-01 12:00:00" 数据更新时间

5.2 配置设备

注意发送和接收的主题不一样。

向设备发数据

类型:服务器发布/设备订阅

主题: /dev/{devId}/config

支持的配置命令:

  • rconfig:读取配置
  • wconfig:写入配置
  • reboot:重启设备
  • resetr0:矫正指令
  • nettest:网络测试
  • servertest:服务器测试
  • log:日志指令

配置项与BluFi配置接口保持一致,详见配置项文档

设备回应

类型:设备发布

主题: /dev/{devId}/config/response

5.3 设备状态上报

状态数据包

类型: 设备发布

主题: /dev/{devId}/state

{
  "bodymove": false,
  "bodymoveStrength": 0,
  "breathRate": 0,
  "heartRate": 0,
  "empty": true,
  "leaveTime": 0,
  "emptyWarn": true,
  "heartRateLow": false,
  "heartRateHigh": false,
  "breatheRateLow": false,
  "breatheRateHigh": false,
  "breatheWarn": false,
  "devId": "TSKJ000000",
  "updateTime": 1729781532,
  "updateTimeStr": "2024-10-24 22:52:12"
}

状态数据包字段表

字段名 类型 取值 解释
bodymove bool true/false 体动标志
bodymoveStrength 浮点 0.0-1.0 体动强度
breathRate 整数 0,5-35 呼吸率数值
heartRate 整数 0,45-135 心率数值
empty bool true/false 离床标志
leaveTime 整数 Unix 时间戳 离床时间记录
emptyWarn bool true/false 离床超时警告
heartRateLow bool true/false 心率过低标志
heartRateHigh bool true/false 心率过高标志
breatheRateLow bool true/false 呼吸率过低标志
breatheRateHigh bool true/false 呼吸率过高标志
breatheWarn bool true/false 呼吸弱标志
devId 字符串 "TSKJxxxx" 设备ID
updateTime 整数 Unix 时间戳 数据更新时间
updateTimeStr 字符串 "2024-10-24 22:52:12" 数据更新时间

上报逻辑:数值变化时立即上报;无变化时按maxupdatetime间隔上报。

字段详细说明

bodymove

体动检测标志。当检测到用户有体动时为true,无体动时为false。体动检测的灵敏度可通过bodymove-se配置项调节。

bodymoveStrength

体动强度值,范围0.0-1.0。数值越大表示体动越剧烈。该数值主要用于判断用户活动状态。

breathRate

呼吸率数值,单位:次/分钟。正常范围5-35次/分钟。当检测不到呼吸时为0。可通过maxbreathrate和minbreathrate设置异常阈值。

heartRate

心率数值,单位:次/分钟。正常范围45-135次/分钟。当检测不到心率时为0。可通过maxheartrate和minheartrate设置异常阈值。

empty

离床状态标志。true表示检测不到用户,false表示检测到用户在床。检测灵敏度可通过humendetect配置项调节。

leaveTime

记录用户离床的时间戳。记录empty变为true时的那一刻,可用于计算离床时长。

emptyWarn

离床超时警告。当离床时间超过maxleavetime设置值时为true,表示用户可能异常离床。

这个不会长期为true,当产品静置一段时间后,自动校准,会取消这个标志

heartRateLow/heartRateHigh

心率异常标志。当心率低于minheartrate时heartRateLow为true;当心率高于maxheartrate时heartRateHigh为true。

breatheRateLow/breatheRateHigh

呼吸率异常标志。当呼吸率低于minbreathrate时breatheRateLow为true;当呼吸率高于maxbreathrate时breatheRateHigh为true。

breatheWarn

呼吸弱预警标志。当检测到用户呼吸变弱时为true。检测灵敏度可通过breathewarn-se配置项调节。该功能主要用于提前预警,不代表一定存在问题。

devId

设备唯一标识符,以"TSKJ"开头的字符串。可通过devIdPrefix配置项修改前缀。

updateTime/updateTimeStr

数据更新时间,分别以Unix时间戳和可读字符串格式表示。用于判断数据的时效性。