目录
3.关键代码(简化示例,使用 aws-iot-device-sdk-embedded-C demo 风格)
五、Java 后端(Spring Boot + AWS IoT Device SDK v2)
1.Rules 引擎(把 telemetry 写入 DynamoDB)
七、Fleet Provisioning & Device Provisioning(大量设备上云)

一、总体架构(概览)
设备(ESP32) ⇄ MQTT/TLS ⇄ AWS IoT Core(Message Broker)
AWS IoT Core → Rules Engine →(Lambda / DynamoDB / S3 / Kinesis)
AWS IoT Core ↔ Thing Shadow(设备状态同步)
Java 后端(可用 AWS IoT Device SDK for Java v2)负责订阅主题、处理业务、存 DB 与提供 WebSocket/REST 给前端。
简化时序:
-
ESP32 启动并用 X.509 证书通过 TLS(端口 8883)连接到 AWS IoT Data endpoint。(AWS 文档)
-
设备发布 telemetry 到
esp/{deviceId}/telemetry;Java 后端订阅或 Rules Engine 转发到 DynamoDB。(AWS 文档) -
管理端通过 REST/WS 向 Java 后端请求远程控制;后端对 AWS 发布命令到
esp/{deviceId}/cmd,或修改 Shadow。
二、必须的 AWS 资源
-
IoT Thing、证书 (X.509)、Policy(策略) — 证书需下载并保存在设备。(AWS 文档)
-
Rules(Rules Engine)设置消息路由(写入 DynamoDB / 调用 Lambda / 写 S3)。(AWS 文档)
-
DynamoDB(事件存储),S3(批量上传),Lambda(处理逻辑),IAM Roles(Rule Actions 用)。
-
(可选)IoT Jobs(OTA)、Fleet Provisioning(大量设备证书自动化)与 Device Defender(审计)。(GitHub)
三、MQTT Topic 设计
设计原则:主题简洁、分层、支持权限控制(policy)。
示例:
-
设备上报 telemetry:
esp/{deviceId}/telemetry -
设备状态(心跳):
esp/{deviceId}/status -
设备日志(可选):
esp/{deviceId}/log -
远程命令(Server -> Device):
esp/{deviceId}/cmd -
广播命令(所有设备):
esp/all/cmd -
OTA/Jobs(由 AWS Jobs 管理)不走普通 topic,使用 Jobs 服务。
Policy 示例片段:允许设备仅对自己主题 publish/subscribe。注意用最小权限原则。
四、ESP32(ESP-IDF)端实现(要点 + 示例)
建议:使用 AWS IoT Device SDK for Embedded C / ESP-AWS-IoT(Espressif 提供)或直接用 mbedTLS + Paho/Minimal MQTT。Espressif 官方/示例对 ESP32 支持很友好。
1.准备证书与文件
将下面四个文件放到设备文件系统或固件中(示例路径 /spiffs/certs/):
-
AmazonRootCA1.pem(AWS 根 CA) -
certificate.pem.crt(Device certificate) -
private.pem.key(Device private key) -
可选:
public.pem.key/ 中间证书
获取 Data endpoint:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
该 endpoint 是设备连接到 AWS 的主机名(例如 xxxxxxxxxx-ats.iot.us-east-1.amazonaws.com)。(AWS 文档)
2.ESP-IDF 项目结构(示例)
esp32-aws-iot/
├─ main/
│ ├─ main.c
│ └─ aws_iot_config.h
├─ components/
├─ certs/
│ ├─ AmazonRootCA1.pem
│ ├─ certificate.pem.crt
│ └─ private.pem.key
└─ sdkconfig


3107

被折叠的 条评论
为什么被折叠?



