@abandonware/bleno

中文文档
0.6.2发布于 2025/02/06MITTypeScriptCommonJS近 30 天下载 7447

用于实施BLE(蓝牙低能)外围的节点.js模块

中文使用文档
文档目录15 节
  1. 先决条件
  2. 操作系统X
  3. 链接
  4. 免费BSD
  5. 窗口
  6. 安装
  7. 使用量
  8. 行动
  9. 小学
  10. 特征
  11. 说明
  12. 活动
  13. 在 Linux 上运行
  14. 有用工具/链接
  15. 许可证

布尔诺

Gitter

用于实施BLE(蓝牙低能)外围的Node.js模块.

需要BLE中央模块吗? 见 贵族。 。 。 .

说明: 从0.6 Bleno版本开始,基于ES6类,只支持Node.js 14.x和更高. 对于更古老版本的Node.js使用bleno 0.5.x.

说明: macOS / Mac OS X,Linux,FreeBSD和Windows是目前唯一被支持的OS.

先决条件

操作系统X

  • 通过安装 XCode 命令行工具 xcode-select --install
  • 10.9 或以后时间

链接

  • 3.6或以上内核版本
  • libbluetooth-dev
  • bluetoothd 禁用,如果安装了 BlueZ 5.14 或以后安装。 使用 sudo hciconfig hci0 up 以在停止或失效后使蓝牙适配器启动 bluetoothd。 。 。 .
    • System V数字 :
      • sudo service bluetooth stop (一次)
      • sudo update-rc.d bluetooth remove (坚持重启)
    • systemd
      • sudo systemctl stop bluetooth (一次)
      • sudo systemctl disable bluetooth (坚持重启)

如果你在用的话 贵族 财务报告和审定财务报表 同时 Bleno,连接的 BLE 设备可能无法从 BLE 适配器取回服务列表. 看看高贵的 关于bleno相容性的文档

乌本图/德比安/拉斯比安

sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev libusb-1.0-0-dev

确保 node 在你的路上,如果没有,一些选择:

Fedora/ 基于其他RPM

sudo yum install bluez bluez-libs bluez-libs-devel

爱迪生情报

见 为 Bluetooth LE (Smart) 开发配置信息爱迪生

免费BSD

确保您有 GNU Make :

sudo pkg install gmake

禁用默认蓝牙堆栈的自动加载 无怀疑.conf 输入 /usr/local/etc/devd/no-ubt.conf 并重新启动devd(sudo service devd restart) (中文(简体) ).

卸载 ng_ubt 如果已装入内核模块 :

sudo kldunload ng_ubt

