• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу