ㅤ
может есп как бы слабый дос идет есть возможность все поотрубать и инет тоже пусть одна еспшка только подключиться к роутеру
Sneg.
нет возможности на целый день
ㅤ
ок ну тогда хотя бы ip сменить у нее
Sneg.
это можно
Sneg.
просто поменять и подождать?
ㅤ
да ну хоть что то надо же сделать. все возможные варианты перепробовать
Валентин
это можно
вам статический айпи критичен? попробуйте по дхсп пусть роутер ему назначит и посмотреть
Sneg.
раньше и так был по dhcp
Sergio
Возьми две есп, одну сделай wifi server, вторую wifi client и конекться одной к другой. Пускай та которая сервер, если потеряет первую, загорится светодиод
Sergio
Статический айпи это сила.у меня на статике есп хорошо работает, но статический ип зашит в прошивке есп... Тут главное чтобы роутер потом этот же ип кому то не выдал.
Роутер tplink mr3020 на openWRT
Валентин
Sergio
Ну да, вариант хороший
Валентин
да и к макам привязать айпи адреса
Валентин
но смысл не меняется
Валентин
у есп что то с протоколом, посмотрите через ваершарк
Sneg.
про зашитую статику в есп не понял, можно подробнее?
Sneg.
где ее посмотреть и как ее настроить
Sergio
Если надо будет, кину шаблон .ino файла в котором 8266 подключается к роутеру, сама себе назначает статический ip, поднимает на себе веб сервер и фронтэнд( html веб интерфейса) пишется в отдельном файле, который не нужно отдельно загружать в SPIFFS, он в качестве переменной подключается к файлу прошивки и не требует никакого экранирования спец символов во время написания html морды. Крайне удобно и практично.работает вроде стабильно все
Sneg.
если не жалко скинь
Sergio
5 минут
Валентин
Sneg.
это внутренние и роутеровские айпишники?
Валентин
вместо подтверждения благополучного получения пакета он отправляет сброс
Sneg.
к сожалению я ничего в этом скрине не понимаю
Sneg.
я что то совсем запутался, если я в роутере задам статический айпи для есп, то внутри прошивки есп сама назначит себе свой внутренний айпи?
ㅤ
Можно и в раутере статику сделать и в есп
Sneg.
в роутере умею, как в есп сделать?
ㅤ
Sneg.
допер, сразу не понял
Sergio
простите за задержку..
Sergio
Sergio
вливаю обезщанный тимплейт для web сервера со статическим ip адресом и комфортным фронт эндом
Sergio
если что то не получается, пишите в личку, поясню что к чему
Валентин
можно поподробнее?
Валентин
и почему вы пренебрегли yield()?
Sergio
Ну ситуация с 8266 такая:
Процессор один, он обслуживает как код ардуино так и wifi стэк. Если операция дольше 10мс ЕМНИП, то работа стэка будет нарушена и последствия непредсказуемы, как правило, зависание.
Если кто в курсе, поясните мне, безграмотному, чем yield отличается от delay? Меньше времени задержка?
Sergio
Всмысле delay(1) даст минимум 1 мс а yield может вообще не задержать код если wifi пока свободен
Sergio
Или как?
Sergio
Я по старинке делаю delay(), работает, и слава Богу
Валентин
читал что yield приравнивается к delay(0)
Sergio
Ну норм.главное чтобы управление переделось стеку wifi.
Валентин
тоесть если стеку нужно то он использует этот зазор если нет то нет
Валентин
я заметил что когда валится то он и eeprom подтирает
Валентин
или же просто меняет ему вектор
Валентин
после рестарта в епроме все нули
Sergio
Типа того. Компиляция нашего кода в ардуино сделана так что во время любых программных задержек управление передается обработке wifi.
Впрочем, это не спасет если вы вызовите функцию Которая вызовет функцию в которой будет for() в итерациях которого будут снова большие функции. Типичный пример, использование библиотеки от adafruit для ws2811 ленты, с использованием их примера вызова функции радуги rainbow()
Гарантированное нарушение работы сети на esp если светодиодов больше 20
Sergio
Нету еепрома в есп. Это программная реализация, и если вы часто к ней обращаетесь на запись, рискуете вообще убить флеш память esp
Валентин
Валентин
Валентин
void eeprom_clr(void) {
for (int i = 0; i < sizeof(customVar); i++) EEPROM.write(i, 0);
EEPROM.commit();
}
void eeprom_save(void) {
for (int i = 0; i < sizeof(customVar); i++) EEPROM.write(i, *((char*)&customVar+i));
EEPROM.commit();
}
void eeprom_load(void) {
char date[sizeof(customVar)];
for (int i = 0; i < sizeof(customVar); i++) date[i] = EEPROM.read(i);
memcpy((char*)&customVar, date, sizeof(customVar));
EEPROM.commit();
}
void eeprom_setup_init(void) {
EEPROM.begin(512);
eeprom_load();
if (customVar.dhc == 0xaa55) {
IPAddress gateway = WiFi.gatewayIP();
IPAddress subnet = WiFi.subnetMask();
WiFi.config(customVar.statIp, gateway, subnet);
}
debugSerial.println("init ok");
}
void mem_set(void) {
HTTP.sendHeader("Location","/");
HTTP.send(303);
if (HTTP.arg("protTime") != "") customVar.protTime = HTTP.arg("protTime").toInt();
if (customVar.protTime <= 0) customVar.protTime = PROTECTION_TIME;
if (HTTP.arg("chatId") != "") customVar.chatId = HTTP.arg("chatId").toInt();
if (HTTP.arg("name") != "") HTTP.arg("name").toCharArray(customVar.name, 46);
if (HTTP.arg("token") != "") {
HTTP.arg("token").toCharArray(customVar.token, 46);
String str((char*)customVar.token);
bot.setToken(str);
bot.begin();
}
if (HTTP.arg("ipStat") != "") {
IPAddress ip;
ip.fromString(HTTP.arg("ipStat"));
debugSerial.print("[static ip is ");
debugSerial.print(ip);
debugSerial.println("]");
IPAddress gateway = WiFi.gatewayIP();
IPAddress subnet = WiFi.subnetMask();
WiFi.config(ip, gateway, subnet);
customVar.statIp = ip;
customVar.dhc = 0xaa55;
}
eeprom_save();
}
Sergio
Ну это все равно костыль. Вачдог там зачем то придуман и без него стабильность хуже.Да и о какой стабильности речь если у вас вайфай все время отваливается- восстанавливается))
Валентин
для ИОТов нормально
Sergio
Дело Ваше. Я себе такого не позволяю
Валентин
у них задача просто в определенный момент гавкнуть а не держать сервер стабильный
Sergio
Валентин
спасибо это я заметил но каждый костыли обходит по своиму;) это был мой вариант. у меня в сети два андроид тв(постоянно идут каналы) два компа и два смарта а вот есп около 20 шт. Что они мусор кидают это я уже заметил
Валентин
а 32-ю они стандартизировали или таже история?
Sergio
Та же история, но она по крайней мере не отваливается
Sergio
Там два процессора, один только с вайфаем корешки)
Sergio
Корешует
Валентин
а ртл ки не пробовали? вроде как тоже не дорого
Валентин
для иот
Sergio
Следующий проект будет на ртл у меня
Sergio
Месяца через два дам фидбэк
Sneg.
А что такое ртл?
Sneg.
Repost-from-vk
Используйте /start или /stop, чтобы управлять вашей подпиской на @arduino_esp_bot .
Валентин
проверьте так работает?
Валентин
ㅤ
А что такое ртл?
Они считаются более стабильными но не так распространены как народные esp
Sneg.
WhoAMe
Дорогой, у 8266 большое количество подводных камней. Процентов 80 из них я знаю и успешно обхожу. Но это не значит что она стабильная. Давай побеседуем о твоем самом нагруженном кодом устройстве на есп?) Расскажи нам немного что оно делает
То, что камней много и есть проблемы архитектурного плана - спорить не буду. Но вот то, что есп "не стабильна" - это показывает лишь кривой код, либо слабое знание электротехники. Высконагруженный проект на ESP? Так ты из тех, кто предпочитает поднимать вебсервер с динамическим контентом на ардуине, а потом ругаться на "криворуких китайцев"? 🤣 На ЕСП у меня успешно крутится десяток домашних датчиков, мелкая бытовая техника, информационный дисплей к умному дому, OBDII диагностика и даже электронный ручник в авто. И я прекрасно знаю, что все повисания и ненормальное поведение связано либо с ошибками в коде, либо с неверным проектированием схемотехники. Что такое wifi-iot я хз, но если очередное поделие типа LUA - то нет, я это не использую. Либо ардуино ИДЕ, либо SDK. А "тяжелыми" задачами у меня занимается intel nuc, и все ESP прекрасно работают. Кстати, роутер у меня тоже один и для IoT и для домашней техники, хотя многие тут рассказывают, как ESP могут положить сеть. Ни разу такого не происходило. Правда под IoT у меня отдельный VLAN используется, но он все равно обрабатывается тем же самым роутером.
WhoAMe
Более того, при помощи СДК и такой-то матери у меня даже работает одноранговая сеть из нескольких ESP, первая из которых подключена к роутеру, остальные цепляются друг за друга, а к третьей я подключаюсь с телефона и через нее сижу в интернете. И такой тройной NAT они прекрасно держат, обеспечивая скорость интернета на уровне 8-12 Мбит, что вполне достойно для таких простых контроллеров.
Валентин
вы случайно положение в пространстве(помещении) на еспешках не придумали?
Валентин
может какой локатор
Валентин
у вас по идее как и у меня весь дом усеян есп
WhoAMe
может какой локатор
Теоретически думал, но на практике к этому не пришел. Дело в том, что у меня сейчас всего однушка с "П" образной планировкой. И я на ЕСП использую внешние антенки на 5dBi, которые поддерживают сигнал на очень хорошем уровне. Так что у такого "локатора" будет очень высокая погрешность.
Валентин