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

Нужна помощь Webserver проблема с отправкой

MihaNN52

Member
Добрый день коллеги.
Ни как не могу понять что не так)
При отправке данных в вебсервер происходит падение контроллера.
Происходит не всегда, но на 500 отправок точно будет 1 падение.
Отправка даже пустая дает подобный сбой
Даже если я кроме скобок ни чего не отправляю
String Commands = "{}";
HTTP.on("/command.json", HTTP_GET, []() {
HTTP.send(200, "application/json", Commands);
});

Код:
Exception (29):
epc1=0x4000e1b2 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys
sp: 3ffffd70 end: 3fffffb0 offset: 01a0

>>>stack>>>
3fffff10:  07ba4432 000002f4 3ffee7e0 401004f4 
3fffff20:  3fff2508 3ffef740 3ffee7e0 40107888 
3fffff30:  3fff2508 3fff2504 0269bca9 40218f9a 
3fffff40:  401059aa 0269db2b 4021945a 00000008 
3fffff50:  00000000 00000000 40219507 3ffee894 
3fffff60:  3ffef740 0269fdc0 3ffef740 40201808 
3fffff70:  4022abd9 3ffee894 3ffef740 07ba3b46 
3fffff80:  4022ac1e 3fffdab0 00000000 3fffdcb0 
3fffff90:  3ffef760 3fffdad0 3fff0f88 402131b3 
3fffffa0:  40000f49 000181f7 3fffdab0 40000f49 
<<<stack<<<

ets Jan  8 2013,rst cause:2, boot mode:(3,6)
Весь проект тут Файл из Облака Mail.Ru по сути там пример с этого сайта ШАГ №8 — WEB обновление, Время из сети. | Программирование ESP8266 в среде Arduino IDE добавлено пара строк.
Может сталкивался кто?
 

CodeNameHawk

Moderator
Команда форума
Попробуйте закрывать соединения http.end();
И прочитайте, что сервер возвращает.
 

Юрий Ботов

Moderator
Команда форума
Я вижу что вы отправляете запрос но не вижу чтобы вы читали ответ от сервера. А он возвращается от сервера клиенту, засовывается в буфер и ждет пока вы его оттуда прочтете. В конце концов буфер переполняется...
 

MihaNN52

Member
аааа чет не понимаю... вроде примеры все излазил, ни где не видел как ответы читаются или как всегда смотришь в книгу видишь книгу))
Обьясните пожалуйста как прочитать ответ
 
Последнее редактирование:

gerkimuyda

New member
Ну, почти все примеры построены по принципу "один раз запустилось - и хватит"! Имейте это ввиду.
Например, подключение к wifi (даже для сервера) никогда не обрабатывают ситуацию, что wifi-соединение может разорваться на некоторое время (АП отключили или вынесли модуль из зоны действия). Везде и всюду предполагается, что божественным образом подключение постоянно установлено после первого подключения :))) (Это я для arduino sdk пишу, на lua вообще страшные глюки)
 

enjoynering

Well-known member
Согласен - если все работает и отправляет по началу, а потом ни с того ни с сего падает то это переполнение буфера или утечка памяти.
 

kab

New member
Обьясните пожалуйста как прочитать ответ
Тут, похоже, люди совсем запутались.
Давайте вернёмся к началу, т.е. объясните подробнее, что у Вас за система, что Вы на ней делаете.
Что к чему подключено. Приведите свой текст программы. Подробнее, когда и как возникает ошибка.

Мне кажется - Вам никаких "ответов" читать не надо! Юрий несколько не разобрался...

Тогда разговор будет более предметный.
А насчет - падает контроллер - предположение насчет утечки памяти - проверяется выводом свободной памяти в Serial. Но! кроме программных ошибок "падение" может быть вызвано и кучей других проблем. Просадка и помехи по питанию - на питание стоят конденсаторы? - схему мы не видим. Может сосед за стенкой время от времени балуется с электросваркой? Условно говоря...
 

kab

New member
@kab
Да, еще - никто не обещал, что ESP работает без зависания. Даже где-то здесь видел систему, когда другое устройство периодически пингует сервер на ESP. И, при необходимости, перегружает питанием...
 

kab

New member
я смотрел внимательно и не один десяток раз Arduino/HelloServer.ino at master · esp8266/Arduino · GitHub ни чего не нахожу о чем мы говорим
Может Вы при копировании слегка где-то сделали неаккуратно? Поэтому я прошу привести Ваш текст программы, а не с первоисточника.
 

MihaNN52

Member
В первом посте есть ссылка на проект в архиве те файлы с которыми я работаю
 

MihaNN52

Member
@kab
Да, еще - никто не обещал, что ESP работает без зависания. Даже где-то здесь видел систему, когда другое устройство периодически пингует сервер на ESP. И, при необходимости, перегружает питанием...
у меня оно есть STM32 как основной контроллер дает поджопник в случае зависона. Тут не зависон, а реально что то не доделываю, при том что все примеры излазил и так и не могу понять как должно работать. У STM есть мануал если брать оба то 2000 страниц, да бедно описано но хоть что то . Тут нипонятно. Вот он сейчас отправляет стабильно 366раз и падает.
 

MihaNN52

Member
весь код есть в архиве.
Код:
void loop() {
  HTTP.handleClient();
  delay(10);
   if (millis() - time1 >= 100) {
    time1 = millis();
   
   HTTP.on("/command", HTTP_GET, []() { 
    HTTP.send(200, "text/json", regCommands);
  });
   HTTP.begin();
  val++;
  printf("Val = %d\n",val);
   }


 
}
 

kab

New member
отправляет стабильно 366раз
Я уже писал - ищите в документации функцию , которая возвращает свободную память и выводите в сериал. Делайте вывод всех сомнительных (и не очень) переменных и выводите в сериал. И смотрите, что происходит перед 366-ой отправкой
 

kab

New member
весь код есть в архиве.
Код:
void loop() {
  HTTP.handleClient();
  delay(10);
   if (millis() - time1 >= 100) {
    time1 = millis();
  
   HTTP.on("/command", HTTP_GET, []() {
    HTTP.send(200, "text/json", regCommands);
  });
   HTTP.begin();
  val++;
  printf("Val = %d\n",val);
   }


 
}
все HTTP.on() - должны быть в Setup
- Это и может быть причиной
 

MihaNN52

Member
Уточните - это Ваш код или Вы его где-то заимствовали?
Есть ощущение, что он неправильный...
Код из примера модератора форума Виктора. добавлено пара строк которые опубликовал постом выше.
Прикольно память действительно заканчивается
Начинает
Val = 1
34648
Val = 2
34680
заканчивает
Val = 353
984
Val = 354
888
Exception (29):
epc1=0x4000e1b2 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
 
Сверху Снизу