fastbee/yack-mini
2026-09-26 18:37:40 +08:00
..
miniprogram 20260905:微信小程序-蓝牙采集网关-设备详情页面样式布局优化 2026-09-06 15:29:06 +08:00
.gitignore 20260905:本地调试小程序 2026-09-05 13:39:38 +08:00
project.config.json 20260905:本地调试小程序 2026-09-05 13:39:38 +08:00
README.md 20260905:微信小程序-蓝牙采集网关 2026-09-05 10:19:07 +08:00

yack-mini

yack 蓝牙网关微信小程序,采集 BLE 设备数据透传上报至 yack 平台。

项目定位

  • 技术栈:原生微信小程序
  • 目标:轻量化蓝牙网关,透传数据至 yack
  • 与 yack-app 区别:yack-app 是全功能移动端(UniApp),yack-mini 是轻量蓝牙网关(原生小程序)

架构概览

┌─────────────┐   BLE    ┌──────────────────┐   wxs    ┌─────────────────┐
│  BLE 设备   │ ←──────→ │  yack-mini       │ ←──────→ │  yack 平台      │
│  (传感器)   │          │  (微信小程序)     │   MQTT  │  (数据存储)     │
└─────────────┘          └──────────────────┘          └─────────────────┘

目录结构

yack-mini/
├── project.config.json         # 项目配置
└── miniprogram/                # 小程序源码
    ├── app.js                  # 应用入口
    ├── app.json                # 全局配置
    ├── app.wxss                # 全局样式
    ├── env.config.js           # 环境配置(API/MQTT 地址)
    ├── sitemap.json            # 站点地图
    │
    ├── pages/                  # 页面
    │   ├── login/              # 登录页
    │   ├── index/              # 首页(设备列表)
    │   └── device/
    │       ├── scan/           # 扫描设备页
    │       └── detail/         # 设备详情/实时数据页
    │
    ├── services/               # 核心服务模块
    │   ├── ble.js              # 蓝牙采集模块
    │   └── mqtt-client.js      # MQTT 连接模块
    │
    ├── utils/                  # 工具函数
    │   ├── hex.js              # 十六进制转换
    │   ├── storage.js          # 本地存储
    │   ├── auth.js             # MQTT 凭证获取
    │   └── request.js          # HTTP 请求
    │
    ├── components/             # 公共组件
    │   └── device-card/        # 设备卡片组件
    │
    ├── libs/                   # 第三方库
    │   └── mqtt.min.js         # mqtt.js (4.3.7, 支持微信小程序)
    │
    └── assets/                 # 静态资源
        └── images/             # 图片

快速开始

1. 导入项目

  1. 下载并安装 微信开发者工具
  2. 打开微信开发者工具,选择「导入项目」
  3. 项目目录选择 yack-mini
  4. AppID 使用测试号或填写正式 AppID

2. 配置环境

编辑 miniprogram/env.config.js,配置 yack 平台地址:

// 开发环境
const DEV_CONFIG = {
  baseUrl: 'http://localhost:8080',
  mqttServer: 'wxs://localhost:8084/mqtt',
};

// 生产环境
const PROD_CONFIG = {
  baseUrl: 'https://your-domain.com/prod-api',
  mqttServer: 'wxs://your-domain.com/mqtt',
};

3. 替换图片资源

miniprogram/assets/images/ 目录下的图片为占位图,请替换为实际图片:

  • logo.png - 应用 Logo
  • device.png / device-active.png - TabBar 图标
  • device-empty.png - 空状态图
  • ble-scan.png - 扫描页图标
  • default-avatar.png - 默认头像

4. 真机调试

蓝牙功能必须在真机上测试:

  1. 点击「真机调试」
  2. 使用手机扫码预览
  3. 确保手机蓝牙已开启

核心功能

1. 登录认证

  • yack 账号密码登录
  • 获取 Token 和用户信息(含 userId)
  • 登录态持久化存储

2. BLE 设备扫描

  • 初始化蓝牙适配器
  • 扫描周边 BLE 设备
  • 支持按 Service UUID 过滤

3. 设备配置

配置设备参数:

  • 设备名称
  • 设备编号(SN)
  • 产品 ID
  • 产品密钥(用于 MQTT 认证)
  • BLE 服务 UUID(可选)

4. 实时数据采集

  • BLE 连接与数据监听
  • 十六进制数据展示
  • 自动/手动上报到 yack

5. MQTT 数据上报

  • 连接 yack MQTT Broker(wxs:// 协议)
  • 发布属性数据到 /{productId}/{sn}/property/post
  • 支持订阅下发指令

MQTT 认证说明

设备连接 yack MQTT Broker 的凭证格式:

参数 格式 示例
clientId S&{设备编号}&{产品ID}&{用户ID} S&BLE001&1&100
username {设备编号} BLE001
password {产品密钥} abc123

数据上报格式

BLE 设备数据以十六进制字符串上报:

// Modbus 帧示例
mqttClient.publish('/1/BLE001/property/post', '010304009A005B8B7C');

// 私有协议示例
mqttClient.publish('/1/BLE002/property/post', '009A005B');

yack 平台通过规则脚本或 Modbus 配置解析数据。

微信小程序配置

服务器域名

在微信公众平台配置:

  • socket 合法域名:wxs://your-domain.com
  • request 合法域名:https://your-domain.com

权限说明

  • scope.bluetooth:蓝牙权限(部分设备需要用户授权)
  • scope.userLocation:部分 Android 设备扫描 BLE 需要位置权限

开发调试

BLE 调试

  1. 使用真机调试
  2. 查看 Console 日志,前缀 [BLE]
  3. 使用 nRF Connect 等工具验证 BLE 设备

MQTT 调试

  1. 查看 Console 日志,前缀 [MQTT]
  2. 使用 MQTT 客户端工具验证连接
  3. 确保 wxs:// 域名已在微信公众平台配置

注意事项

  1. 蓝牙权限:iOS 无需额外授权,Android 可能需要位置权限
  2. MQTT 协议:微信小程序必须使用 wxs:// 协议(端口 8084)
  3. 数据格式:BLE 数据需转换为十六进制字符串上报
  4. 包体积:主包控制在 1.5MB 以内

相关文档

License

MIT