• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Arduino ОТА помогите решить проблему

kinologg

New member
Позавчера решил попробовать ОТА, через Arduino IDE, залил скетч BasicOTA, затем залил этот же скетч через ОТА, все прошло успешно, все работало, со вчерашнего дня не могу побороть проблему, появляется сетевой порт, но при по пытке прошить скетч ERROR NO RESPONSE DROM DEVICE, делаю все тоже самое, перепробовал 3 штуки esp8266 12e, та же история, но как не странно, на nodemcu все работает без ошибок, в чем может быть проблема?
 

gerkimuyda

New member
У меня была проблема - постоянно модуль отваливался от роутера в режиме station. Из-за этого не работала OTA в arduino ide.
Решил проблему проще - прошивку модуль сам начал забирать при обращении к локальному серверу (он у меня работал постоянно, раз в 10 минут подключаясь к серверу и передавая данные).

Код:
#include <ESP8266httpUpdate.h>

void mainUpdate(String url) {
  Serial.print(" UPDATE: \""+url+"\" ");
  t_httpUpdate_return ret = ESPhttpUpdate.update(url);
  switch(ret) {
    case HTTP_UPDATE_FAILED: Serial.printf("- Failed(%d): %s.\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());  break;
    case HTTP_UPDATE_NO_UPDATES:  Serial.print("- no new updates.\n");  break;
  }
}

 String s="array[]=value1&array[]=value2"; //post переменные для сервера
  HTTPClient http;
  http.begin("server.lan/api/?board=esp8266.")+String(system_get_chip_id(),HEX));
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  int httpCode = http.POST(s); // -1=timeout_error, 200=ok, 302-update
  http.end();

  if(httpCode == 302) { mainUpdate("server.lan/api/?board=esp8266."+String(system_get_chip_id(),HEX)+"&mode=update"); }
PHP:
function sendFile($file) {
  if(!file_exists($file)){ header($_SERVER["SERVER_PROTOCOL"].' 404 Not Found', true, 404); exit; }
  if($_SERVER["HTTP_X_ESP8266_SKETCH_MD5"]==md5_file($file))
    { header($_SERVER["SERVER_PROTOCOL"].' 304 Not Modified', true, 304); exit; }
  header($_SERVER["SERVER_PROTOCOL"].' 200 OK', true, 200);
  header('Content-Type: application/octet-stream', true);
  header('Content-Disposition: attachment; filename='.basename($file));
  header('Content-Length: '.filesize($file), true);
  header('x-MD5: '.md5_file($file), true);
  $len = readfile($file);
  @file_put_contents('device.log', chr(10).'['.date('Y/m/d H:i:s').'] FLASH UPDATE: '.$file.' ('.$len."/".filesize($file).')',FILE_APPEND);
  if( $len == filesize($file) ) { unlink($file); }
}

$file = "./".$_GET['board'].".bin";
if( file_exists($file) ) {
  if( !empty($_GET['mode']) && $_GET['mode']=='update' ) { sendFile($file); exit; }
  header("Location: ".getenv("REQUEST_SCHEME")."://".getenv("HTTP_HOST").getenv("REQUEST_URI")."&mode=update", TRUE, 302);
  exit;
}
После чего новая прошивка ложится в файл, например "esp8622.2e35b4.bin" (где 2e35b4 - номер чипа в hex,), и модуль сам ее заберет и перепрошьется, после чего файл будет удален.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
в чем может быть проблема?
Иногда помогает танец с бубном :
Первым включаете роутер, после загрузки, включаете ЕСП и только потом компьютер.(выход из сна не годиться, только старт или рестарт.) и потом ардуиноИДЕ.
Повесьте все "нужные" резисторы.
 

Karen

New member
а у меня пароль не принимает, причем не важно какой стоял в скетче ! как быть ???
 
Сверху Снизу