请确认您已读取和写入权限 /dev/usb/* 与您的蓝牙适配器对应的设备.

窗口

安装

npm install bleno@npm:@abandonware/bleno

使用量

var bleno = require('bleno');

见 示例文件夹 代码示例.

行动

广告

开始广告

注: bleno.state 必须是 poweredOn 在广告开始前. bleno.on('stateChange', callback(state)); 可用于状态更改事件.

var name = 'name';
var serviceUuids = ['fffffffffffffffffffffffffffffff0']

bleno.startAdvertising(name, serviceUuids[, callback(error)]);

说明:: 对UUID的名称和服务有限制

  • 名称
    • 最大 26 字节
  • 服务UUUID
    • 1 128 位服务 UUID
    • 1 128位服务 UUID + 2 16位服务 UUID
    • 7 16 位服务 UUID
开始广告iBeacon
var uuid = 'e2c56db5dffb48d2b060d0f5a71096e0';
var major = 0; // 0x0000 - 0xffff
var minor = 0; // 0x0000 - 0xffff
var measuredPower = -59; // -128 - 127

bleno.startAdvertisingIBeacon(uuid, major, minor, measuredPower[, callback(error)]);

注释:数字 :

  • 操作系统X:
    • 在iBeacon模式下, 您的外围无法连接 !
开始使用 EIR 数据进行广告(仅限 Linux(中文(简体) )
var scanData = Buffer.alloc(...); // maximum 31 bytes
var advertisementData = Buffer.alloc(...); // maximum 31 bytes

bleno.startAdvertisingWithEIRData(advertisementData[, scanData, callback(error)]);
停止广告
bleno.stopAdvertising([callback]);

设置服务

设置周边可用的初级服务.

var services = [
   ... // see PrimaryService for data type
];

bleno.setServices(services[, callback(error)]);

断开客户端

bleno.disconnect(); // Linux only

更新 RSSI

bleno.updateRssi([callback(error, rssi)]); // not available in OS X 10.9

小学

var PrimaryService = bleno.PrimaryService;

var primaryService = new PrimaryService({
    uuid: 'fffffffffffffffffffffffffffffff0', // or 'fff0' for 16-bit
    characteristics: [
        // see Characteristic for data type
    ]
});

特征

var Characteristic = bleno.Characteristic;

var characteristic = new Characteristic({
    uuid: 'fffffffffffffffffffffffffffffff1', // or 'fff1' for 16-bit
    properties: [ ... ], // can be a combination of 'read', 'write', 'writeWithoutResponse', 'notify', 'indicate'
    secure: [ ... ], // enable security for properties, can be a combination of 'read', 'write', 'writeWithoutResponse', 'notify', 'indicate'
    value: null, // optional static value, must be of type Buffer - for read only characteristics
    descriptors: [
        // see Descriptor for data type
    ],
    onReadRequest: null, // optional read request handler, function(offset, callback) { ... }
    onWriteRequest: null, // optional write request handler, function(data, offset, withoutResponse, callback) { ...}
    onSubscribe: null, // optional notify/indicate subscribe handler, function(maxValueSize, updateValueCallback) { ...}
    onUnsubscribe: null, // optional notify/indicate unsubscribe handler, function() { ...}
    onNotify: null, // optional notify sent handler, function() { ...}
    onIndicate: null // optional indicate confirmation received handler, function() { ...}
});

结果代码

  • 特征. RESULT SUCCESS
  • 特征. RESULT INVALID OFFSET
  • 特征. RESULT INVALID ATRIBUTE LENGTH
  • 特征. RESULT UNLIKELY 错误

读取请求

可以通过构建器选项指定已读请求处理器, 或者通过扩展“ 读取请求” 的特性和压倒性来指定 .

处理器的参数为

  • offset (0x000- 0xffff) (中文(简体) )
  • callback

callback 必须使用结果和数据(类型) Buffer) -可以是同音.

var result = Characteristic.RESULT_SUCCESS;
var data = Buffer.alloc( ... );

callback(result, data);

写请求

可以通过构建器选项或扩展特性和之上的 Write Request 指定写入请求处理器 .

处理器的参数为

  • data (压力)
  • offset (0x000- 0xffff) (中文(简体) )
  • withoutResponse (真伪)
  • callback。 。 。 .

callback 必须使用结果代码调用 - 可以是同源代码.

var result = Characteristic.RESULT_SUCCESS;

callback(result);

通知订阅

可以通过构建器选项或通过扩展特性和主控程序指定通知用户处理器.

处理器的参数为

  • maxValueSize (最大数据大小)
  • updateValueCallback (值改变时召回)

通知未订阅

可以通过构建器选项或扩展特性和对用户的压倒性来指定通知未订阅的处理器.

通知数值变化

打电话 updateValueCallback 调用( 请参见 Notify 订阅), 带有类型参数 Buffer

可通过建构器选项或通过扩展特性和压倒性通知方式指定已发送处理器.

说明

var Descriptor = bleno.Descriptor;

var descriptor = new Descriptor({
    uuid: '2901',
    value: 'value' // static value, must be of type Buffer or string if set
});

活动

适应器状态变化

state = <"unknown" | "resetting" | "unsupported" | "unauthorized" | "poweredOff" | "poweredOn">

bleno.on('stateChange', callback(state));

广告开始

bleno.on('advertisingStart', callback(error));

bleno.on('advertisingStartError', callback(error));

广告停止

bleno.on('advertisingStop', callback);

服务设置

bleno.on('servicesSet', callback(error));

bleno.on('servicesSetError', callback(error));

接受

bleno.on('accept', callback(clientAddress)); // not available on OS X 10.9

断开连接

bleno.on('disconnect', callback(clientAddress)); // Linux only

RSSI 更新

bleno.on('rssiUpdate', callback(rssi)); // not available on OS X 10.9

在 Linux 上运行

说明: 确定你也检查过 Linux 先决条件

无根/ sudo 运行

运行以下命令 :

sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)

这允许 node 二进制 cap_net_raw 权限,因此可以开始/停止BLE广告.

说明: 上述命令要求 setcap 要安装,可以使用下列设备安装:

  • 时间: sudo apt-get install libcap2-bin
  • y: su -c \'yum install libcap2-bin\'

多个适配器

hci0 默认使用以推翻设置 BLENO_HCI_DEVICE_ID 环境变量到接口编号.

示例,指定 hci1数字 :

sudo BLENO_HCI_DEVICE_ID=1 node <your file>.js

设置自定义设备名称

默认 bleno 使用主机名(require('os').hostname())作为设备名(0x2a00)字符isic的值,以匹配OS X的行为.

自定义设备名称可以通过设置 BLENO_DEVICE_NAME 环境变量 :

sudo BLENO_DEVICE_NAME="custom device name" node <your file>.js

或者说

process.env['BLENO_DEVICE_NAME'] = 'custom device name';

设置广告间距

bleno默认使用100ms的广告间隔.

设置自定义广告间隔可以指定 BLENO_ADVERTISING_INTERVAL 环境变量,以毫秒计:

sudo BLENO_ADVERTISING_INTERVAL=500 node <your file>.js

广告间隔必须在20至10 s(10,000 ms)之间.

许可证

版权(C)2015 Sandep Mistry [email protected] (英语)

特此准许任何人免费获得本软件和相关文件文件("软件")的副本,不受限制地在软件中进行交易,包括不受限制地享有软件的使用、复制、修改、合并、出版、分发、分版和(或)销售的权利,并允许软件获得者这样做,但须符合下列条件: 1

上述版权通知和许可通知应载入软件的所有副本或大部分.

软件是提供的"AS IS", 没有任何种类的恐惧, 释放或被卷入, 包括但不限制在 危机的保障, 证明一个特定的目的和无关。 任何索赔、索赔或其他负债,无论是合同、交易或其他行为,产生于、产生于或涉及软件或软件的使用或其他交易的行为,都不得作为担保.

Analytics

版本与发布记录

@abandonware/bleno 共发布 8 个版本,首次发布于 2019/07/24;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.6.2latest2025/02/061.8 年前
0.6.12023/07/083 年前
0.6.02023/07/013 年前
0.5.1-42021/04/155 年前
0.5.1-32020/11/046 年前
0.5.1-22020/03/056 年前

关于 @abandonware/bleno 的常见问题

@abandonware/bleno 是什么?

用于实施BLE(蓝牙低能)外围的节点.js模块

如何安装 @abandonware/bleno?

在项目目录运行 npm install @abandonware/bleno,或使用 pnpm add / yarn add / bun add。

@abandonware/bleno 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@abandonware/bleno 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@abandonware/bleno 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@abandonware/bleno 可以商用吗?

@abandonware/bleno 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@abandonware/bleno 的下载量有多少?

根据 npm 官方下载统计,@abandonware/bleno 在 2026/10/05 – 2026/11/03 这 30 天内被下载 7,447 次,日均约 248 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@abandonware/bleno 还在维护吗?

最新版本 0.6.2 发布于 2025/02/06(1.8 年前);至今共发布 8 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/07/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。