esp8266 ответ сервера php

TynuK
Offline
Зарегистрирован: 05.02.2017

Привет, прошу помощи как обработать ответ от сервера? как я понимаю не хватает памяти и контроллер перезагружается в ообщем вот кусок кода 

void programm(){       
   WiFiClient client;
   
   if (client.connect(host, 80))
    {   
    client.print( "GET /upd.php?");
    client.print("&");
    client.print("&");
    client.println( " HTTP/1.1");
    client.println( "Connection: close" );
    client.println();
    client.println();
    delay(200);
    
      while (client.available())
 {  
      char a = client.read();
        adress += String(a);   // здесь должно быть по другому , но как???
        Serial.println (adress);
       
         strip.setPixelColor(0, strip.Color(100, 150, 70)); // включаем зеленый  цвет
      strip.show(); // передаем цвет на светодиод 
        webUpdate();
        }
}
}

 

TynuK
Offline
Зарегистрирован: 05.02.2017

ну и php код

<?php 
$myFile4 = "update/pr.txt";
$fh4 = fopen($myFile4, 'r');  // 'r' указывает функции открыть файл для чтения
$theData = fread($fh4, filesize($myFile4));
//$json_data = array ($fh4, filesize($myFile4));
fclose($fh4);
echo $theData;
//$json_data = array ($theData);
//echo json_encode($json_data);
?>

 

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

По такому куску не очень понятно. Какой объем pr.txt? и дайте текст ошибки. Если WDT срабатывает, то может достаточно в цикле встаивть delay или yield()

Logik
Offline
Зарегистрирован: 05.08.2014

//По такому куску не очень понятно. Какой объем pr.txt?

Но видно что оно складируется в adress без его очистки, потому какая вобщем разнится когда память кончится. Потому согласен, "здесь должно быть по другому". И вобще String - штука запрещенная, её использование вызывает ребут ;)

 

TynuK
Offline
Зарегистрирован: 05.02.2017

Спасибо остальной кусок кода ни чего не белает кроме как запускает этот, сейчас работает 

void programm() {
  WiFiClient client;

  if (client.connect(host, 80))
  {
    client.print( "GET /upd.php?");
    client.println( " HTTP/1.1");
    client.print( "Host: " );
    client.println(host);
    client.println( "Connection: close" );
    client.println();

    while (client.available())
    {
      adress = client.readString();

      int dlina = adress.length();

      int count_dollar = adress.indexOf("$");

      url_proshivki = convert(adress, count_dollar, dlina ); // здесь адресс http://192.168.1.166/update/test_1.bin

      strip.setPixelColor(0, strip.Color(100, 150, 70)); // включаем желтый  цвет
      strip.show(); // передаем цвет на светодиод

    }
    
  }
client.stop();
webUpdate();
}
void webUpdate() {
  strip.setPixelColor(0, strip.Color(50, 50, 0)); // включаем зеленый  цвет
  strip.show(); // передаем цвет на светодиод

  ESPhttpUpdate.rebootOnUpdate(true);
  // Перепрошиваем модуль

  Serial.println("update on");
 Serial.print("adress=   ");
 Serial.println(url_proshivki); //сюда приходит
  
  t_httpUpdate_return ret1 = ESPhttpUpdate.update(String (url_proshivki);// так не качает и не прошивается
 Serial.println("update");
}// нужно в char преоброзовать???

 

negavoid
Offline
Зарегистрирован: 09.07.2016
<?php 
echo file_get_contents( "update/pr.txt" );

 

TynuK
Offline
Зарегистрирован: 05.02.2017

спасибо в php только начал разбираться, это пробный как основа нашел в интернете, теперь свое писать пробовать

TynuK
Offline
Зарегистрирован: 05.02.2017

вопрос у esp чип id бывает одинаковый? точной инфы не нашел, а FlashChipId будет разный у всех или тоже может попасться одинаковый? или посоветуйте что использовать можно чтоб различить какая esp подключмлась, есть ли у них какой номер внутренний разный для каждой, сейчас испольую mac adress  или это и есть лучший вариант?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

зачем вы привязываетесь к железу? в скетче задайте свой ид какждому модулю и пускай в запросе к серверу он его вставляет, и в случае замены esp просто перезальете скеть и править ничего не надо будет...

TynuK
Offline
Зарегистрирован: 05.02.2017

потому что esp не одна ,а 10 минимум

TynuK
Offline
Зарегистрирован: 05.02.2017

смысл в том чтоб одним  скетчем прошивать не одну, а сразу несколько устройств, поэтому не вариант каждой задавать id