通讯协议-B200W-MQTT协议[内部].md
78 KB
table {
width: 100%; /* 或者具体的像素值,例如:1200px */
table-layout: fixed; /* 保持列宽固定 */
}
th, td {
word-wrap: break-word; /* 允许文本换行 */
}
.delline{
text-decoration:line-through;
}
.yellowFill{
background-color: yellow;
}
SunVote B200W_MQTT 接口协议
[TOC]
功能说明
主题说明
\${baseSN}为指定的基站的SN编码,不能为空,接收基站反馈数据需要订阅对应基站SN的接收主题。
发布的主题
应用程序发布的主题,基站订阅 /client/\${baseSN}/send /client/multiBase/send
内部应用发布的主题,基站订阅 /manage/\${baseSN}/send
订阅的主题
应用程序订阅的主题,基站发布 /basestation/\${baseSN}/receive /basestation/multiBase/receive
内部应用订阅的主题,基站发布 /manage/\${baseSN}/receive
指令说明
指令功能标识 | 说明 | 约束 |
---|---|---|
get | 待机状态下获取参数属性状态及数据 | 待机状态 |
set | 待机状态下设置参数属性状态及数据 | 待机状态 |
start | 运行一个单进程业务实例(函数) | 待机状态 |
stop | 停止一个单进程业务实例(函数) | 待机状态 |
rtXXX | 在线状态下可实时执行方法及函数 |
事件说明
事件标识 | 说明 | 约束 |
---|---|---|
sEvtXXX | 系统事件 | 自动返回 |
fEvtXXX | 指令事件 | 调用对应指令后返回 |
数据格式约定
- 数据格式统一为Json格式,MQTT发送接收消息编码统一为UTF-8
- Json通用格式如下:
{
"fun":"xxx",
"dataTag":"xxx",
"data":{
//内容
}
}
注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式
参数 | 说明 | 约束 |
---|---|---|
fun | 指令或事件名称 | |
dataTag | 数据标签,用于对应收发数据 | 长度不超过4,可为0-9a-zA-Z的组合 |
data | 数据内容 | 对象或者数组,可为空 |
注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式
功能速查一览表
基站管理
键盘管理
功能归类 | 功能 | API指令 | 指令事件 |
---|---|---|---|
交互设置 - 用户内置状态语 | 设置用户内置状态语 | setKpUserStbMsg | fEvtKpUserStbMsg |
交互设置 - 用户实时提示信息 | 实时设置提示反馈信息 | rtSetKpUserPrompt | sEvtStateCode fEvtSetKpUserPrompt |
在线状态获取 | 开启扫描在线键盘 | startGetKpOnline | sEvtStateCode fEvtKpOnlineMsg |
停止扫描在线键盘 | stopGetKpOnline | sEvtStateCode | |
维护功能 - 遥控功能 | 遥控键盘关机 | remoteKpPowerOff | sEvtStateCode |
遥控键盘休眠 | remoteKpSleep | sEvtStateCode | |
维护功能 - 键盘升级 | 启动键盘无线升级(内) | startKpFWUpdate | sEvtStateCode fEvtKpFWUpdateState fEvtKpUpdateProgress sEvtBsKpOnlineMsg |
停止键盘无线升级(内) | stopKpFWUpdate | sEvtStateCode fEvtKpFWUpdateState |
绑定
功能归类 | 功能 | API指令 | 指令事件 |
---|---|---|---|
无线绑定 | 设置绑定信息到键盘 | rtSetKpBindingInfo | sEvtStateCode fEvtKpBindingInfo |
清除键盘绑定信息 | clearKpBindingInfo | sEvtStateCode fEvtClearKpBindingInfo |
签到
功能归类 | 功能 | API指令 | 指令事件 |
---|---|---|---|
随时签到 | 启动随时签到 | rtStartKpSignIn | sEvtStateCode fEvtKpSignIn |
停止随时签到 | rtStopKpSignIn | sEvtStateCode | |
实时PIN签到授权 | rtSetKpLoginAllowed | sEvtStateCode fEvtKpLoginAllowed |
按键反馈
功能归类 | 功能 | API指令 | 指令事件 |
---|---|---|---|
判断题 | 启动判断题答题 | startQATrueFalse | sEvtStateCode fEvtQATrueFalse |
停止判断题答题 | stopQATrueFalse | sEvtStateCode | |
选择题 | 启动选择题答题 | startQAChoice | sEvtStateCode fEvtQAChoice |
停止选择题答题 | stopQAChoice | sEvtStateCode | |
数字题 | 启动数字题答题 | startQANum | sEvtStateCode fEvtQANum |
停止数字题答题 | stopQANum | sEvtStateCode | |
抢答题 | 启动抢答题答题 | startQAQuicker | sEvtStateCode fEvtQAQuicker |
停止抢答题答题 | stopQAQuicker | sEvtStateCode |
在线测验
功能归类 | 功能 | API指令 | 指令事件 |
---|---|---|---|
标准测验 | 启动标准测验 | startKpExam | sEvtStateCode fEvtKpExam fEvtFinalSubmit |
停止标准测验 | stopKpExam | sEvtStateCode | |
刷新作答数据 | rtGetKpExamData | fEvtKpExam | |
允许键盘提交后退回修改 | rtAllowEdited | sEvtStateCode fEvtFinalSubmit |
公共事件
sEvtBsConnectState
- 主题: /basestation/\${baseSN}/receive
- 功能描述:基站连接成功时返回基站型号和基站SN,基站从已连接状态断开返回连接断开
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件类型 |
dataTag | string | 否 | 数据包标识,不需要时可传空字符串 | |
data | object | - | 是 | 传送参数的对象 |
+baseModel | int | 否 | 基站的型号码 | |
+modelName | string | 否 | 基站的型号名称 | |
+state | int | 是 | 基站的连接状态 1-已连接 2-连接断开 |
|
+version | string | 否 | 基站固件版本 |
- 示例代码
Json //连接成功 { "fun":"sEvtBsConnectState", "dataTag":"1", "data":{ "state":1, "baseModel":218, "modelName":"B200", "version":"1.0.3" } } //连接断开 { "fun":"sEvtBsConnectState", "dataTag":"1", "data":{ "state":2 } }
### sEvtBsChannelConflict - 主题: /basestation/\${baseSN}/receive
- 功能描述:基站信道冲突时主动上报,应用程序可根据实际业务修改基站信道
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件名称 |
dataTag | string | - | 否 | 数据包标识,不需要时可传空字符串 |
data | object | - | 是 | 传送参数的对象 |
+value | int | 是 | 有冲突的信道 |
- 示例代码
Json { "fun":"sEvtBsChannelConflict", "dataTag":"1", "data":{ "value":5 //信道5有多个基站使用 } }
### sEvtBsNfcResults - 主题: /basestation/\${baseSN}/receive
- 功能描述:键盘刷卡时主动上报,如果超出基站容量会上报失败
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件名称 |
dataTag | string | - | 否 | 数据包标识,不需要时可传空字符串 |
data | object | - | 是 | 传送参数的对象 |
+keySn | string | 是 | 刷卡的键盘SN | |
+value | int | 是 | 刷卡的状态 1-成功 2-失败 |
- 示例代码
Json { "fun":"sEvtBsNfcResults", "dataTag":"1", //不需要时可传空字符串 "data":{ "keySn":"1234567890", "value":1 } }
sEvtBsKpOnlineMsg
- 主题: /basestation/\${baseSN}/receive
- 功能描述:键盘上线通知,主动上报,键盘升级成功后也会上报
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件名称 |
dataTag | string | - | 否 | 数据包标识 |
data | object | - | 是 | 传送参数的对象 |
+keySn | string | 是 | 键盘SN | |
+version | string | 是 | 键盘固件版本 | |
+model | int | 是 | 键盘型号 |
- 示例代码
Json { "fun":"sEvtBsKpOnlineMsg", "dataTag":"1", "data":{ "keySn":"1234567890", "version":"1.0.0", "model":67 } }
### sEvtStateCode - 主题: /basestation/\${baseSN}/receive
- 功能描述:返回基站接收指令状态信息
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件名称 |
dataTag | string | - | 否 | 数据包标识 |
data | object | - | 是 | 传送参数的对象 |
+funName | string | 是 | 指令名称 | |
+code | string | 是 | 状态码,含义见下表 |
状态码 | 说明 |
---|---|
0 | 指令收取成功 |
10001 | 不能正确解析的JSON数据 |
10002 | 解析JSON错误 |
20001 | 基站未连接 |
20002 | 功能不支持 |
20003 | 基站SN格式不正确 |
20004 | 参数错误 |
20005 | 基站在答题中 |
40001 | 升级功能只能支持一个基站 |
50001 | 此功能必须指定基站 |
60001 | 此功能必须指定键盘SN |
- 示例代码
Json { "fun":"sEvtStateCode", "dataTag":"1", "data":{ "funName":"startKpRollCall", "code":"20005" } }
## 基站管理 ### 基站连接 #### 方法 ##### getBsOnlineState - 主题:/client/multiBase/send
- 功能描述:主动获取所有在线基站信息,在线基站回复
- 参数说明
参数名 | 类型 | 限制 | 是否必填 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 固定指令名称 |
dataTag | string | - | 否 | 数据包标识 |
- 示例代码
Json { "fun":"getBsOnlineState", "dataTag":"1" }
getBsConnectState
- 主题:/client/\${baseSN}/send
- 功能描述:主动获取基站连接状态
- 参数说明
参数名 | 类型 | 限制 | 是否必填 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 固定指令名称 |
dataTag | string | - | 否 | 数据包标识 |
- 示例代码
Json { "fun":"getBsConnectState", "dataTag":"1" }
#### 事件 ##### sEvtBsConnectState 参见基站连接变化系统通知
fEvtBsOnlineState
- 主题: /basestation/mutilBase/receive
- 功能描述:基站在线返回基站型号和基站SN
- 参数说明
参数名 | 类型 | 限制 | 非空 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 事件类型 |
dataTag | string | - | 否 | 数据包标识,不需要时可传空字符串 |
data | object | - | 是 | 传送参数的对象 |
+baseModel | int | 否 | 基站的型号码 | |
+modelName | string | 否 | 基站的型号名称 | |
+version | string | 否 | 基站固件版本 | |
+baseSN | string | 否 | 基站SN |
- 示例代码
Json //连接成功 { "fun":"fEvtBsOnlineState", "dataTag":"1", "data":{ "baseModel":218, "modelName":"B200", "version":"1.0.3", "baseSN":"2024041401" } }
### 基站授时 #### 方法 ##### timeSync - 主题:/client/\${baseSN}/send
- 功能描述:发送当前时间戳给基站进行校时
- 参数说明
参数名 | 类型 | 限制 | 是否必填 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 固定指令名称 |
dataTag | string | - | 否 | 数据包标识 |
data | object | - | 是 | 传送参数的对象 |
+timeStamp | long | 否 | 当前时间的时间戳 |
- 示例代码
Json { "fun":"timeSync", "dataTag":"1", "data":{ "timeStamp":1718247133290 } }
#### 事件 ##### sEvtStateCode 返回指令的接收状态
识别设置
方法
setBsSN
- 主题:/manage/\${baseSN}/send
- 功能描述:设置基站的SN,需订阅新SN的主题,以获取事件返回
- 参数说明
参数名 | 类型 | 限制 | 是否必填 | 说明 |
---|---|---|---|---|
fun | string | - | 是 | 指令名称 |
dataTag | string | - | 否 | 数据包标识 |
data | object | - | 是 | 传送参数的对象 |
+value | string | 数字 | 是 | 设置的基站SN,长度为10位数字 |