• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ошибки и недочеты в существующих библиотеках

Victor

Administrator
Команда форума
В настоящее время доступны следующие библиотеки:

ESP8266WebServer
ESP8266WiFi
ESP8266mDNS
 

amatron

New member
Подскажите, пожалуйста, к каким пинам подключать SD card в примере: SDWebServer - Example WebServer with SD Card backend for esp8266?
 

amatron

New member
С пинами разобрался. В IE 11 работает.
Только в Хроме выдает ошибку:

Код:
С сервера получены одинаковые заголовки

ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH
 

igrr

Moderator
Команда форума
amatron, это с готовым примером, или ваш собственный код?
Я недавно добавлял автоматическую отправку Content-Length, мог где-то в примерах не обновить.
 

Discriminator

New member
Код:
Arduino: 1.6.4 (Windows 7), Плата"Generic ESP8266 Module, 80 MHz, 115200, 512K (64K SPIFFS)"

c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o):(.literal+0x104): undefined reference to `__ieee754_sqrt'
c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o): In function `__ieee754_pow':
d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/e_pow.c:164: undefined reference to `__ieee754_sqrt'
collect2.exe: error: ld returned 1 exit status
Ошибка компиляции.

Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
Это сегодняшний доступный билд
d:\ivan\projects\arduinoesp - это точно не мое, а ссылка присутствует...
 

evkup

New member
Обновил библиотеки и примеры с https://github.com/sandeepmistry/esp8266-Arduino
При попытке обращения по адресу esp8266sd.local Хром отвечает DNS_PROBE_FINISHED_NO_INTERNET Веб-страница недоступна.
При обращении по ip выдает страницу с картинкой распиновки (как и должно быть).
 
Последнее редактирование:

Evgen

New member
При использовании библиотеки ESP8266WiFi, при пропадании wifi соединения, например если роутер перезагрузить, модуль перезагружается.

UPD
Кароч разобрался, модуль перезагружается один раз, а дальше можно сколько угодно раз роутер перезагружать, ESP-шка уже не перезагружается.
 
Последнее редактирование:

Casper

Member
Добрый вечер! Есть вот такой скетч
Код:
#include <ESP8266WiFi.h>
#include <Ticker.h>

void SendIP();

const char* ssid     = "Keenetic-7300";
const char* password = "********";
const char* host = "192.168.1.22";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(5555);
Ticker sendip;


void setup() {
  Serial.begin(115200);
  delay(10);


  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());

  sendip.attach(30, SendIP);
  //SendIP();
}

void loop() {

}


void SendIP()
{
  Serial.println("Funktion SendIP");
  WiFiClient client;
    if (!client.connect(host, 5555))
    {
      Serial.println("connection failed");
    }
    Serial.println("Connection OK!");
    IPAddress tmp = WiFi.localIP();
    Serial.println("IP OK!");
    String ip = String(tmp[0]) + '.' + String(tmp[1]) + '.' + String(tmp[2]) + '.' + String(tmp[3]);
    Serial.println("Otpravka soobsheniya");
    client.print("id:0001;name:Banya;ip:"+ip+";");
    sendip.detach();
}
и при использовании функции Ticker, которая через 30 сек. должна вызвать функцию для отправки сообщения на сервер, получаю следующее
Код:
Connecting to Keenetic-7300
........
WiFi connected
Server started
192.168.1.34
Funktion SendIP

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
Хотя функция рабочая! Если ее вызывать не через Ticker. В чем может быть проблема?
 

Casper

Member
Может функция и рабочая, но видать она долго выполняется, раз WDT отрабатывает...
Он зависает на 55 строчке WiFiClient client; очень долго выполняется. А если в Setup вызвать функцию, то там все сразу подключается, без всяких задержек.
 

Discriminator

New member
А вообще, ИМХО, не стоит событие таймера нагружать кучей обработок. Не лучше ли это вынести в loop. Он хоть и пустой, но регулярно выполняется. А вот в самом таймере "взводить" некоторую переменную, которая в самом loop тебе подскажет нужно выполнять твой код с отправкой или нет...
 

pvvx

Активный участник сообщества
А вообще, ИМХО, не стоит событие таймера нагружать кучей обработок. Не лучше ли это вынести в loop. Он хоть и пустой, но регулярно выполняется. А вот в самом таймере "взводить" некоторую переменную, которая в самом loop тебе подскажет нужно выполнять твой код с отправкой или нет...
Это походит на неверно избранную политику порта Arduino IDE с таймерами в Ticker. Не верно составлено переключение контекста SDK<->код пользователя? Если сработал программный таймер, то он отрабатывается только в функции ets_run() и вызвав какую пользовательскую задачу остальные системные таймеры встают, пока задача не вернет управление в ets_run(). Тут сколько хош переключай контекст или потоки, всё равно поддерживающие систему таймеры не отработают. Надо переназначать вызов функции пользователя от срабатывания таймера и завершать процедуру вызова, отдавая управление в ets_run(). Можно вообще заменить ets_run() на свой обработчик...
 

Discriminator

New member
pvvx, как бы это сказать... Человек, который полезет "так глубоко" - врятли будет писать "на Wire" :)
 
Добрый вечер. У меня такая проблема. Загрузил в esp8266 скетч wifi web server (управление gpio2) при периодических посылках команд модулю, он начинает медленно откликаться на команды.
 

Lexumer

New member
Здравствуйте! При AT+CIPSEND=0,16 > TESTTESTTESTTEST
Модуль выдает Too many inputs.ERROR
 

Atom

Member
Обнаружил глючину ESP8266mDNS, но не уверен, что такой является или можно поправить. Если создать только Access Point и на ней запустить WebServer, то доступ появляется только по IP, а не по имени. Догадываюсь, что может быть что-то в DHCP обрезано.
 

Emmy

Member
мне не нравится что на некоторых девайсах точка доступа - esp8266 не выдает автоматом dhcp адрес клиенту - а по логике должна!!!! приходится прописывать вручную планшету ip 192.168.4.2 ПОФИКСИТЕ ЭТО!!!
 
Сверху Снизу