diff --git a/通讯协议-B200W-MQTT协议[内部].md b/通讯协议-B200W-MQTT协议[内部].md index f1ebda4..eab273a 100644 --- a/通讯协议-B200W-MQTT协议[内部].md +++ b/通讯协议-B200W-MQTT协议[内部].md @@ -32,7 +32,7 @@ SunVote B200W
MQTT通讯协议

-Ver 1.0.2 +Ver 1.0.3


@@ -48,7 +48,7 @@ Ver 1.0.2
-二〇二四年十二月 +二〇二五年二月

@@ -67,7 +67,8 @@ Ver 1.0.2 | 文档版本 | 日期 | 作者 | 版本说明 | |---|---|---|---| |1.0.1| 2024年10月22日|刘琴|1. 初始版| -|1.0.2| 2024年12月27日|刘琴|1. 增加测验题中自判题题型
2. 多科测验的科目数量为从9增加至11
3. 增加测验自定义题型标题下发和清除
4. 增加自定义tag,可自定义最长128位的数据包标签
注:(基站版本需高于0.0.8)| +|1.0.2| 2024年12月27日|刘琴|1. 增加测验题和多科测验中自判题题型
2. 多科测验的科目数量为从9增加至11
3. 增加测验自定义题型标题下发和清除
4. 可自定义最长128位的数据包标签
注:(基站固件版本需不低于0.0.9)| +|1.0.3| 2025年2月20日|刘琴|1. 增加英文题和短消息题型
2. 增加键盘在线列表读取
3. 增加遥控器事件上报
注:(基站固件版本需不低于0.0.10)|

