更新记录

v1.0.2023.06.08(2023-06-12)

2023-06-08

修复Android蓝牙扫描不到的问题,添加发送16进制字符串,byte数组方法。增加自定义数据多类型同时返回(utf-8、hexStr,byte数组)

v1.0.2023.02.28(2023-02-28)

2023-02-28

优化回调参数

v1.0.2023.02.27(2023-02-27)

2023-02-27

修复配网本地5G限制

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

XM-EspBlufi是一款在uniapp中使用BluFi控制ESP设备。需要帮助,请联系作者,QQ:1804945430(备注来源)。

使用说明

1、使用手机蓝牙扫描BluFi设备

    espBluFiModule.scanBT({
            timeOut: 4000, //仅使用于Android端,单位毫秒
            BlufiFilter: '' //设备名称前缀,可过滤扫描到的设备,适用于Android、iOS
        }, (ret) => {
            var result = JSON.stringify(ret)
            console.log(ret);
            modal.toast({
                message: result,
                duration: 1.5
            });
    });

2、停止扫描

    // 超时后自动结束扫描,也可以手动停止扫描
    espBluFiModule.stopScan((ret) => {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message: result,
            duration: 1.5
        });
    });

3、连接设备

    espBluFiModule.connect({
            mac: 'E0:E2:E6:D7:DE:0E', //Android使用
            uuid: '8AC95EA6-3D7C-C475-07D0-3A2C5400047D' //iOS使用
        }, (ret) => {
            //连接状态信息和接受到的信息回调于此
            var result = JSON.stringify(ret)
            console.log(ret);
            modal.toast({
                message: result,
                duration: 1.5
            });
    });

4、断开连接

    espBluFiModule.disconnectGatt((ret) => {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message: result,
            duration: 1.5
        });
    });

5、加密

    espBluFiModule.negotiateSecurity((ret) = > {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message:result,
            duration:1.5
        });
    });

6、获取状态

    espBluFiModule.requestDeviceStatus((ret) = > {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message:result,
            duration:1.5
        });
    });

7、获取版本

    espBluFiModule.requestDeviceVersion((ret) = > {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message:result,
            duration:1.5
        });
    });

8、设备扫描WiFi

    espBluFiModule.requestDeviceWifiScan((ret) = > {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message:result,
            duration:1.5
        });
    });

9、设备配网

espBluFiModule.configure({
                /**
                 *      int OP_MODE_NULL = 0;
                int OP_MODE_STA = 1;
                int OP_MODE_SOFTAP = 2;
                int OP_MODE_STASOFTAP = 3;
                */
                deviceMode:1, //OP_MODE_NULL不需要参数
                ssid:'', //WIFI名称,OP_MODE_STA和OP_MODE_STASOFTAP需要,需要时不能为空
                password:'', //WIFI密码,可空
                ap_ssid:'', //OP_MODE_SOFTAP模式需要,不能为空
                ap_password:'', //security不为SOFTAP_SECURITY_OPEN时,需要大于等于8位
                channel:1, //1-13任意值
                maxConnection:5, //最大连接数
                security:0,
        /**
         *      int SOFTAP_SECURITY_OPEN = 0;
         int SOFTAP_SECURITY_WEP = 1;
         int SOFTAP_SECURITY_WPA = 2;
         int SOFTAP_SECURITY_WPA2 = 3;
         int SOFTAP_SECURITY_WPA_WPA2 = 4;
         */
                },(ret) =>{
            var result = JSON.stringify(ret)
            console.log(ret);
            modal.toast({
                    message:result,
                    duration:1.5
                    });
        });

10、发送自定义数据(utf-8)

    espBluFiModule.postCustomData('6:xxx', (ret) => {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message: result,
            duration: 1.5
        });
    }); //具体命令6:xxx等见设备word文档

11、发送自定义数据(16进制字符串)

    espBluFiModule.postHexStr('FFFE', (ret) => {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message: result,
            duration: 1.5
        });
    }); //见word文档

12、发送自定义数据(byte[])

    espBluFiModule.postBytes([0xFF, 0xFE], (ret) => {
        //接口调用信息回调于此
        var result = JSON.stringify(ret)
        console.log(ret);
        modal.toast({
            message: result,
            duration: 1.5
        });
    }); //见word文档

常见问题

为了避免多次重复调用,接口5-10点击后需要在收到设备回调后才能进行下一次点击。为方便你快速上手测试,具体使用方法请下载Demo使用。
Android SDK地址
iOS SDK地址

为方便对比测试,下面提供了Android原生Demo

Android官方Demo

支持定制,联系QQ:1804945430,微信:18980392735 请备注来源

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问