{"id":31202201,"url":"https://github.com/ipdotsetaf/espasynchttpupdateserver","last_synced_at":"2025-10-10T17:45:07.914Z","repository":{"id":220527698,"uuid":"751877992","full_name":"IPdotSetAF/ESPAsyncHTTPUpdateServer","owner":"IPdotSetAF","description":"A Simple OTA web page implemented over ESPAsyncWebServer(by me-no-dev)","archived":false,"fork":false,"pushed_at":"2025-08-23T17:47:47.000Z","size":406,"stargazers_count":62,"open_issues_count":8,"forks_count":19,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-20T13:45:07.693Z","etag":null,"topics":["async","esp","esp32","esp32-arduino","esp8266","esp8266-arduino","ota","ota-update","platformio","webserver"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IPdotSetAF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-02T14:24:23.000Z","updated_at":"2025-09-07T07:48:29.000Z","dependencies_parsed_at":"2025-09-20T13:45:04.735Z","dependency_job_id":"61e075c6-00b4-474e-b21d-ca3c1a1dd49c","html_url":"https://github.com/IPdotSetAF/ESPAsyncHTTPUpdateServer","commit_stats":null,"previous_names":["ipdotsetaf/espasynchttpupdateserver"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/IPdotSetAF/ESPAsyncHTTPUpdateServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IPdotSetAF%2FESPAsyncHTTPUpdateServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IPdotSetAF%2FESPAsyncHTTPUpdateServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IPdotSetAF%2FESPAsyncHTTPUpdateServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IPdotSetAF%2FESPAsyncHTTPUpdateServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IPdotSetAF","download_url":"https://codeload.github.com/IPdotSetAF/ESPAsyncHTTPUpdateServer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IPdotSetAF%2FESPAsyncHTTPUpdateServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004821,"owners_count":26083784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","esp","esp32","esp32-arduino","esp8266","esp8266-arduino","ota","ota-update","platformio","webserver"],"created_at":"2025-09-20T13:44:58.836Z","updated_at":"2025-10-10T17:45:07.883Z","avatar_url":"https://github.com/IPdotSetAF.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=left\u003e\n   \u003ca href=\"https://registry.platformio.org/libraries/ipdotsetaf/ESPAsyncHTTPUpdateServer\"\u003e\u003cimg src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Frepos%2FIPdotSetAF%2FESPAsyncHTTPUpdateServer%2Freleases%2Flatest\u0026query=%24.tag_name\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMjUwMCIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI%20PHBhdGggZD0iTTEyOCAwQzkzLjgxIDAgNjEuNjY2IDEzLjMxNCAzNy40OSAzNy40OSAxMy4zMTQgNjEuNjY2IDAgOTMuODEgMCAxMjhjMCAzNC4xOSAxMy4zMTQgNjYuMzM0IDM3LjQ5IDkwLjUxQzYxLjY2NiAyNDIuNjg2IDkzLjgxIDI1NiAxMjggMjU2YzM0LjE5IDAgNjYuMzM0LTEzLjMxNCA5MC41MS0zNy40OUMyNDIuNjg2IDE5NC4zMzQgMjU2IDE2Mi4xOSAyNTYgMTI4YzAtMzQuMTktMTMuMzE0LTY2LjMzNC0zNy40OS05MC41MUMxOTQuMzM0IDEzLjMxNCAxNjIuMTkgMCAxMjggMCIgZmlsbD0iI0ZGN0YwMCIvPjxwYXRoIGQ9Ik0yNDkuMzg2IDEyOGMwIDY3LjA0LTU0LjM0NyAxMjEuMzg2LTEyMS4zODYgMTIxLjM4NkM2MC45NiAyNDkuMzg2IDYuNjEzIDE5NS4wNCA2LjYxMyAxMjggNi42MTMgNjAuOTYgNjAuOTYgNi42MTQgMTI4IDYuNjE0YzY3LjA0IDAgMTIxLjM4NiA1NC4zNDYgMTIxLjM4NiAxMjEuMzg2IiBmaWxsPSIjRkZGIi8%20PHBhdGggZD0iTTE2MC44NjkgNzQuMDYybDUuMTQ1LTE4LjUzN2M1LjI2NC0uNDcgOS4zOTItNC44ODYgOS4zOTItMTAuMjczIDAtNS43LTQuNjItMTAuMzItMTAuMzItMTAuMzJzLTEwLjMyIDQuNjItMTAuMzIgMTAuMzJjMCAzLjc1NSAyLjAxMyA3LjAzIDUuMDEgOC44MzdsLTUuMDUgMTguMTk1Yy0xNC40MzctMy42Ny0yNi42MjUtMy4zOS0yNi42MjUtMy4zOWwtMi4yNTggMS4wMXYxNDAuODcybDIuMjU4Ljc1M2MxMy42MTQgMCA3My4xNzctNDEuMTMzIDczLjMyMy04NS4yNyAwLTMxLjYyNC0yMS4wMjMtNDUuODI1LTQwLjU1NS01Mi4xOTd6TTE0Ni41MyAxNjQuOGMtMTEuNjE3LTE4LjU1Ny02LjcwNi02MS43NTEgMjMuNjQzLTY3LjkyNSA4LjMyLTEuMzMzIDE4LjUwOSA0LjEzNCAyMS41MSAxNi4yNzkgNy41ODIgMjUuNzY2LTM3LjAxNSA2MS44NDUtNDUuMTUzIDUxLjY0NnptMTguMjE2LTM5Ljc1MmE5LjM5OSA5LjM5OSAwIDAgMC05LjM5OSA5LjM5OSA5LjM5OSA5LjM5OSAwIDAgMCA5LjQgOS4zOTkgOS4zOTkgOS4zOTkgMCAwIDAgOS4zOTgtOS40IDkuMzk5IDkuMzk5IDAgMCAwLTkuMzk5LTkuMzk4em0yLjgxIDguNjcyYTIuMzc0IDIuMzc0IDAgMSAxIDAtNC43NDkgMi4zNzQgMi4zNzQgMCAwIDEgMCA0Ljc0OXoiIGZpbGw9IiNFNTcyMDAiLz48cGF0aCBkPSJNMTAxLjM3MSA3Mi43MDlsLTUuMDIzLTE4LjkwMWMyLjg3NC0xLjgzMiA0Ljc4Ni01LjA0IDQuNzg2LTguNzAxIDAtNS43LTQuNjItMTAuMzItMTAuMzItMTAuMzItNS42OTkgMC0xMC4zMTkgNC42Mi0xMC4zMTkgMTAuMzIgMCA1LjY4MiA0LjU5MiAxMC4yODkgMTAuMjY3IDEwLjMxN0w5NS44IDc0LjM3OGMtMTkuNjA5IDYuNTEtNDAuODg1IDIwLjc0Mi00MC44ODUgNTEuODguNDM2IDQ1LjAxIDU5LjU3MiA4NS4yNjcgNzMuMTg2IDg1LjI2N1Y2OC44OTJzLTEyLjI1Mi0uMDYyLTI2LjcyOSAzLjgxN3ptMTAuMzk1IDkyLjA5Yy04LjEzOCAxMC4yLTUyLjczNS0yNS44OC00NS4xNTQtNTEuNjQ1IDMuMDAyLTEyLjE0NSAxMy4xOS0xNy42MTIgMjEuNTExLTE2LjI4IDMwLjM1IDYuMTc1IDM1LjI2IDQ5LjM2OSAyMy42NDMgNjcuOTI2em0tMTguODItMzkuNDZhOS4zOTkgOS4zOTkgMCAwIDAtOS4zOTkgOS4zOTggOS4zOTkgOS4zOTkgMCAwIDAgOS40IDkuNCA5LjM5OSA5LjM5OSAwIDAgMCA5LjM5OC05LjQgOS4zOTkgOS4zOTkgMCAwIDAtOS4zOTktOS4zOTl6bS0yLjgxIDguNjcxYTIuMzc0IDIuMzc0IDAgMSAxIDAtNC43NDggMi4zNzQgMi4zNzQgMCAwIDEgMCA0Ljc0OHoiIGZpbGw9IiNGRjdGMDAiLz48L3N2Zz4%3D\u0026label=PIO%20Registry\u0026color=orange\u0026link=https%3A%2F%2Fregistry.platformio.org%2Flibraries%2Fipdotsetaf%2FESPAsyncHTTPUpdateServer\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://www.ardu-badge.com/ESPAsyncHTTPUpdateServer\"\u003e\u003cimg src=\"https://www.ardu-badge.com/badge/ESPAsyncHTTPUpdateServer.svg\"/\u003e\u003c/a\u003e\n   \u003cimg src=\"https://img.shields.io/github/v/release/IPdotSetAF/ESPAsyncHTTPUpdateServer\"/\u003e\n   \u003cimg src=\"https://img.shields.io/github/release-date/IPdotSetAF/ESPAsyncHTTPUpdateServer\"/\u003e\n   \u003cimg src=\"https://img.shields.io/github/last-commit/IPdotSetAF/ESPAsyncHTTPUpdateServer\"/\u003e\n   \u003cimg src=\"https://img.shields.io/github/license/IPdotSetAF/ESPAsyncHTTPUpdateServer\"/\u003e\n   \u003c!--\u003cimg src=\"https://img.shields.io/github/downloads/IPdotSetAF/ESPAsyncHTTPUpdateServer/total\"/\u003e--\u003e\n\u003c/p\u003e\n\n# ESP Async HTTP Update Server\n\nThis is an advanced version [ESP8266HTTPUpdateServer](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266HTTPUpdateServer)/[ESP32's HTTPUpdateServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/HTTPUpdateServer) library, modified to be compatible with [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer) and also add optional Styling 🌈 to the page.\n\nIt will provide a webpage for updating the firmware/filesystem of `ESP8266` or `ESP32` microcontrollers.\n\n\u003e [!IMPORTANT]\n\u003e If you found this library helpful, please consider leaving a Star⭐\n\u003e \n\u003e It helps a lot in maintaining the project ❤️\n\n## Features\n- Supports:\n    - ESP8266\n    - ESP32\n- Can Update:\n    - Firmware\n    - FileSystem\n- Styling:\n    - Stylized (Additional ~350 bytes)\n    - Minimal\n- Update modes:\n   - Firmware + FileSystem\n   - Firmware only\n   - FileSystem only\n- Update route customization (default: `/update`)\n- Update credentials customization (default: `No credentials`)\n    - Username\n    - Password\n- Update Events:\n    - onUpdateBegin\n    - onUpdateEnd\n- Force Aborting Update using events \n- FileSystem Options:\n    - SPIFFS\n    - LittleFS\n\n## HowTo\n\n### Install\n\nThis Library is available in `Arduino Library Repository` and `PIO` and you can install it from: \n\n| Arduino IDE Library Manager | PlatformIO Libraries |\n|:---:|:---:|\n|\u003cimg width=\"500\" src=\"previews/arduino.png\" alt=\"Arduino library manager\"/\u003e|\u003cimg width=\"500\" src=\"previews/pio.png\" alt=\"pltformio library\"/\u003e|\n\n`ipdotsetaf/ESPAsyncHTTPUpdateServer@^3.0.0`\n### Setup\n1. Include the library after `ESPAsyncWebServer.h`\n``` C++\n#include \u003cESPAsyncWebServer.h\u003e\n#include \u003cESPAsyncHTTPUpdateServer.h\u003e\n```\n2. Create an object from `ESPAsyncHTTPUpdateServer`\n``` C++\nESPAsyncHTTPUpdateServer updateServer;\nAsyncWebServer server(80);\n```\n3. Setup the update server before starting the webServer\n``` C++\nupdateServer.setup(\u0026server);\nserver.begin();\n``` \n#### Custom Route\n``` C++\nupdateServer.setup(\u0026server, \"/customroute\");\n```\n#### Credentials\n``` C++\nupdateServer.setup(\u0026server, \"username\", \"password\");\n```\nor\n``` C++\nupdateServer.setup(\u0026server, \"/customroute\", \"username\", \"password\");\n```\n#### Events\n```c++\nupdateServer.onUpdateBegin = [](const UpdateType type, int \u0026result)\n    {      \n        //...\n    };\n\nupdateServer.onUpdateEnd = [](const UpdateType type, int \u0026result)\n    {\n        //...\n    };\n```\n#### Aborting the update\n```c++\nupdateServer.onUpdateBegin = [](const UpdateType type, int \u0026result)\n    {      \n        result = UpdateResult::UPDATE_ABORT;\n    };\n```\n\n### Styling and Customizing OTA Page\n\n| Stylized | Minimal |\n|:---:|:---:|\n|\u003cimg width=\"450\" src=\"previews/stylized.png\" alt=\"Stylized OTA Page\"/\u003e | \u003cimg width=\"450\" src=\"previews/minimal.png\" alt=\"Minimal OTA Page\"/\u003e |\n\n\u003e [!IMPORTANT]\n\u003e By default styling is disabled to save ~350 bytes of flash memory.\n\u003e\n\u003e You can enable the styling by adding the `-DESPASYNCHTTPUPDATESERVER_PRETTY` Build Flag to your environment.\n\n### Customizing OTA Page\n\n\u003e [!IMPORTANT]\n\u003e Add the `-DESPASYNCHTTPUPDATESERVER_MODE` Build Flag with desired value to choose different update mode.\n\u003e Choose the right value based on your needs from bellow table: \n\u003e\n\u003e | Update mode | value |\n\u003e |:---:|:---:|\n\u003e |Firmware and FileSystem|0|\n\u003e |Firmware only|1|\n\u003e |FileSystem only|2|\n\n#### Modifying Htmls\n\nin case you liked to modify the html of any of the pages, you need to run the `scripts/codeGenerator.py` afterwards so html contents get processed and placed in the source.\n\nInstructions:\n1. Make sure you have python installed\n2. In your python environment run the following\n3. `pip install -r requirements.txt`\n4. `python codeGenerator.py`\n\n### Selecting FileSystem\n\u003e [!IMPORTANT]\n\u003e The library's default fileSystem is `SPIFFS` but if you are using `LittleFS` for your FileSystem, make sure to add the `-DESPASYNCHTTPUPDATESERVER_LITTLEFS` Build Flag to your environment.\n\n### Debugging\n\u003e [!TIP]\n\u003e To debug the library functionality, you can add the `-DESPASYNCHTTPUPDATESERVER_DEBUG` Build Flag to your environment.\n\u003e\n\u003e This will enable the library to print logs to the Serial.\n\n\u003e [!TIP]\n\u003e If you are using another `Serial` port, you can override the default serial by adding the `-DESPASYNCHTTPUPDATESERVER_SerialOutput=Serial1` Build Flag to your environment.\n\n### Server Working Example\n\nPlease refer to this [fully working example](https://github.com/IPdotSetAF/ESPAsyncHTTPUpdateServer/blob/master/examples/simple_server/simple_server.ino)\n\n## TODO:\n- Custom CSS support\n- Synchronous WebServer support\n\n## Contribution\n- You can open Issues for any bug report or feature request.\n- You are free to contribute to this project by following these steps:\n   1. Fork this Repo.\n   2. Create a new branch for your feature/bugfix in your forked Repo.\n   3. Commit your changes to the new branch you just made.\n   4. Create a pull request from your branch into the `master` branch of This Repo([https://github.com/IPdotSetAF/ESPAsyncHTTPUpdateServer](https://github.com/IPdotSetAF/ESPAsyncHTTPUpdateServer)).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipdotsetaf%2Fespasynchttpupdateserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipdotsetaf%2Fespasynchttpupdateserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipdotsetaf%2Fespasynchttpupdateserver/lists"}