@@ -117,7 +118,6 @@ Ver 1.0.2 { "fun":"xxx", "dataTag":"xxx", - "tag":"", //此字段非必需 "data":{ //内容 } @@ -127,8 +127,7 @@ Ver 1.0.2 |参数 |说明 |约束| |---|---|---| |fun| 指令或事件名称|| -|dataTag| 数据标签,用于对应收发数据|长度不超过4个字符,可为字母数字的组合,区分大小写| -|tag| 自定义标签|长度不超过128个字符,可以为字母数字下划线"_"的组合,区分大小写,非必填,可不传本字段| +|dataTag| 数据标签,用于对应收发数据|长度不超过128个字符,可以为字母数字下划线"_"的组合,区分大小写| |data| 数据内容|对象或者数组,可为空| 注意:基站接收指令数据单次不超过2K长度,在指定键盘发送指令时,如果指令长度超出限制,建议将指令进行拆分,分次发送,如果是所有键盘执行的指令,可将keySns设为空数组不使用指定键盘的模式 @@ -150,8 +149,10 @@ Ver 1.0.2 |公共事件|基站信道冲突|-|[sEvtBsChannelConflict](#sevtbschannelconflict)| |公共事件|键盘上线通知|-|[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)| |公共事件|键盘刷卡事件|-|[sEvtBsNfcResults](#sevtbsnfcresults)| +|公共事件|在线键盘列表|-|[sEvtBsKpOnlineList](#sevtbskponlinelist)| |公共事件|键盘待机实时按键反馈|-|[sEvtKpRtFeedback](#sevtkprtfeedback)| |公共事件|键盘举手键实时按键反馈|-|[sEvtKpHandUp](#sevtkphandup)| +|公共事件|遥控器实时按键反馈|-|[sEvtKpRemoteControl](#sevtkpremotecontrol)| ### 基站管理 |功能归类|功能|API指令|指令/系统事件| @@ -187,6 +188,8 @@ Ver 1.0.2 ||设置状态语工作状态|[setBsKpStbMsgMode](#setbskpstbmsgmode)|[fEvtBsKpStbMsgMode](#fevtbskpstbmsgmode)||| |键盘统一设置 - 登录菜单|获取键盘登录菜单状态|[getBsKpLoginMenu](#getbskploginmenu)|[fEvtBsKpLoginMenu](#fevtbskploginmenu)| ||设置键盘登录菜单状态|[setBsKpLoginMenu](#setbskploginmenu)|[fEvtBsKpLoginMenu](#fevtbskploginmenu)||| +|键盘统一设置 - 长距考勤|获取键盘长距考勤状态|[getBsKpRFIDState](#getbskprfidstate)|[fEvtBsKpRFIDState](#fevtbskprfidstate)| +||设置键盘长距考勤状态|[setBsKpRFIDState](#setbskprfidstate)|[fEvtBsKpRFIDState](#fevtbskprfidstate)| |键盘统一设置 - 键盘休眠|设置键盘休眠等级(内)|[setBsKpSleepLevel](#setbskpsleeplevel)|[fEvtBsKpSleepLevel](#fevtbskpsleeplevel)| ||获取键盘休眠等级(内)|[getBsKpSleepLevel](#getbskpsleeplevel)|[fEvtBsKpSleepLevel](#fevtbskpsleeplevel)| ||设置键盘暂停休眠状态(内)|[setBsKpPauseSleep](#setbskppausesleep)|[fEvtBsKpPauseSleep](#fevtbskppausesleep)| @@ -222,6 +225,7 @@ Ver 1.0.2 |交互设置 - 用户实时提示反馈信息|实时设置提示反馈信息|[rtSetKpUserPrompt](#rtsetkpuserprompt)|[sEvtStateCode](#sevtstatecode)
[fEvtSetKpUserPrompt](#fevtsetkpuserprompt)| |在线状态获取|开启扫描在线键盘|[startGetKpOnline](#startgetkponline)|[sEvtStateCode](#sevtstatecode)
[fEvtKpOnlineMsg](#fevtkponlinemsg)| ||停止扫描在线键盘|[stopGetKpOnline](#stopgetkponline)|[sEvtStateCode](#sevtstatecode)| +||实时获取在线键盘列表|[rtGetKpOnlineList](#rtgetkponlinelist)|[sEvtBsKpOnlineList](#sevtbskponlinelist)| |维护功能 - 遥控功能|遥控键盘休眠|[remoteKpSleep](#remotekpsleep)|[sEvtStateCode](#sevtstatecode)| |维护功能 - 键盘升级|启动键盘无线升级(内)|[startKpFWUpdate](#startkpfwupdate)|[sEvtStateCode](#sevtstatecode)
[fEvtKpFWUpdateState](#fevtkpfwupdatestate)
[fEvtKpUpdateProgress](#fevtkpupdateprogress)
[sEvtBsKpOnlineMsg](#sevtbskponlinemsg)| ||停止键盘无线升级(内)|[stopKpFWUpdate](#stopkpfwupdate)|[sEvtStateCode](#sevtstatecode)
[fEvtKpFWUpdateState](#fevtkpfwupdatestate)| @@ -249,6 +253,9 @@ Ver 1.0.2 ||停止数字题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)| |抢答题|启动抢答题答题|[startQAQuicker](#startqaquicker)|[sEvtStateCode](#sevtstatecode)
[fEvtQAQuicker](#fevtqaquicker)| ||停止抢答题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)| +|英文题|启动英文题答题|[startQAEText](#startqaetext)|[sEvtStateCode](#sevtstatecode)
[fEvtQAEText](#fevtqaetext)| +||停止英文题答题|[stopKpVote](#stopkpvote)|[sEvtStateCode](#sevtstatecode)| +|短消息|发送短消息|[sendKpMsg](#sendkpmsg)|[sEvtStateCode](#sevtstatecode)
[fEvtKpMsg](#fevtkpmsg)| |待机实时反馈|设置待机实时反馈状态|[setKpStbResponse](#setkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)
[sEvtKpRtFeedback](#sevtkprtfeedback)
[sEvtKpHandUp](#sevtkphandup)| ||获取待机实时反馈状态|[getKpStbResponse](#getkpstbresponse)|[fEvtKpStbResponse](#fevtkpstbresponse)| ### 在线测验 @@ -397,6 +404,39 @@ Ver 1.0.2 } } ``` +### sEvtBsKpOnlineList +- **主题**: /basestation/{baseSN}/receive +- **功能描述**:键盘在线列表发生变化时主动上报 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|array|-|是|传送参数的对象数组| +|++keySn|string||是|键盘SN| +|++version|string||是|键盘固件版本| +|++model|int||是|键盘型号| +|++voltage|double||是|键盘电压| + +- **示例代码** +```json +{ + "fun":"sEvtBsKpOnlineList", + "dataTag":"1", + "data":[{ + "keySn":"1234567890", + "version":"1.0.0", + "model":67, + "voltage":2.8 + },{ + "keySn":"1234567891", + "version":"1.0.0", + "model":67, + "voltage":2.8 + }] +} +``` ### sEvtKpRtFeedback - **主题**: /basestation/{baseSN}/receive - **功能描述**:开启键盘实时反馈后,键盘按键时上报 @@ -447,6 +487,30 @@ Ver 1.0.2 } } ``` +### sEvtKpRemoteControl +- **主题**: /basestation/{baseSN}/receive +- **功能描述**:遥控器按键实时上报 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|事件名称| +|dataTag|string|-|否|数据包标识| +|data|object|-|是|传送参数的对象| +|+keySn|string||是|遥控器SN| +|+keyValue|string||是|遥控器提交的按键值,按键值含义参见遥控器说明| + +- **示例代码** +```json +{ + "fun":"sEvtKpRemoteControl", + "dataTag":"1", + "data":{ + "keySn":"1234567890", + "keyValue":"1" + } +} +``` ### sEvtStateCode - **主题**: /basestation/{baseSN}/receive - **功能描述**:返回基站接收指令状态信息 @@ -1001,7 +1065,7 @@ Ver 1.0.2 "fun":"fEvtBsPairCode", "dataTag":"1", "data":{ - "value":"123456" + "value":"12345678" } } ``` @@ -1401,6 +1465,47 @@ Ver 1.0.2 } } ``` + +##### getBsKpRFIDState +- **主题**:/client/{baseSN}/send +- **功能描述**:获取键盘长距离考勤开启状态 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| + +- **示例代码** +```json +{ + "fun":"getBsKpRFIDState", + "dataTag":"1" +} +``` +##### setBsKpRFIDState +- **主题**:/client/{baseSN}/send +- **功能描述**:设置键盘长距离考勤开启状态 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|设置键盘长距离考勤开启状态
0-不开启
1-开启| + +- **示例代码** +```json +{ + "fun":"setBsKpRFIDState", + "dataTag":"1", + "data":{ + "value":"1" + } +} +``` + ##### getBsKpSleepLevel - **主题**:/manage/{baseSN}/send - **功能描述**:获取键盘休眠时间等级 @@ -1550,6 +1655,30 @@ Ver 1.0.2 } } ``` + +##### fEvtBsKpRFIDState +- **主题**: /basestation/{baseSN}/receive +- **功能描述**:返回键盘长距离考勤开启状态 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+value|string||是|返回键盘长距离考勤开启状态
0-不开启
1-开启| + +- **示例代码** +```json +{ + "fun":"fEvtBsKpRFIDState", + "dataTag":"1", + "data":{ + "value":"0" + } +} +``` + ##### fEvtBsKpSleepLevel - **主题**: /manage/{baseSN}/receive - **功能描述**:返回键盘休眠时间等级 @@ -2745,10 +2874,33 @@ Ver 1.0.2 "dataTag":"1" } ``` + +##### rtGetKpOnlineList +- **主题**:/client/{baseSN}/send +- **功能描述**:实时获取基站存储的键盘在线列表 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| + +- **示例代码** + +```json +{ + "fun":"rtGetKpOnlineList", + "dataTag":"1" +} +``` + #### 事件 ##### [sEvtStateCode](#sevtstatecode) 发送指令后返回此事件 +##### [sEvtBsKpOnlineList](#sevtbskponlinelist) +实时获取基站存储的键盘在线列表时返回此事件 + ##### fEvtKpOnlineMsg - **主题**: /basestation/{baseSN}/receive - **功能描述**:主动获取在线键盘时,在线键盘状态报告 @@ -3332,7 +3484,7 @@ Ver 1.0.2 |dataTag|string|-|否|数据包标识,可为空字符串| |data|object|-|是|传送参数的对象| |+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| -|+count|int||是|题目数量,1-16,>1多题快答
optionalN >1时无效| +|+count|int||是|题目数量,1-16,>1多题快答
注意:多题快答只适用于单选题,count>1时optionalN 默认为1,且options需 >1,显示模式mode默认为1| |+mode|int||是|显示模式
1:显示字母(默认值)
2:显示数字 | |+lessMode|int||是|迫选模式
0:可缺选(默认值)
1:不可缺选
2:允许重复输入
3:允许重复输入且不可缺选 | |+options|int||是|选项数量,1≤M≤10(默认值4)| @@ -3603,6 +3755,182 @@ Ver 1.0.2 }] } ``` +### 英文题 +#### 方法 +##### startQAEText +- **主题**:/client/{baseSN}/send +- **功能描述**:启动英文题答题 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|object|-|是|传送参数的对象| +|+keySns|array||是|指定的键盘SN数组,空数组表示全部在线键盘| +|+mode|int||是|模式
0:自由输入| +|+allowModify|int||是|修改模式
0 - 不允许修改
1 - 允许修改| +|+tip|string||否|提示的标题,长度不超过16字符| +|+simParams|object||否|内部模拟测试参数设置对象| +|++answer|string||是|预设提交的按键值| + +- **示例代码** +```json +{ + "fun":"startQAEText", + "dataTag":"1", + "data":{ + "keySns":[], + "mode": 0, + "allowModify":1, + "tip":"请输入英文文本", + "simParams":{ + "answer":"AAAAAAA" + } + } +} +``` + + +##### [stopKpVote](#stopkpvote) +停止英文题答题 + +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtQAEText +- **主题**:/basestation/{baseSN}/receive +- **功能描述**:返回键盘提交答题信息 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|是|传送参数的对象数组| +|++keySn|string||是|键盘SN| +|++keyValue|string||是|键盘提交的按键值| +|++keyTime|double||是|答题时间,从启动开始计算,单位秒| + +- **示例代码** +```json +{ + "fun":"fEvtQAEText", + "dataTag":"1", + "data": [{ + "keySn": "1234567890", + "keyValue":"hello", + "keyTime":3.2 + }] +} +``` + +### 短信息 +#### 方法 +##### sendKpMsg +- **主题**:/client/{baseSN}/send +- **功能描述**:指定键盘发送短信息 +- **参数说明** + +|参数名|类型|限制|是否必填|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|是|传送参数的对象数组,不可为空| +|++keySn|string||是|需要设置绑定信息的键盘SN
空字符串且只有一条信息时代表群发所有在线键盘| +|++month|int||是|月份,范围1-12| +|++day|int||是|日期,范围1-31| +|++info|string||是|信息内容| + +- **示例代码** +```json +//指定键盘发送信息 +{ + "fun":"sendKpMsg", + "dataTag":"1", + "data": [ + { + "keySn": "1479824643", + "month":6, + "day":10, + "info": "短信息1" + }, + { + "keySn": "1479824644", + "month":6, + "day":10, + "info": "短信息2" + } + ] +} + +//广播信息 +{ + "fun":"sendKpMsg", + "dataTag":"1", + "data": [ + { + "keySn": "", + "month":6, + "day":10, + "info": "广播信息" + } + ] +} +``` + +#### 事件 +##### [sEvtStateCode](#sevtstatecode) +发送指令后返回接收状态 + +##### fEvtKpMsg +- **主题**:/basestation/{baseSN}/receive +- **功能描述**:返回短信息是否成功发送至键盘 +- **参数说明** + +|参数名|类型|限制|非空|说明| +|---|---|---|---|---| +|fun|string|-|是|指令名称| +|dataTag|string|-|否|数据包标识,可为空字符串| +|data|array|-|否|传送参数的对象数组| +|++keySn|string||是|键盘SN| +|++state|string||是|短信息是否成功发送
0 - 成功
1 - 失败| + +- **示例代码** +```json +{ + "fun":"fEvtKpMsg", + "dataTag":"1", + "data": [ + { + "keySn": "1479824643", + "state": "0" + }, + { + "keySn": "1479824644", + "state": "1" + } + ] +} +``` + ### 待机实时反馈 #### 方法 ##### setKpStbResponse @@ -4309,7 +4637,7 @@ Ver 1.0.2 |dataTag|string|-|否|数据包标识,可为空字符串| |data|object|-|是|传送参数的对象数组,不可为空| |+keySns|array||是|需要设置标题的键盘SN数组,为空代表全部在线键盘
注意:指定键盘下发才有单个键盘下发是否成功的事件,全部在线键盘下发只有统一回复事件| -|+type|int||是|需要设置的题目类型
1-单选题
2-多选题
3-数字题
4-判断题
5-对错题(自判题)| +|+type|int||是|需要设置的题目类型
1-单选题
2-多选题
3-数字题
4-判断题
5-自判题| |+title|string||是|设置的标题内容,长度不大于15个字符| @@ -4369,7 +4697,7 @@ Ver 1.0.2 ##### fEvtKpExamQuesTitle - **主题**:/basestation/{baseSN}/receive -- **功能描述**:返回键盘实时设置绑定信息的状态是否成功 +- **功能描述**:返回键盘设置自定义题型标题的状态是否成功 - **参数说明** |参数名|类型|限制|非空|说明|