ESP32 + AWS IoT Core + Java 后端的完整实战教程

目录

一、总体架构(概览)

二、必须的 AWS 资源

三、MQTT Topic 设计

四、ESP32(ESP-IDF)端实现(要点 + 示例)

1.准备证书与文件

2.ESP-IDF 项目结构(示例)

3.关键代码(简化示例,使用 aws-iot-device-sdk-embedded-C demo 风格)

五、Java 后端(Spring Boot + AWS IoT Device SDK v2)

1.Maven 依赖(pom.xml 核心)

2.连接并订阅示例(核心)

3.与前端交互

六、Rules 引擎 与 Shadow 使用

1.Rules 引擎(把 telemetry 写入 DynamoDB)

2.Thing Shadow(远程控制)

七、Fleet Provisioning & Device Provisioning(大量设备上云)

八、OTA 与 Jobs(固件升级)

九、安全与生产注意事项

十、调试与常见问题

十一、项目交付物/代码模板

README(要包含的内容)

关键文件(示例)

十二、测试计划

十三、参考与官方资源


一、总体架构(概览)

设备(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 给前端。

简化时序:

  1. ESP32 启动并用 X.509 证书通过 TLS(端口 8883)连接到 AWS IoT Data endpoint。(AWS 文档)

  2. 设备发布 telemetry 到 esp/{deviceId}/telemetry;Java 后端订阅或 Rules Engine 转发到 DynamoDB。(AWS 文档)

  3. 管理端通过 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

3.关键代码(简化示例,使用 aws-iot-device-sdk-embedded-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

34号树洞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值