Legion12
New member
Добрый день, форумчане.
Ничего похожего не нашел, поэтому делюсь в новой теме, прошу не кидать тапками, если все-таки плохо искал.
Разрабатываем устройство а-ля "умный дом", за беспроводную связь отвечает esp8266-01, код в arduino ide.
Для управления создано веб-страницы, одна основная для работы системы, другая настроечная, обе расположены внутри кода, залив в SPIFFS не используем.
Выглядит так:
Вызов страницы идет так:
Данные сохраняем и пересылаем обычными json-запросами.
Проблема раз - чуть только размер веб-страницы превышает 32кб - страница перестает грузиться. С чем это связано я не понимаю. Пробовали обойтись "сжатием", оптимизацией и заменой памяти на модуле на более емкую - не помогло. Когда прописали server.setContentLength(CONTENT_LENGTH_UNKNOWN) - работать стало чуть веселее, иногда просто отказывалось грузиться, выдавая
ERR_CONTENT_LENGTH_MISMATCH.
Проблема два - вся система в принципе работает более-менее стабильно только в режиме WIFI_AP. станицы очень редко не подгружаются, обычно простого нажатия на F5 в браузере хватает. При переключении в WIFI_STA начинается цирк - страницы грузятся в лучшем случае по два раза, а дальше только выдернуть шнури выдавить стекло питания и воткнуть заново.
Код переключения выглядит так и работает без проблем:
Дополнительно намертво прописано:
[inline] WiFi.setPhyMode(WIFI_PHY_MODE_11N);[/inline]
... потому как в этом режиме замечена наиболее стабильная работа системы.
В общем что мне делать - я не знаю. Есть мнение что где-то не стоит очистка какого-нибудь буфера или кэша, но нигде информации я не нашел. Буду благодарен за любую помощь.
Ничего похожего не нашел, поэтому делюсь в новой теме, прошу не кидать тапками, если все-таки плохо искал.
Разрабатываем устройство а-ля "умный дом", за беспроводную связь отвечает esp8266-01, код в arduino ide.
Для управления создано веб-страницы, одна основная для работы системы, другая настроечная, обе расположены внутри кода, залив в SPIFFS не используем.
Выглядит так:
Код:
const char mainPage[] PROGMEM = R"=====(
<html>многотекста</html>
)====";
const char settingsPage[] PROGMEM = R"=====(
<html>чутьменьшетекста</html>
)====";
Код:
server.on("/", []() {
server.setContentLength(CONTENT_LENGTH_UNKNOWN);
server.send(200, "text/html", mainPage); //------------------------------------------------------------------------------------------------ посылаем главную веб-страницу
delay(100);
});
Проблема раз - чуть только размер веб-страницы превышает 32кб - страница перестает грузиться. С чем это связано я не понимаю. Пробовали обойтись "сжатием", оптимизацией и заменой памяти на модуле на более емкую - не помогло. Когда прописали server.setContentLength(CONTENT_LENGTH_UNKNOWN) - работать стало чуть веселее, иногда просто отказывалось грузиться, выдавая
ERR_CONTENT_LENGTH_MISMATCH.
Проблема два - вся система в принципе работает более-менее стабильно только в режиме WIFI_AP. станицы очень редко не подгружаются, обычно простого нажатия на F5 в браузере хватает. При переключении в WIFI_STA начинается цирк - страницы грузятся в лучшем случае по два раза, а дальше только выдернуть шнур
Код переключения выглядит так и работает без проблем:
Код:
//------------------------------------------------------------------------------------------------ запуск подключения WIFI_STA
void WifiSTAconnect(){
byte tries = 20;
serializeJsonPretty(wifinet, Serial);
Serial.println("Start WIFI");
WiFi.mode(WIFI_STA); //------------------------------------------------------------------------------------------------ Запускаем WIFI_STA
WiFi.begin(ssid, password);
while (--tries && WiFi.status() != WL_CONNECTED) {// ждем соединения:
delay(1000);
Serial.print(".");
}
if (WiFi.status() != WL_CONNECTED){ // Если не удалось подключиться запускаем в режиме AP
Serial.println("WiFi up AP");
StartAPMode();
} else {
Serial.println("");
Serial.println("WiFi connected");
delay(500);
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
SSDP_init();//----------------------------------------------------------------запуск протокола SSDP
}
}
void StartAPMode(){
WiFi.disconnect(); // Отключаем WIFI
WiFi.softAPdisconnect(); // отключаем отчку доступа(если она была)
WiFi.mode(WIFI_OFF); // отключаем WIFI
delay(500);
// Меняем режим на режим точки доступа
WiFi.mode(WIFI_AP);
// Задаем настройки сети
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
// Включаем WIFI в режиме точки доступа с именем и паролем
// хронящихся в переменных ssidAP passwordAP
WiFi.softAP(ssidAP,passwordAP);
}
[inline] WiFi.setPhyMode(WIFI_PHY_MODE_11N);[/inline]
... потому как в этом режиме замечена наиболее стабильная работа системы.
В общем что мне делать - я не знаю. Есть мнение что где-то не стоит очистка какого-нибудь буфера или кэша, но нигде информации я не нашел. Буду благодарен за любую помощь.