技术栈回顾
技术栈回顾
本节对课程中使用的完整技术栈进行系统性回顾。我们按数据流的顺序,从设备端到展示端逐一分析每个组件的功能定位、版本选择和配置要点,帮助售前工程师建立全栈技术认知。
学习完成后您将能够:
- 描述 IoT 方案的五层技术栈结构
- 理解每个组件在数据流中的角色
- 回答买家关于技术栈的常见问题
- 根据需求推荐合适的技术组合
Five-Layer Technology Stack
Section titled “Five-Layer Technology Stack”Layer 1: Device Layer(设备层)
Section titled “Layer 1: Device Layer(设备层)”核心组件: ESP32 系列微控制器
| 型号 | 适用场景 | 特点 |
|---|---|---|
| ESP32 DevKit | 开发原型、通用场景 | 最主流,GPIO 丰富 |
| ESP32-S3 | AI/ML 场景 | 向量指令集,更多内存 |
| ESP32-C3 | 低功耗场景 | RISC-V 架构,成本低 |
| ESP32-XIAO | 超小型产品 | 拇指大小,适合嵌入式 |
| ESP32-CAM | 图像场景 | 集成摄像头,支持 AI |
| ESP32-Tower | 教育场景 | 集成显示屏、按键 |
通信外设:
- WIFI: 802.11 b/g/n(2.4 GHz)
- Bluetooth: BLE 4.2/5.0
- I2C: 传感器通信
- SPI: 显示屏通信
- I2S: 音频通信
- UART: 串口通信
- ADC: 模拟信号采集
Layer 2: Communication Layer(通信层)
Section titled “Layer 2: Communication Layer(通信层)”核心协议: MQTT(Message Queuing Telemetry Transport)
| 特性 | 说明 | 优势 |
|---|---|---|
| 协议版本 | MQTT v3.1.1 / v5.0 | 广泛兼容 |
| 传输层 | TCP(默认)/ TLS(加密) | 灵活选择 |
| QoS 级别 | 0/1/2 | 按需可靠性 |
| 默认端口 | 1883(明文)/ 8883(TLS) | 标准化 |
| 最大 payload | 256 MB | 支持大数据 |
| 心跳机制 | Keep Alive + PINGREQ | 连接保活 |
MQTT Broker: Mosquitto
| 功能 | 配置项 | 说明 |
|---|---|---|
| 匿名访问 | allow_anonymous true | 开发环境 |
| 密码认证 | password_file | 生产环境 |
| TLS 加密 | cafile/certfile/keyfile | 安全环境 |
| WebSocket | listener 9001 | 浏览器连接 |
| 桥接 | connection | 跨网络连接 |
Layer 3: Processing Layer(处理层)
Section titled “Layer 3: Processing Layer(处理层)”核心平台: Node-RED
| 功能 | 说明 | 典型应用 |
|---|---|---|
| MQTT 节点 | 消息收发 | 数据采集与转发 |
| HTTP 节点 | REST API | 第三方集成 |
| Function 节点 | JavaScript 编程 | 业务逻辑处理 |
| Dashboard 节点 | 可视化面板 | 实时数据展示 |
| SQLite/InfluxDB 节点 | 数据存储 | 持久化保存 |
| Email/Telegram 节点 | 通知推送 | 告警通知 |
Node-RED 安全配置:
- 管理员账户和密码
- HTTPS 访问(反向代理)
- Flow 加密存储
- 沙箱 Function 执行
Layer 4: Storage Layer(存储层)
Section titled “Layer 4: Storage Layer(存储层)”时序数据库: InfluxDB OSS(开源版)
| 特性 | 说明 | IoT 场景价值 |
|---|---|---|
| 数据模型 | Measurement + Tag + Field | 灵活适配传感器数据 |
| 存储引擎 | TSM(Time-Structured Merge Tree) | 高效时序数据压缩 |
| 保留策略 | Retention Policy(RP) | 自动数据老化 |
| 持续查询 | Continuous Query(CQ) | 实时数据聚合 |
| 查询语言 | Flux 或 InfluxQL | 强大的时序分析 |
数据存储策略:
原始数据:保留 7 天(高频采样)聚合数据:保留 30 天(分钟级聚合)摘要数据:保留 12 个月(小时级聚合)Layer 5: Visualization Layer(展示层)
Section titled “Layer 5: Visualization Layer(展示层)”可视化平台: Grafana OSS(开源版)
| 功能 | 说明 | 售前展示价值 |
|---|---|---|
| Dashboard | 自定义面板 | 实时数据可视化 |
| Alerting | 告警规则 | 异常通知 |
| Annotation | 事件标注 | 关键事件标记 |
| Variables | 模板变量 | 动态过滤 |
| Panel 类型 | Graph/Stat/Table/Gauge | 多样化展示 |
Data Flow Architecture
Section titled “Data Flow Architecture”完整的 IoT 数据流:
传感器 → ESP32(采集) → MQTT(传输) → Node-RED(处理) → InfluxDB(存储) → Grafana(展示) ▲ │ │ ◄────── 控制流 ◄────── │ └───────────────────────────────────────────────────────────────────────────┘数据流各阶段说明:
| 阶段 | 组件 | 处理内容 | 数据格式 |
|---|---|---|---|
| 采集 | ESP32 | 传感器读取 | 模拟→数字 |
| 传输 | MQTT | 消息发布 | JSON |
| 处理 | Node-RED | 解析/转换/路由 | JavaScript Object |
| 存储 | InfluxDB | 时序写入 | Line Protocol |
| 展示 | Grafana | 查询/渲染 | 图表/数值 |
Open Source License Review
Section titled “Open Source License Review”在方案中使用到的开源组件及其许可证:
| 组件 | 许可证 | 适用范围 |
|---|---|---|
| ESP32 Arduino Core | LGPL-2.1 | 嵌入式代码 |
| Mosquitto | EPL-2.0 / EDL-1.0 | Broker |
| Node-RED | Apache-2.0 | 流处理 |
| InfluxDB OSS | MIT | 时序数据库 |
| Grafana OSS | AGPL-3.0 | 可视化平台 |
| Docker Engine | Apache-2.0 | 容器化 |
售前要点: 核心组件均为开源免费软件,无需商业授权费用
Technology Selection Decision Tree
Section titled “Technology Selection Decision Tree”客户需求是什么?├── 数据采集和展示│ ├── 简单 → ESP32 + Node-RED + Grafana│ └── 历史分析 → + InfluxDB├── 远程控制和自动化│ └── MQTT + Node-RED Flow├── 设备管理和维护│ ├── OTA → 固件远程升级│ └── 安全 → TLS 加密└── 系统集成 ├── API → Node-RED HTTP 节点 └── 数据库 → Node-RED Database 节点Summary
Section titled “Summary”本节要点总结:
- IoT 方案技术栈分为五层:设备层、通信层、处理层、存储层、展示层
- MQTT 是各层之间的核心通信协议,支持灵活的安全配置
- Node-RED 作为低代码处理平台,是方案灵活性的关键
- InfluxDB + Grafana 提供完整的时序数据存储和可视化能力
- 核心组件均为开源免费,显著降低方案成本