ESP32的OTA固件升级功能+联网+温湿度信息实时网络监控
本项目演示了如何通过MQTT消息触发ESP32的OTA固件升级功能,设备会自动从指定URL下载并更新固件,无需手动指定设备IP地址。
[*]ESP32连接到指定WiFi网络
[*]连接到MQTT服务器
[*]监听指定的MQTT主题
[*]当收到OTA更新指令时,自动从指定URL下载固件并执行升级
[*]在SSD1306 OLED屏幕上显示设备信息(MAC地址、IP地址、版本号、MQTT主题)
[*]GPIO2 (D4) LED指示灯功能:
[*]正常运行时:每秒闪烁一次
[*]OTA升级期间:快速闪烁(100ms间隔)
[*]OTA升级完成后:恢复正常闪烁
[*]屏幕显示增强功能:
[*]第一屏:显示设备基本信息(MAC地址、IP地址、版本号、MQTT主题)
[*]第二屏:显示当前日期和时间(从NTP服务器获取)
[*]时区信息(UTC+8)
[*]第三屏:显示温湿度信息
[*]三屏每10秒自动切换显示
[*]温湿度数据MQTT发布功能:
[*]每10分钟自动采集并发布一次温湿度数据到MQTT服务器
[*]数据包含设备ID、MAC地址、温度、湿度和时间戳
[*]OTA更新MAC地址验证功能:
[*]支持带MAC地址验证的OTA更新消息
[*]只有MAC地址匹配的设备才会执行OTA更新
[*]提高了OTA更新的安全性和精确性
[*]向后兼容不带MAC地址的OTA更新消息
[*]MQTT消息实时显示功能:
[*]接收到任何MQTT消息时立即在屏幕上显示
[*]消息显示最多持续30秒
[*]短消息单行显示,长消息多行显示
[*]内容过多时自动启用滚动显示,滚动间隔为1秒
[*]显示结束后自动恢复三屏循环
屏幕显示信息设备连接成功后,SSD1306屏幕将循环显示以下信息:
[*]第一屏:
[*]MAC地址
[*]IP地址
[*]固件版本号
[*]MQTT订阅主题
[*]第二屏:
[*]当前日期(年-月-日)
[*]当前时间(时:分:秒)
[*]时区信息(UTC+8)
[*]第三屏:
[*]温度(℃)
[*]湿度(%)
配置说明在src/config/Constants.h中配置以下参数:// MQTT服务器配置const char* const MQTT_BROKER = "your_mqtt_broker";const int MQTT_PORT = 8883;const char* const MQTT_TOPIC = "your_mqtt_topic";const char* const MQTT_USERNAME = "your_mqtt_username";const char* const MQTT_PASSWORD = "your_mqtt_password";// 固件版本号const char* const FIRMWARE_VERSION = "1.0.8";注意:WiFi配置已移至v1.0.8版本中通过WiFiManager动态配置,无需在代码中硬编码。OTA更新消息格式向MQTT主题发送以下JSON格式的消息来触发OTA更新:基本OTA更新消息格式(向后兼容)``json { "ota_update": "true", "ota_url": "http://example.com/firmware.bin", "version": "1.0.6" }所有接收到此消息的设备都会尝试执行OTA更新。### 带MAC地址验证的OTA更新消息格式(推荐)``json{"ota_update": "true","mac_address": "4C:EB:D6:1F:E8:3B","ota_url": "http://example.com/firmware.bin","version": "1.0.6"}当消息中包含(file:///Users/nixs/Desktop/ESP8266/OTA/ota_002/src/mqtt/MQTTHandler.cpp#L29-L29)字段时,设备会验证该MAC地址是否与自身的MAC地址匹配:
[*]只有匹配的设备才会执行OTA更新
[*]其他设备会忽略该消息并输出调试信息
[*]MAC地址比较不区分大小写,确保兼容性
OTA更新安全性和精确性MAC地址验证功能大大提高了OTA更新的安全性和精确性:
[*]安全性提升:只有目标设备才会接收和执行OTA更新,防止非目标设备误更新
[*]精确性提升:可以精确控制哪些设备需要更新,避免批量更新时的误操作
[*]调试友好:当MAC地址不匹配时,会在串口输出详细的调试信息,包括目标MAC和设备MAC
页:
[1]