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

Вопрос wifiServer.begin + narodmon + influx

etaon

New member
Связка arduino mega - softserial(57600) - esp8266(nodemcu) - narodmon.ru, influxdb,grafana....
Арудино снимает показания аналогов и управляет всеми процессами. Отчитывается о состоянии входов и выходов в серийник для ЕСП. Ежесекундно сливает примерно 100 параметров порциями. А есп их разбирает и дальше уже толкает.
ЕСП получает время из интернета и отдаёт его в ардуино. Та ведеёт логи на microSD.
Разобрав параметры пришедшие по серийнику, ЕСП кидает их по локалке на influx. Там уже всякая красота с графиками и т.д.
Также есп кидает порядка 20 параметров на народный монитор. Раз в 5 минут.

Еще на есп есть вэбморда. Ну там все 100 парамтеров выодвятся каждую секунду и обновляются. Как вэбморда для отладки. Браузер локальной тачки выполняет скрипт и запрашивает с есп данные в виде поста гета. Есп видит клиента нового и отдаёт ему что надо.
Все эти процессы выполняются параллельно.
Надо в серийник пихать команды удалённо. Прокинуть порты на роутере или на линухе тунелем сделать по ссш. Putty->router(статика вешняя+портмаппинг)->linux(tunnel)->lan->esp(port:7777)->arduino(serial). Напрямую на есп порты не открываю. ЗАвалят пингами или ещё чем. Было такое с арудинкой и эзэрнэтшилдом.

wifiServer.available(): Возможно ли держать его постоянно открытым и слушающим и при этом не навредить иным коннектам?

Код:
WiFiServer wifiServer(7777);
.....
void loop() {
  WiFiClient client = wifiServer.available();
  if (client) {
    while (client.connected()) {
      while (client.available()) {
        char c = client.read();
        Serial.write(c);
      }
      delay(10);
    }
    client.stop();
    Serial.println("Client disconnected");
  }
}
 
Сверху Снизу