Ошибка 101 Сервер Не сообщил о размере из платформы обновления OTA через git-концентратор

ota web

Я пробовал это видео:

ESP8266 Самостоятельное обновление OTA с GitHub

Инструкция и сделал это репо на GitHub:

И изменил основной код на этот тип, но я получаю эту ошибку:

HTTP_UPDATE_FAILD Error (-101): Server Did Not Report Size

когда выполняется FirmwareUpdate(); код. Поэтому я не знаю, почему GitHub не отвечает на esp8266, как сказано здесь:

Ошибка не имеет никакого отношения к вашему скетчу. Кроме того, код ошибки не является ошибкой HTTP 101. Проблема в том, что ваш сервер не отправляет заголовок ответа "Длина содержимого"

У меня есть некоторые глупости об адресе файла URL-адреса bin, в конце которого много точек (https://github.com/soheilpaper/ota_github_blink/blob/main/BlinkWithoutDelay.ino.esp8285.bin) на нем, может ли это быть причиной того, что никто не отвечает и не выдает код 101 на сервере GitHub!

Любое предложение будет хорошей помощью для исправления этой ошибки.

Обновление 1:

Я изменил имя файла bin на такой вид :

 BlinkWithoutDelay.ino.esp8285.bin  ---->      BlinkWithoutDelay_ino_esp8285.bin

Но у меня снова та же ошибка на GitHub 101.

Обновление 2:

Основываясь на ответе timemage, я изменил адрес файла bin и TXT, найдя ссылку для загрузки этих файлов на GitHub. И он работал, изменив часть адреса двоичного объекта на необработанный, поэтому адрес ячейки изменил форму https://github.com/soheilpaper/ota_github_blink/blob/main/BlinkWithoutDelay_ino_esp8285.bin чтобы https://github.com/soheilpaper/ota_github_blink/raw/main/BlinkWithoutDelay_ino_esp8285.bin И в https://github.com/soheilpaper/ota_github_blink/blob/main/version.txtчтобы https://raw.githubusercontent.com/soheilpaper/ota_github_blink/main/version.txt

И теперь эта ошибка исправлена, как вы можете видеть ниже:

Хотя я дал некоторое представление об обновлении основного кода, получив этот вывод через последовательный порт:

Device already on latest firmware version

И я бы проверил это после некоторого отдыха!.

Спасибо.

, 👍-1

Обсуждение

Ваш вопрос, похоже, содержит свой собственный ответ, так что я в замешательстве. Вы понимаете, что такое заголовок длины содержимого?, @timemage

пожалуйста, без изображения текста ... это нечитабельно ... опубликуйте фактический текст, @jsotola

@timemage, я не знаю, как я могу получить эту информацию через [основной код](https://github.com/soheilpaper/ota_github_blink/blob/main/ESP_OTA_Github.ino)!, @modern

@jsotola, на выходе последовательного порта нет информации о s, основная ее часть-это ошибка **101**, введенная этим выводом: "Ошибка HTTP_UPDATE_FAILD (-101): Сервер не сообщил размер "., @modern

Если "Устройство уже установлено на последней версии прошивки" является проблемой, и неясно, что это так, это, вероятно, является предметом нового вопроса., @timemage


1 ответ


Лучший ответ:

2

Библиотека ESP8266httpUpdate хочет заранее знать, какого размера файл, прежде чем начать его загрузку. Он хочет знать это, чтобы перед попыткой загрузки (и программирования) определить, достаточно ли для этого места. Если размер файла не указан сервером, он сообщит об ошибке, которую вы видите.

Размер файла определяется веб-сервером с помощью заголовка HTTP-ответа длиной содержимого, считываемого HttpClient. Этот заголовок получен до содержимого файла.

Ваш основной код, похоже, содержит правильную ссылку на файл raw .bin, #определить URL_fw_Bin "https://raw.githubusercontent.com/programmer131/otaFiles/master/firmware.bin", и сообщает следующие заголовки:

cache-control: max-age=300
content-security-policy: default-src 'none'; style-src 'unsafe-inline'; sandbox
content-type: application/octet-stream
etag: "b2ecfb5dc91587c089acdaace446b0d7b00863c9f42dffb36c7983c103d3a98a"
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
x-frame-options: deny
x-xss-protection: 1; mode=block
via: 1.1 varnish (Varnish/6.0), 1.1 varnish
x-github-request-id: 8728:2B67:9AFD3:AD0EC:6008FCFF
accept-ranges: bytes
date: Thu, 21 Jan 2021 04:03:32 GMT
x-served-by: cache-bos4651-BOS
x-cache: MISS, HIT
x-cache-hits: 0, 1
x-timer: S1611201812.154162,VS0,VE1
vary: Authorization,Accept-Encoding
access-control-allow-origin: *
x-fastly-request-id: bfc9702929b91be55d7aa040465a230436918e01
expires: Thu, 21 Jan 2021 04:08:32 GMT
source-age: 20
content-length: 270016

Длина содержимого: 270016 внизу показывает, что это должно сработать. Но ваш измененный код, который использует #define URL_fw_Bin "https://github.com/soheilpaper/ota_github_blink/blob/main/BlinkWithoutDelay_ino_esp8285.bin находится на HTML-странице для загрузки файла, который не сообщает длину содержимого, в любом случае для меня, но тогда это все равно неправильный URL-адрес.

Что касается "101 ошибки", здесь определено значение -101 (отрицательное), и, как они сказали, это не код состояния HTTP, это просто значение, используемое библиотекой ESP8266httpUpdate.

,

Спасибо, я изменил адрес файла " bin " и "TXT", найдя ссылку для загрузки этих файлов на GitHub. И он работал, изменив часть адреса "большой двоичный объект" на "необработанный", поэтому адрес ячейки изменил форму https://github.com/soheilpaper/ota_github_blink/blob/main/BlinkWithoutDelay_ino_esp8285.bin чтобы `https://github.com/soheilpaper/ota_github_blink/raw/main/BlinkWithoutDelay_ino_esp8285.bin", также я **обновил** вопрос и добавил более подробную информацию., @modern