更新记录

1.0.0(2023-11-06)

发布第一个版本


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue app-nvue × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

mcumgr-core

介绍

本项目为对Android-nRF-Connect-Device-Manager的开源项目迁移到uniAPP而成, 使用的蓝牙相关api都是使用的uniapp提供,参考https://uniapp.dcloud.net.cn/api/system/ble.html

虽然android ,iOS 都有相关的开源SDK可在手机上开发mcumgr功能 android:https://github.com/NordicSemiconductor/Android-nRF-Connect-Device-Manager iOS:https://github.com/NordicSemiconductor/IOS-nRF-Connect-Device-Manager 但是在uniapp上面使用目前没有直接可依赖的插件,虽然可以在uniapp上面引用android SDK,IOS SDK进行两个平台APP的适配,但是相对麻烦。且只支持android,IOS原生。 本插件进行uniapp迁移之后,使用的都是uniapp的ble api,所以只要ble api 支持的平台包括小程序,都能进行开发。

mcumgr是个开源项目,是跟zephyr搭配使用的,以下是chatGPT对mcumgr的相关回答: mcumgr(Microcontroller Manager)是一个用于远程管理和升级嵌入式设备的工具,特别是在物联网(IoT)和嵌入式系统中非常有用。它是一个开源项目,最初由Zephyr项目启动,但也可以与其他嵌入式操作系统和固件一起使用。 以下是mcumgr的一些关键特点和功能: 1.远程管理:mcumgr允许远程管理嵌入式设备,包括配置、监控和升级。这对于大规模 IoT 部署和远程设备维护非常有用。 2.命令行工具:mcumgr提供了一个命令行工具,允许开发人员和管理员通过终端或脚本执行各种设备管理操作。这使得设备的管理变得更加方便。 3.REST API:mcumgr还提供了一个RESTful API,使开发人员能够通过HTTP请求与设备进行通信。这样,您可以使用各种编程语言和工具来与设备进行交互。 4.固件升级:其中一个重要的功能是设备固件的远程升级。通过mcumgr,您可以安全地将新固件上传到设备并启动升级过程,而无需物理接触设备。 5.插件架构:mcumgr采用插件化的架构,这意味着您可以扩展其功能以满足特定需求。例如,您可以编写自定义插件来执行特定的管理任务。 6.安全性:安全性是mcumgr的一个重要关注点。它支持加密和认证,以确保管理和升级操作的安全性。这对于防止未经授权的访问和固件篡改至关重要。 mcumgr通常与Zephyr操作系统一起使用,因为它是Zephyr的一部分。Zephyr是一个开源的嵌入式操作系统,适用于各种不同的微控制器和处理器架构。然而,您也可以在其他嵌入式系统中使用mcumgr,只需适当地集成它的库和插件。 总之,mcumgr是一个强大的工具,用于远程管理和升级嵌入式设备,特别适用于物联网应用程序和大规模设备部署。

安装

插件安装方式可根据官网 https://uniapp.dcloud.net.cn/plugin/uni_modules.html#%E4%BD%BF%E7%94%A8-uni-modules-%E6%8F%92%E4%BB%B6 安装完毕之后,由于插件使用了crypto-js 请运行

npm install crypto-js

引入

import DefaultManager from "../../uni_modules/mcumgr-core/js_sdk/managers/DefaultManager.js";
import FsManager from "../../uni_modules/mcumgr-core/js_sdk/managers/FsManager.js";
import BasicManager from "../../uni_modules/mcumgr-core/js_sdk/managers/BasicManager.js";
import ConfigManager from "../../uni_modules/mcumgr-core/js_sdk/managers/ConfigManager.js";
import CrashManager from "../../uni_modules/mcumgr-core/js_sdk/managers/CrashManager.js";
import ImageManager from "../../uni_modules/mcumgr-core/js_sdk/managers/ImageManager.js";
import OTAManager from "../../uni_modules/mcumgr-core/js_sdk/managers/OTAManager.js";
import LogManager from "../../uni_modules/mcumgr-core/js_sdk/managers/LogManager.js";
import ShellManager from "../../uni_modules/mcumgr-core/js_sdk/managers/ShellManager.js";
import StatsManager from "../../uni_modules/mcumgr-core/js_sdk/managers/StatsManager.js";
import McuMgrBleTransport from "../../uni_modules/mcumgr-core/js_sdk/ble/McuMgrBleTransport.js";
import Bluetooth from "../../uni_modules/mcumgr-core/js_sdk/ble/bluebooth.js";

使用

搜索蓝牙

const bluetooth = Bluetooth.getInstance((status) => { // 创建蓝牙工具
  console.log('蓝牙状态改变', status);
});
bluetooth.initBluetooth().then(res => { // 初始化蓝牙
  bluetooth.searchDevice((device) => { // 搜索蓝牙
    if (device.deviceId === '34:DA:C1:88:20:04') {
      console.log('搜索到蓝牙', device.deviceId);
      bluetooth.closeSearch();
        // 搜索到蓝牙之后就可以调用mcumgr发送命令了
    }
  });
}).catch(resf => {
  // 初始化蓝牙失败
});

调用mcumgr

const mcuMgrBleTransport = new McuMgrBleTransport('34:DA:C1:88:20:04');
const defaultManager = new DefaultManager(mcuMgrBleTransport);
const result = await defaultManager.echo('product_id : 4, adv_count:6,adv_window: 100, adv_interval: 1, tx_power: 4');
console.log('echo----------', result);

// 或者使用回调
defaultManager.echo({
                    onResponse: (data) => {

                    },
                    onError: (e) => {

                    },
                });

更多使用方法请参考示例项目

交流qq邮箱:792537549

隐私、权限声明

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

蓝牙相关,使用本插件需要打开手机蓝牙开关

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。

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