From 5617bc2e9bdb03914c427e55fc2c62dc68a762a2 Mon Sep 17 00:00:00 2001 From: DMchen Date: Wed, 27 Mar 2024 14:12:18 +0800 Subject: [PATCH] 1.MQTT应用部分临时上传备份。 --- 通讯协议-MQTT应用部分[内部].md | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------- 1 file changed, 118 insertions(+), 65 deletions(-) diff --git a/通讯协议-MQTT应用部分[内部].md b/通讯协议-MQTT应用部分[内部].md index 4bebd24..6f35fa5 100644 --- a/通讯协议-MQTT应用部分[内部].md +++ b/通讯协议-MQTT应用部分[内部].md @@ -104,43 +104,39 @@ MQTT服务器配置结果检查 关于MQTT说明,请参考 https://mqtt.org/ -${clinetId} clinetId 是基站编号,为替换字符串。 +${clinetId} clinetId 客户id,为替换字符串。
+ +${baseSn} baseSn 是基站编号,为替换字符串。 #### 3.2.1.1 应用程序发布的主题 | 主题 | 功能 | | --- | --- | -| /client/${clientId}/operate | 基站的设置,查询等指令 | -| /lesson/class/${clinetId}/receive | 接收答题的指令 | - +| /\${clientId}/${baseSn}/baseRW | 基站参数设置,查询指令 | +| /\${clientId}/${baseSn}/keyRW | 键盘参数设置,查询指令 | +| /\${clientId}/${baseSn}/answer | 答题业务指令 | #### 3.2.1.2 应用程序订阅的主题 | 主题 | 功能 | | --- | --- | -| /client/${clientId}/online | 基站上线通知。 | -| /client/${clientId}/offline | 基站下线通知。 | -| /client/${clientId}/card/online | 答题器上线通知。 | -| /client/${clientId}/card/offline | 答题器离线通知。 | -| /client/${clientId}/card/swipe | 答题器刷卡事件 | -| /client/${clientId}/report | 基站主动上报状态,或者对设置指令的回应。 | -| /lesson/class/${clinetId}/send | 基站对答题/签到数据的反馈 | -| /client/${clientId}/card/fingerprint | 指纹事件 | -| /client/${clientId}/error | 基站错误信息上报 | +| /\${clientId}/${baseSn}/baseRe | 基站参数数据返回 | +| /\${clientId}/${baseSn}/keyRe| 键盘参数数据返回 | +| /\${clientId}/${baseSn}/answerRe | 答题数据返回 | +| /\${clientId}/${baseSn}/err | 状态码返回 | # JSON指令说明 -应用程序和WSCmdApp之间采用Json数据通信,通信的基本格式如下: +协议采用Json数据通信,通信的基本格式如下: -下发:应用程序 ->WSCmdApp +下发:应用程序 ->基站 ```json { fun: "" // 功能定义 - baseId: 1 // 基站id,数字类型 baseSn:"2023031402" //基站SN,字符串 params: {} //参数对象/数组 packetTag: "" //数据包标签字符串 @@ -149,8 +145,6 @@ ${clinetId} clinetId 是基站编号,为替换字符串。 fun:为功能定义,下发命令,要下发的命令函数 -baseId:基站ID,数字类型,参数范围1~32,基站对应的baseId 可以通过readConnectBase指令获取。如果要指定多个基站ID,则需要多次下发该命令,切换不同的基站ID进行发送。[此参数请和config.ini 文件的关键字jsonBase的值配合使用] - baseSn:基站SN列表,字符串数组。可以传递一个基站SN。[此参数请和config.ini 文件的关键字jsonBase的值配合使用] params:参数,可以为对象或者数组,用于伴随命令下发的数据附属包,详见具体功能定义。 @@ -158,12 +152,11 @@ params:参数,可以为对象或者数组,用于伴随命令下发的数 packerTag: 数据标签字符串,用于区别当前指令与其他指令。应用程序发送给WSCmdApp的,用户可以自定义数据(如果用户无自定义数据,可以为包序号,这样可以区分回复的数据回复的是哪个数据包)。WSCmdApp回复应用程序时,直接回填应用程序收到的标签数据。 -反馈:WSCmdApp -> 应用程序 +反馈:基站 -> 应用程序 ```json { fun: "" //功能定义 - baseId: 1 //基站id,数字类型 baseSn:"2023031402" //基站SN infos: {} //信息对象/数组 packetTag: "" // 数据包标签字符串,用于区别当前指令与其他指令。WSCmdApp发送给应用程序的用自增数字标记。WSCmdApp回复应用程序的,直接回填WSCmdApp收到的标签。 @@ -171,7 +164,6 @@ packerTag: ``` fun:同下发描述. -baseId:同下发描述. baseSn:同下发描述. infos:WSCmdApp反馈给应用程序层的数据。具体详见具体功能定义。 packetTag:数据标签字符串,反馈功能函数的状态为应用程序附带的数据包,如果WSCmdApp主动发送数据,是一组自增数据。 @@ -228,6 +220,9 @@ fun: "readConnectBase" //连接基站 packetTag:"1" // 指令样例: +| 主题 | /\${clientId}/${baseSn}/baseRW | 备注 | +| --- | --- | --- | + ```json { "fun": "readConnectBase", @@ -350,6 +345,17 @@ params:{} //无该值 | --- | --- | --- | |keySnList|指定键盘列表|keySn数组,为空表示所有键盘都参与。| +指令样例: + +```json +{ + "keySnList": [{ + "keySn": "1837454011"         + }, {             + "keySn": "1837454012"         + }] +} +``` 如果指定了键盘,则会逐个返回指定键盘的接收状态。收到的infos数组对象如下: @@ -363,101 +369,128 @@ params:{} //无该值 开始作答 +发送: + +fun: "startXXKeypad" //开始xx作答键盘 +baseSn:"2023031402" +params:{} //为空 + 指令样例: +| 主题 | /\${clientId}/${baseSn}/answer | +| --- | --- | + ```json -{ - "keySnList": [{ - "keySn": "1837454011"         - }, {             - "keySn": "1837454012"         - }] +{     + "fun": "startBindKeypad", + "baseSn":"2023031402", + "packetTag": "1" } ``` +接收: +fun: "startBind" // +baseSn:"2023031402" +infos:{"state":"OK"}//返回状态,成功为OK -键盘的接收状态返回 - -fun: "startXXKeypad" //开始XX作答键盘(XX是开始作答对应具体名称) -baseId: 1//接收到指令的基站ID -infos:{}//数组对象 指令样例: +| 主题 | /\${clientId}/${baseSn}/answerRe | +| --- | --- | + ```json -{     - "fun": "startBindKeypad", - "baseId": 1, +{ + "fun": "startBind", "baseSn":"2023031402", - "infos": [{             - "keySn": "1837454011", - "state": "OK"         - }], + "infos": { + "state": "OK" + }, "packetTag": "1" } ``` +指定键盘状态返回 +指令样例: -回复键盘的接收状态返回 +| 主题 | /\${clientId}/${baseSn}/answerRe | +| --- | --- | -发送: +```json +{ + "fun": "startBind", + "baseSn":"2023031402", + "infos": [{ + "keySn": "1837454011", + "state": "OK" + }], + "packetTag": "1" +} +``` -fun: "startXXKeypad" //开始xx作答键盘 -baseId:"1"//收到的基站ID -params:{} //为空 +键盘在签到启动情况下反馈的数据 指令样例: +| 主题 | /\${clientId}/${baseSn}/answerRe | +| --- | --- | + ```json -{     - "fun": "startBindKeypad", - "baseId": 1, +{ + "fun": "answerBind", "baseSn":"2023031402", + "infos": { + "time": "2.42", + "keySn": "1479824643", + "keyValue": "1234" + }, "packetTag": "1" } ``` -键盘的接收状态返回 +发送: -fun: "stopXXKeypad" //停止XX作答键盘(XX是停止作答对应具体名称) -baseId: 1//接收到指令的基站ID -infos:{}//数组对象 +fun: "stopBind" //停止xx作答键盘 +baseSn:"2023031402" +params:{} //为空 指令样例: +| 主题 | /\${clientId}/${baseSn}/answer | +| --- | --- | + ```json { - "fun": "stopBindKeypad", - "baseId": 1, + "fun": "stopBind", "baseSn":"2023031402", - "infos": [{ - "keySn": "1837454011", - "state": "OK" - }], "packetTag": "1" } ``` -回复键盘的接收状态返回 -发送: +接收: -fun: "stopXXKeypad" //停止xx作答键盘 -baseId: "1"//收到的基站ID -params:{} //为空 +fun: "stopBind" //停止签到 +baseSn:"2023031402" +infos:{"state":"OK"}//返回状态,成功为OK 指令样例: + +| 主题 | /\${clientId}/${baseSn}/answerRe | +| --- | --- | + ```json { - "fun": "stopBindKeypad", + "fun": "stopBind", "baseId": 1, - "baseSn":"2023031402", + "infos": { + "state": "OK" + }, "packetTag": "1" } ``` - ### 签到设备 #### 开始签到 @@ -499,6 +532,26 @@ params:{} } ``` +接收: + +fun: "startBind" // +baseId: "1"//接收到指令的基站ID +infos:{"state":"OK"}//返回状态,成功为OK + +指令样例: + +```json +{ + "fun": "startBind", + "baseId": 1, + "baseSn":"2023031402", + "infos": { + "state": "OK" + }, + "packetTag": "1" +} +``` + #### 接收签到信息 接收: -- libgit2 0.21.4