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时间戳和可读字符串格式表示。用于判断数据的时效性。