{"id":14963337,"url":"https://github.com/ok-home/ota_ws_update","last_synced_at":"2025-10-09T11:37:31.170Z","repository":{"id":199496922,"uuid":"694684949","full_name":"ok-home/ota_ws_update","owner":"ok-home","description":"ESP32 OTA update via WebSocket with a simple WEB interface. Optional PreEncrypted mode.","archived":false,"fork":false,"pushed_at":"2023-10-10T12:09:07.000Z","size":215,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T04:51:23.310Z","etag":null,"topics":["esp-encrypted-img","esp-idf","esp-ota","esp32","esp32c3","esp32s3"],"latest_commit_sha":null,"homepage":"https://github.com/ok-home/ota_ws_update","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ok-home.png","metadata":{"files":{"readme":"README-RU.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-21T13:43:04.000Z","updated_at":"2025-01-19T18:50:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"ea64f792-197b-40d0-b445-61ccf15a33e9","html_url":"https://github.com/ok-home/ota_ws_update","commit_stats":null,"previous_names":["ok-home/ota_ws_update"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ok-home%2Fota_ws_update","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ok-home%2Fota_ws_update/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ok-home%2Fota_ws_update/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ok-home%2Fota_ws_update/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ok-home","download_url":"https://codeload.github.com/ok-home/ota_ws_update/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238053514,"owners_count":19408699,"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","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":["esp-encrypted-img","esp-idf","esp-ota","esp32","esp32c3","esp32s3"],"created_at":"2024-09-24T13:31:22.285Z","updated_at":"2025-10-09T11:37:26.144Z","avatar_url":"https://github.com/ok-home.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[En](/README.md)\r\n\r\n| Supported Targets |  \r\n| ESP32 ESP32S3 ESP32C3 | \r\n| ----------------- |\r\n\r\n# ESP32 OTA обновление через WebSocket с простым WEB интерфейсом. Опционально PreEncrypted режим.\r\n - Подключается как компонент к вашей программе\r\n - Не требует внешних серверов для хранения прошивок OTA, предназначен в первую очередь для работы в локальной сети.\r\n - Использует WebsSocket или WebsSocket Secure протокол.\r\n - Подключается к любому web серверу на esp32, использующему WebSocket протокол, например (esp-idf examples/protocols/http_server/ws_echo_server) или (esp-idf examples/protocols/https_server/wss_server) как URI handler.\r\n   - в зависимости от протокола сервера (http/https) будет выбран протокол обмена (ws/wss)\r\n - режим PreEncrypted (espressif/esp_encrypted_img) подключается в Menuconfig\r\n   - для PreEncrypted режима требуется увеличение размера стека httpd_config_t config.stack_size = 4096*4;\r\n   - Подробности использования PreEncrypted режима https://components.espressif.com/components/espressif/esp_encrypted_img\r\n - Пример - example_ota_ws\r\n - Web интерфейс\r\n   - Выбор файла прошивки\r\n   - Загрузка прошивки в esp32\r\n   - Контроль загрузки прошивки\r\n   - После обновления прошивки - подтверждение обновления или откат на предыдущую версию\r\n - Выбор URI страницы OTA в Menuconfig\r\n - Обновление скачивается частями, размер фрагмента закачки в Menuconfig\r\n - Пример подключения\r\n```\r\n#include \"ota_ws_update.h\" // handler definition\r\n\r\n// start webserver from esp-idf \"examples/protocols/http_server/ws_echo_server\"\r\nstatic httpd_handle_t start_webserver(void)\r\n{\r\n    httpd_handle_t server = NULL;\r\n    httpd_config_t config = HTTPD_DEFAULT_CONFIG();\r\n    // Start the httpd server\r\n    ESP_LOGI(TAG, \"Starting server on port: '%d'\", config.server_port);\r\n    if (httpd_start(\u0026server, \u0026config) == ESP_OK) {\r\n        ESP_LOGI(TAG, \"Registering URI handlers\");\r\n    /****************** Registering the ws handler ****************/\r\n        ota_ws_register_uri_handler(server);\r\n        // end register ota_ws handler\r\n        return server;\r\n    }\r\n    ESP_LOGI(TAG, \"Error starting server!\");\r\n    return NULL;\r\n}\r\n```\r\n - Пример partitions.csv\r\n```\r\n# Name,   Type, SubType,  Offset,   Size,  Flags\r\nnvs,      data, nvs,      0x9000,  0x4000\r\notadata,  data, ota,      ,  0x2000\r\nphy_init, data, phy,      ,  0x1000\r\nota_0,    app,  ota_0,    ,  1M\r\nota_1,    app,  ota_1,    ,  1M\r\n```\r\n - Параметры menuconfig\r\n   - PARTITION_TABLE_CUSTOM=y\r\n   - PARTITION_TABLE_CUSTOM_FILENAME=\"partitions.csv\"\r\n   - HTTPD_WS_SUPPORT=y\r\n   - APP_ROLLBACK_ENABLE=y\r\n   - OTA_DEFAULT_URI - адрес web интерфейса OTA\r\n   - OTA_DEFAULT_WS_URI - адрес ws/wss интерфейса OTA\r\n   - OTA_CHUNK_SIZE - размер фрагментов заказчки\r\n   - OTA_PRE_ENCRYPTED_MODE - включение PreEncrypted режима\r\n     - OTA_PRE_ENCRYPTED_RSA_KEY_LOCATION - место хранения rsa_private_key ( в каталоге компонента или в каталоге проекта )\r\n     - OTA_PRE_ENCRYPTED_RSA_KEY_DIRECTORY - директория хранения rsa_private_key\r\n  \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fok-home%2Fota_ws_update","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fok-home%2Fota_ws_update","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fok-home%2Fota_ws_update/lists"}