Почему обновления прошивки ESP8266 HTTP не работают?
Я только что потратил на это несколько часов и начинаю сходить с ума. У меня есть код для обновления прошивки по HTTP, работающий на нескольких ESP32. Я пытаюсь адаптировать этот код для работы на ESP8266, но не могу заставить его работать. Я скопировал несколько примеров из интернета, которые работают для всех остальных, не говоря уже о моем собственном коде, который работает на ESP32. Ошибка
Ошибка HTTP_UPDATE_FAILD (-106): Не удалось проверить заголовок Bin
Я бы отнес это к проблеме с URL-адресом bin, однако, когда я копирую/вставляю ссылку в браузер, она нормально загружается, и я даже пробовал использовать тот же URL-адрес, который работает с моими платами ESP32, с тем же результатом. Мой код ниже, и он чертовски близок к приведенному примеру (у меня ядро ESP 3.0.0).
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266httpUpdate.h>
#define URL_fw_Bin "https://raw.githubusercontent.com/[my profile]/[my project]/main/[firmware].bin"
void setup() {
Serial.begin(9600);
WiFi.begin();
while(WiFi.status()!=WL_CONNECTED){
delay(1000);
Serial.print(".");
}
WiFiClientSecure client;
client.setInsecure();
ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
t_httpUpdate_return ret = ESPhttpUpdate.update(client, URL_fw_Bin);
switch (ret) {
case HTTP_UPDATE_FAILED:
Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
case HTTP_UPDATE_NO_UPDATES:
Serial.println("HTTP_UPDATE_NO_UPDATES");
break;
case HTTP_UPDATE_OK:
Serial.println("HTTP_UPDATE_OK");
break;
}
}
void loop() {
}
@Blaine, 👍0
1 ответ
Лучший ответ:
«решили» проблему — это связано с ошибкой в ядре ESP8266 3.0.0. Использование ядра 2.7.4 решает проблему. Эта проблема, похоже, описывает проблему, но, возможно, исправление еще не дошло до полной версии:
https://github.com/esp8266/Arduino/issues/8079
- HTTP GET запрос с использованием Arduino Uno и ESP8266
- Как составить URL-адрес HTTP-запроса GET с параметрами ключ/значение
- ESP8266 Ошибка неверного запроса 400
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
- Достаточно ли 1 МБ флэш-памяти для загрузки OTA в ESP-01?
- Проанализировать большой ответ json с помощью ESP8266
- ОТА-программа SPIFFS на ESP8266
- ESP8266 не отвечает через случайные промежутки времени