Skip to content

IoT 设备统一规范

作者: 罗耀生 日期: 2026-01-07 版本: v1.1


1. 硬件行为规范

1.1 状态指示 (LED)

LED 状态含义
闪烁 (500ms 间隔)BLE 配网模式,等待连接
常亮正常运行 (已连接 MQTT)
快闪 (100ms 间隔)WiFi 连接中
慢闪 (2s 间隔)MQTT 连接中
熄灭关机或错误

1.2 按键操作

操作行为
长按 BOOT 1秒提示即将重置 (LED 变化)
长按 BOOT 3秒强制重置,清除配置,进入 BLE 配网模式
松开按键 <3秒取消重置

1.3 上电行为

首次上电 -> 检查配置 -> 无 WiFi -> BLE 配网模式
已配置上电 -> 检查配置 -> 连接 WiFi -> 连接 MQTT -> 正常运行
WiFi 失败 -> 自动回到 BLE 配网模式

2. 产品命名规范

产品类型PRODUCT_KEYBLE 前缀固件目录
舵机开关SW-SERVO-001IoT-Switch-firmware/switch
USB 唤醒USB-WAKEUP-S3IoT-Wakeup-firmware/usb-wakeup

命名规则:

  • PRODUCT_KEY: 大写字母,- 分隔,描述性强
  • BLE 前缀: IoT- + 产品类型 + -
  • 统一使用 4 字符后缀 (MAC 后 4 位)

3. BLE 配网统一规范

3.1 UUID 规范 (所有设备统一)

Service UUID: 0000FFE0-0000-1000-8000-00805F9B34FB
WiFi Char:    0000FFE1-0000-1000-8000-00805F9B34FB
Status Char:  0000FFE2-0000-1000-8000-00805F9B34FB

3.2 数据格式 (JSON)

发送 WiFi 配置:

json
{
  "ssid": "WiFi名称",
  "password": "WiFi密码",
  "apiUrl": "http://192.168.21.77:48080"  // 可选
}

状态通知:

json
{
  "status": "received|wifi_connected|activated|error",
  "message": "详细信息"
}

4. 新增设备清单

开发新设备时,确保以下项目完成:

4.1 固件端

  • [ ] PRODUCT_KEY 已定义
  • [ ] BLE 前缀使用 IoT- 开头
  • [ ] BLE UUID 使用统一值
  • [ ] 实现长按 BOOT 3秒重置
  • [ ] LED 状态指示完整
  • [ ] 支持自定义 API 地址

4.2 服务端

  • [ ] 在 products 表中创建产品记录
  • [ ] 配置正确的 mqtt_topicscapabilities

4.3 APP 端

  • [ ] 在 ble_service.dart 中添加 BLE 前缀
  • [ ] 如需特殊控制面板,实现对应 UI

4.4 文档

  • [ ] 更新本文档的产品列表
  • [ ] 记录特殊配置说明

5. GPIO 统一规范

功能引脚说明
LED_BUILTIN2板载 LED (ESP32)
CONFIG_BUTTON0BOOT 按键

6. 环境变量规范

变量名默认值说明
REDIS_HOSTlocalhostRedis 地址
REDIS_PORT47379Redis 端口
REDIS_DEVICE_TTL120设备在线超时(秒)
DB_HOSTlocalhostMySQL 地址
DB_PORT44306MySQL 端口

7. 修改历史

日期版本修改内容作者
2026-01-07v1.0初始版本,统一规范罗耀生
2026-01-10v1.1修复固件目录路径罗耀生