ESP32 HTTPS OTA升级(跳过验证)

参考用例为官方例程simple_ota_example的代码,使用SDK为5.3.1

HTTP本地服务器搭建

如果没有HTTP服务器没有的话下载一个python搭一个本地服务器

命令窗看一下python版本

python --version

python -m http.server 8080创建 http 本地服务器

在浏览器输入以下网址访问http本地服务器:http://127.0.0.1:8080/http://localhost:8080/ 进行访问(如果测试失败,有可能是你电脑上其他软件占用了端口所致,可尝试更换端口号测试)

项目配置

打开 idf.py menuconfig

因为我的服务器没加验证,需要跳过https验证

这里也需要允许http ota(按理说我的也是https 只不过没加验证 不知道为什么必须要打开这里才能正常运行 可能识别到我的是http了?)

OTA分区表

可以参考官方文档自定义分区表创建以及烧录

指路:OTA分区表

我的是自定义分区表,需要去menucofig开启Custom partition CSV file 输入自己的文件名,文件放在main同级目录下

我的CSV如图

然后执行idf.py partition-table

再烧录程序后打印如下图


到这里的话,前期准备基本结束开始代码环节


核心代码

直接参考官方用例copy过来用,这里就是开启ota升级的核心代码

void ota_update(void)
{
    esp_http_client_config_t config = {
        .url = "https://xxx/xxx/xxx.bin",
     //url这里应该用http 因为我用的https但是无验证就放在这里了
        .event_handler = _http_event_handler,
     //直接拷贝simple_ota_example里的_http_event_handler行了
    };

    esp_https_ota_config_t ota_config = {
        .http_config = &config,
    };
    LOG_I("Attempting to download update from %s", config.url);
    esp_err_t ret = esp_https_ota(&ota_config);
    if (ret == ESP_OK)
    {
        LOG_I("OTA Succeed, Rebooting...");
        esp_restart();
    }
    else
    {
        LOG_I("Firmware upgrade failed");
    }
} 

我的项目流程是,先wifi配网-- >连接MQTT-->接收ota请求-->执行ota_update()

这部分代码不好展示,有问题可留言,也可以去首页,公告有我的联系方式。

posted @ 2024-12-20 16:51  sixteenccc  阅读(21)  评论(1编辑  收藏  举报