Skip to content
/ weble Public

BLE Explorer for Web

Notifications You must be signed in to change notification settings

hanabix/weble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

蓝牙设备扫描器 PWA

一个基于 Web Bluetooth API 的渐进式 Web 应用(PWA),用于扫描、连接和管理蓝牙设备。

功能特性

  • 🔍 扫描蓝牙设备:扫描并列出所有可见的蓝牙设备
  • 🔗 设备连接:与选定的蓝牙设备进行配对和连接
  • 📊 设备信息展示:显示已连接设备的详细信息,包括:
    • 设备名称和 ID
    • 可用的 GATT 服务
    • 服务特征及其属性
    • 可读特征的实时数值
  • 📱 PWA 支持:可以安装到桌面或移动设备主屏幕
  • 🎨 现代化界面:响应式设计,支持移动端和桌面端

技术栈

  • HTML5
  • CSS3(响应式设计)
  • JavaScript(ES6+)
  • Web Bluetooth API
  • Service Worker(离线支持)
  • Web App Manifest

浏览器兼容性

该应用需要浏览器支持 Web Bluetooth API,目前支持的浏览器包括:

  • ✅ Chrome 56+(桌面版和 Android)
  • ✅ Edge 79+
  • ✅ Opera 43+
  • ❌ Firefox(目前不支持 Web Bluetooth API)
  • ❌ Safari(目前不支持 Web Bluetooth API)

快速开始

方式一:使用本地服务器

由于 Web Bluetooth API 需要在 HTTPS 环境下运行(localhost 除外),您可以使用以下方式运行:

  1. 克隆或下载此项目
  2. 使用任何静态文件服务器运行,例如:
# 使用 Python 3
python -m http.server 8000

# 使用 Node.js (需要先安装 http-server)
npx http-server -p 8000

# 使用 PHP
php -S localhost:8000
  1. 在浏览器中打开 http://localhost:8000

方式二:部署到支持 HTTPS 的服务器

将所有文件部署到支持 HTTPS 的 Web 服务器(如 GitHub Pages、Netlify、Vercel 等)。

使用说明

  1. 扫描设备

    • 点击"扫描设备"按钮
    • 浏览器会弹出设备选择对话框
    • 选择您想要连接的蓝牙设备
  2. 查看设备信息

    • 成功连接后,应用会自动显示设备的详细信息
    • 包括设备名称、ID、可用服务和特征
    • 对于可读的特征,会显示其当前值
  3. 断开连接

    • 点击"断开连接"按钮可以断开当前设备
  4. 安装应用

    • 在支持的浏览器中,会显示"安装应用"按钮
    • 点击后可以将应用添加到主屏幕

项目结构

bluetooth-pwa/
├── index.html          # 主 HTML 文件
├── styles.css          # 样式文件
├── app.js             # 主应用逻辑
├── sw.js              # Service Worker
├── manifest.json      # PWA 配置文件
├── icon-192.png       # 应用图标(192x192)
├── icon-512.png       # 应用图标(512x512)
└── README.md          # 本文件

核心功能说明

Web Bluetooth API

应用使用 Web Bluetooth API 进行蓝牙设备通信:

  • navigator.bluetooth.requestDevice():请求蓝牙设备访问
  • device.gatt.connect():连接到设备的 GATT 服务器
  • server.getPrimaryServices():获取设备的主要服务
  • service.getCharacteristics():获取服务的特征
  • characteristic.readValue():读取特征值

Service Worker

实现了基本的缓存策略,支持离线访问:

  • 首次加载时缓存所有静态资源
  • 后续访问优先使用缓存
  • 网络失败时回退到缓存

安全性

  • Web Bluetooth API 仅在 HTTPS(或 localhost)环境下可用
  • 用户必须手动选择要连接的设备(浏览器强制要求)
  • 不支持自动扫描或后台连接

限制

  • 需要用户手动触发扫描(出于安全考虑)
  • 某些设备可能需要配对才能访问特定服务
  • 读取某些特征可能需要特定权限

常见问题

Q: 为什么无法扫描到设备? A: 确保:

  • 设备的蓝牙已开启
  • 设备处于可发现模式
  • 使用支持 Web Bluetooth 的浏览器
  • 网站运行在 HTTPS 或 localhost

Q: 为什么连接后看不到某些服务? A: 某些服务可能需要设备配对或特定权限才能访问。

Q: 能否在 iOS Safari 上使用? A: 目前 iOS Safari 不支持 Web Bluetooth API。

参考资料

许可证

本项目采用 MIT 许可证。

贡献

欢迎提交问题和拉取请求!

About

BLE Explorer for Web

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors