1.0.3 • Published 2 years ago

offline-server-ble-comm-kit v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

概述

​ 该SDK 是为 微信小程序 平台提供的 【应急蓝牙换电】功能

1. 连接目标柜子,获取蓝牙接口所提示的deviceId (这一步为可选,可自己编写) 2. 开始应急蓝牙换电 1. 向已连接设备 下发应急换电请求指令 2. 监听换电流程中的状态变化以及通信错误

1. 连接目标柜子,获取蓝牙接口所提供的deviceid (可选)

注意: 已连接设备所获取的 deviceId 与 柜子编码 是两个概念

属性类型默认值必填说明
dev_snstring待连接的设备编号
open_comm_retrybooleanfalse是否开启设备连接失败的重试功能(即:会提示失败信息以及重试按钮)
discovery_timeoutnumber5000搜索设备的超时时长(单位:ms),最短不低于5秒,最长不高于60秒
conn_timeoutnumber5000连接设备的超时时长(单位:ms),最短不低于5秒,最长不高于60秒
successfunction接口调用成功的回调函数(函数参数: 已连接设备所获取的deviceid)
failfunction接口调用失败的回调函数
 const {connectTargetDevice} = require("offline-server-ble-comm-kit");
 connectTargetDevice({
 	"dev_sn": "123445",
 	"open_comm_retry": true,
 	"success": (deviceId) => {
        //连接成功
 	},
 	"fail": (err)=>{
        //连接失败
 	}
 })

2. 开始应急蓝牙换电

​ 蓝牙连接设备成功后,即可开始向设备发起 应急换电 请求

  1. SwapServerHandler

    有关于应急换电的处理构造函数

    属性类型说明
    userIdstring用户编号(目的:用于赋值于换电占指令中userId)
    devSnstring待换电的设备编号
    deviceIdstring设备连接成功所获取的deviceId 字段
  1. SwapServerHandler.startBleOfflineSwap(Object object)

    下发“应急换电”的指令请求

    属性类型默认值必填说明
    user_idnumber用户id
    user_token_tsnumber用户套餐过期时间戳(单位:秒)
    user_tokenstring用户token
    requset_time_outnumber15下发请求等待超时时长(单位:秒),不低于5秒,不高于15秒
    time_outnumber170整个换电流程的超时时长(单位:秒),不低于60秒,不高于180秒
    successfunction发送请求成功的回调//{"isSuccess": boolean, "code": number}
    failfunction发送请求失败的回调//{code: number, message: string}

    参数: success

    解释有关成功回调函数的参数值

    属性类型说明
    isSuccessboolean是否可以继续换电(例如:有些情况换电柜不满足换电的条件)
    codenumber换电请求所回复的结果(即:对应着mqtt消息(501)中的 result 字段)
  1. SwapServerHandler.listenSwapProcessStatus(function callback)

    监听换电过程中换电的状态变化;

    属性类型说明
    statusnumber换电的状态(换电中,换电异常,换电失败,换电成功)
    resultnumber换电结果
  1. SwapServerHandler.listenBleCommError(function callback)

    监听蓝牙通信中的通信异常;

    属性类型说明
    errCodenumber
    errMsgstring异常描述
								/******以下例子仅供参考******/
	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();	//声明定义
  1. 本地已存储应急换电时的 换电通信记录;

    说明: 文件名称以txnNo命名,每个文件存储着请求与响应的通信记录;

    1. LocalFileHandler.getLogFiles()

      获取当前目录下存储多少条通信记录;

      【返回值】 Arraynumber 订单流水号(txnNo)集合

    2. LocalFileHandler.getTargetLogFile(Number txnNo)

      获取指定流水号(txnNo)中的请求与响应记录;

      【返回值】Arraystring 该流水号的i请求与响应通信记录

    3. LocalFileHandler.removeFile(Number txnNo)

      删除指定文件

​ ##### 5. 历史版本记录

版本号版本描述
1.0.31. 同步更新换电sdk 1.0.14 版本
1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago