1.0.3 • Published 2 years ago
offline-server-ble-comm-kit v1.0.3
概述
该SDK 是为 微信小程序 平台提供的 【应急蓝牙换电】功能
1. 连接目标柜子,获取蓝牙接口所提示的deviceId (这一步为可选,可自己编写) 2. 开始应急蓝牙换电 1. 向已连接设备 下发应急换电请求指令 2. 监听换电流程中的状态变化以及通信错误
1. 连接目标柜子,获取蓝牙接口所提供的deviceid (可选)
注意: 已连接设备所获取的 deviceId 与 柜子编码 是两个概念
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
dev_sn | string | 是 | 待连接的设备编号 | |
open_comm_retry | boolean | false | 否 | 是否开启设备连接失败的重试功能(即:会提示失败信息以及重试按钮) |
discovery_timeout | number | 5000 | 否 | 搜索设备的超时时长(单位:ms),最短不低于5秒,最长不高于60秒 |
conn_timeout | number | 5000 | 否 | 连接设备的超时时长(单位:ms),最短不低于5秒,最长不高于60秒 |
success | function | 否 | 接口调用成功的回调函数(函数参数: 已连接设备所获取的deviceid) | |
fail | function | 否 | 接口调用失败的回调函数 |
const {connectTargetDevice} = require("offline-server-ble-comm-kit");
connectTargetDevice({
"dev_sn": "123445",
"open_comm_retry": true,
"success": (deviceId) => {
//连接成功
},
"fail": (err)=>{
//连接失败
}
})
2. 开始应急蓝牙换电
蓝牙连接设备成功后,即可开始向设备发起 应急换电 请求
SwapServerHandler
有关于应急换电的处理构造函数
属性 类型 说明 userId string 用户编号(目的:用于赋值于换电占指令中userId) devSn string 待换电的设备编号 deviceId string 设备连接成功所获取的deviceId 字段
SwapServerHandler.startBleOfflineSwap(Object object)
下发“应急换电”的指令请求
属性 类型 默认值 必填 说明 user_id number 是 用户id user_token_ts number 是 用户套餐过期时间戳(单位:秒) user_token string 是 用户token requset_time_out number 15 否 下发请求等待超时时长(单位:秒),不低于5秒,不高于15秒 time_out number 170 否 整个换电流程的超时时长(单位:秒),不低于60秒,不高于180秒 success function 否 发送请求成功的回调//{"isSuccess": boolean, "code": number} fail function 否 发送请求失败的回调//{code: number, message: string} 参数: success
解释有关成功回调函数的参数值
属性 类型 说明 isSuccess boolean 是否可以继续换电(例如:有些情况换电柜不满足换电的条件) code number 换电请求所回复的结果(即:对应着mqtt消息(501)中的 result 字段)
SwapServerHandler.listenSwapProcessStatus(function callback)
监听换电过程中换电的状态变化;
属性 类型 说明 status number 换电的状态(换电中,换电异常,换电失败,换电成功) result number 换电结果
SwapServerHandler.listenBleCommError(function callback)
监听蓝牙通信中的通信异常;
属性 类型 说明 errCode number errMsg string 异常描述
/******以下例子仅供参考******/
const {
SwapServerHandler,
SwapProcessStatusMap,
setConsoleLogDisplay,
showConsoleLog
} = require("offline-server-ble-comm-kit");
/**
* 下发“应急蓝牙换电”请求
* @param {string} devSn 待换电的设备编号
* @param {string} deviceId 已连接成功后所获取的 deviceId
* @param {*} options
* //以下是对象格式(注:以下有两个user_id,请注意区分)
* {
* "user_id": string, //用于拼接mqtt消息的字段
"token_info": {
"user_id": number, //用于生成token的数字类型userId
"user_token_ts": number,
"user_token": string,
},
"time_out": 170,
* }
*/
function startSwapRequest(devSn, deviceId, options) {
let swapServerHandler = new SwapServerHandler(options["user_id"], devSn, deviceId);
let tokenInfo = options["token_info"] || {};
wx.showLoading({
title: "换电准备中...",
});
//开启“应急蓝牙换电”请求
swapServerHandler.startBleOfflineSwap({
"user_id": tokenInfo["user_id"],
"user_token_ts": tokenInfo["user_token_ts"],
"user_token": tokenInfo["user_token"],
"time_out": options["time_out"],
"success": (res) => { //{"isSuccess": boolean, "code": number}
wx.hideLoading();
Log.log("[connAndStartBleOfflineSwap] start success info:", res);
//@todo 发送换电请求成功
this.listenSwapProcessStatus(swapServerHandler);
},
"fail": (err) => { //{code: number, message: string}
wx.hideLoading();
Log.warn("[connAndStartBleOfflineSwap] start offline swap fail:", err);
//@todo 发起换电请求失败
}
});
//监听蓝牙通信中的通信异常
swapServerHandler.listenBleCommError((err) => { //{errCode: number, errMsg: string}
Log.error("[listenBleCommError] comm err info:", err);
//@todo 通信异常处理
});
}
//监听换电流程的状态更新
function listenSwapProcessStatus(swapServerHandler) {
if (!(swapServerHandler instanceof SwapServerHandler)) {
return;
}
wx.showLoading({
title: '换电中...',
});
//监听当前换电流程的 状态更新
swapServerHandler.listenSwapProcessStatus((info) => {
//{status: number, result: number}
Log.log("[listenSwapProcessStatus] status change:", info);
if (typeof info != "object") {
return;
}
switch (info["status"]) {
case SwapProcessStatusMap["SUCCESS"]: {
wx.hideLoading();
//@todo 换电成功
break;
}
case SwapProcessStatusMap["ABNORMAL"]:
case SwapProcessStatusMap["FAIL"]: {
wx.hideLoading();
//@todo 换电失败
break;
}
}
});
}
3. 该工具内置对 蓝牙通信的日志本地存储;
1. 提供设置 是否显示console 蓝牙通信的log;
const {
setConsoleLogDisplay,
showConsoleLog,
LocalFileHandler
} = require("offline-server-ble-comm-kit");
setConsoleLogDisplay(true); //开启应急蓝牙业务逻辑日志显示
showConsoleLog(true); //开启蓝牙通信日志显示
const localFileHandler = new LocalFileHandler(); //声明定义
本地已存储应急换电时的 换电通信记录;
说明: 文件名称以txnNo命名,每个文件存储着请求与响应的通信记录;
##### 5. 历史版本记录
版本号 | 版本描述 |
---|---|
1.0.3 | 1. 同步更新换电sdk 1.0.14 版本 |