• Система автоматизации с открытым исходным кодом на базе 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");
}
}
}
 
Сверху Снизу