# ESP32Update **Repository Path**: zangDid/esp32-update ## Basic Information - **Project Name**: ESP32Update - **Description**: esp32更新固件小工具,支持http - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP32程序更新工具 一个简单的ESP32程序更新工具,通过HTTP服务实现OTA(Over-The-Air)更新。 ## 功能特性 1. **文件选择**: 通过文件对话框选择ESP32新程序文件(.bin) 2. **拖拽支持**: 支持将文件拖拽到窗口(需要安装tkinterdnd2) 3. **HTTP文件服务**: 自动启动HTTP服务器(端口80),将文件复制到服务目录 4. **发送更新请求**: 向ESP32发送HTTP POST请求,触发OTA更新 ## 安装依赖 基础版本(仅支持点击选择文件): ```bash # 无需额外依赖,使用Python标准库 ``` 完整版本(支持拖拽功能): ```bash pip install tkinterdnd2 ``` ## 使用方法 1. 运行程序: ```bash python esp32_updater.py ``` 2. 选择ESP32程序文件: - 点击"选择文件"按钮 - 或将文件拖拽到拖拽区域(需要安装tkinterdnd2) 3. 输入ESP32的IP地址 4. 点击"发送更新请求"按钮 ## HTTP接口说明 ### 更新接口 - **URL**: `http:///upgrade` - **方法**: POST - **Content-Type**: application/json - **请求体**: ```json { "url": "http:///" } ``` ## ESP32端实现示例 ESP32需要实现对应的OTA更新接口,参考代码: ```cpp #include #include #include #include void handleUpgrade() { // 解析JSON StaticJsonDocument<256> doc; deserializeJson(doc, server.arg("plain")); String url = doc["url"]; // 下载并更新 HTTPClient http; http.begin(url); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { int len = http.getSize(); WiFiClient * stream = http.getStreamPtr(); if (Update.begin(len)) { size_t written = Update.writeStream(*stream); if (Update.end()) { server.send(200, "text/plain", "Update Success"); ESP.restart(); } } } http.end(); } ``` ## 注意事项 1. 程序需要管理员权限才能使用80端口 2. 确保电脑和ESP32在同一局域网 3. 防火墙需要允许80端口的入站连接 4. 如果80端口被占用,可以修改代码中的端口号 ## 目录结构 ``` esp32更新程序工具/ ├── esp32_updater.py # 主程序 ├── README.md # 说明文档 └── http_server_files/ # HTTP服务器文件目录(自动创建) ``` ## 许可证 MIT License