• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь обновлении прошивки через воздух (OTA)

Andkom

New member
Добрый день.
Столкнулся с проблемой при обновлении прошивки через воздух (OTA).
Описание: после вызова этого кода на веб-сервер отправляется запрос. В логах веб-сервера (apache) вместо GET указано HEAD
192.168.21.21 - - [14/Feb/2018:23:56:02 +0000] "HEAD /firmware/upgrade/user2.1024.new.2.bin_.bin HTTP/1.0" 408 0 "-" "-"
Код ошибки - 408. Это таймаут. Но у меня задан check_times = 120000. Этого больше чем достаточно.
И на этом все прекращается. Если делаю download через Internet Explorer, то все скачивается успешно.
Подскажите, в каком направлении двигаться?

Ниже приведен код.

struct upgrade_server_info *upgrade_server = NULL;
char new_user_bin[128]; // Путь на web-сервере к файлу с новой прошивкой

os_memset(new_user_bin, 0, sizeof(new_user_bin));

upgrade_server = (struct upgrade_server_info *) os_zalloc(sizeof(struct upgrade_server_info));
if(upgrade_server)
{
upgrade_server->pespconn = pespconn;

os_strcpy(new_user_bin, "user2.1024.new.2.bin_.bin");

const char upgrade_server_ip[4] = {192, 168, 21, 201};
os_memcpy(upgrade_server->ip, upgrade_server_ip, 4);
upgrade_server->port = 80;

upgrade_server->check_cb = ota_upgrade_cb;
upgrade_server->check_times = 120000;

if (upgrade_server->url == NULL)
{
upgrade_server->url = (uint8 *)os_zalloc(128);

os_sprintf(upgrade_server->url, "GET /firmware/upgrade/%s HTTP/1.1\r\nHost: "IPSTR":%d\r\nConnection: close\r\n\r\n",
new_user_bin, IP2STR(upgrade_server->ip), upgrade_server->port);

ets_uart_printf("upgrade_server->url=%s\r\n",upgrade_server->url);

if (system_upgrade_start(upgrade_server) == false) // Начинаем обновление
{
os_printf("ota_upgrade_start(): upgrade is already started\n");
}
}
}
 
Сверху Снизу