• Система автоматизации с открытым исходным кодом на базе 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");
  }
}
 
Сверху Снизу