ESP32 перестает реагировать на Wi -Fi через некоторое время без какого -либо выводаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 ESP32 перестает реагировать на Wi -Fi через некоторое время без какого -либо вывода

Сообщение Anonymous »

В настоящее время я делаю простое устройство с ESP32 (NODEMCU) для управления одним из моих потолочных вентиляторов. Для этого я захватил ИК -коды пульта и просто воспроизводил их, используя IR LIB, который работает нормально. ESP32 можно контролировать через Wi -Fi с помощью очень примитивного «протокола». Никакие новые клиенты не могут подключаться, я не получаю никаких последовательных выводов (у меня есть выходы, когда сеть теряется и т. Д.). < /P>
Я использую статический IP для устройства, код находится в конце поста. Любой намек на то, что я испорчу, будет очень ценится! (Я отредактировал ИК -коды, так как они очень шестнадцатилетние и не очень необходимы для решения) < /p>
const char* password = "WIFIPASSWORD";
const char* ssid = "WIFISSID";

#define IR_RECEIVE_PIN 15
#define IR_SEND_PIN 4
#define TONE_PIN 27
#define APPLICATION_PIN 16

#include
#include
#include
#include

const char ir_light_on[] = "0000";
const char ir_light_off[] = "0000";
const char ir_fan_0[] = "0000";
const char ir_fan_1[] = "0000";
const char ir_fan_3[] = "0000";

IRsend irsend;

IPAddress staticIP(10, 0, 40, 60);
IPAddress gateway(10, 0, 40, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(10, 0, 40, 1);
IPAddress secondaryDNS(10, 0, 40, 1);

#define PORT 2106

WiFiServer server(PORT);

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

if (!WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");

Serial.print("Local ESP32 IP: ");
Serial.println(WiFi.localIP());

IrSender.begin();
server.begin();
}

#define LIGHT_OFF '0'
#define LIGHT_ON '1'
#define FAN_0 '2'
#define FAN_1 '3'
#define FAN_2 '4'
#define FAN_3 '5'
#define HEARTBEAT '6'

bool
action(char c)
{
static const unsigned int repetitions = 1;
switch (c) {
case LIGHT_ON:
Serial.println("Turning Light ON");
irsend.sendPronto(ir_light_on, repetitions);
break;
case LIGHT_OFF:
Serial.println("Turning Light OFF");
irsend.sendPronto(ir_light_off, repetitions);
break;
case FAN_0:
Serial.println("Turning Fan OFF");
irsend.sendPronto(ir_fan_0, repetitions);
break;
case FAN_1:
Serial.println("Turning Fan on 1");
irsend.sendPronto(ir_fan_1, repetitions);
break;
case FAN_2:
Serial.println("Turning Fan on 2");
irsend.sendPronto(ir_fan_2, repetitions);
break;
case FAN_3:
Serial.println("Turning Fan on 3");
irsend.sendPronto(ir_fan_3, repetitions);
break;
case HEARTBEAT:
Serial.println("Got Heartbeat");
return true;
case '\n':
return true;
default:
Serial.println("Unknown command received!");
return false;
}

delay(250); // This seems to be neccessary, since otherwise codes are not sent
// at all... Dunno why

return true;
}

std::list clients;
unsigned long previous_reconnect = 0;
const long reconnect_interval = 30000;

void
loop()
{

if (WiFi.status() != WL_CONNECTED) {
unsigned long current = millis();
if (current - previous_reconnect >= reconnect_interval) {
Serial.println("Connection has been lost. Trying to reconnect.");
WiFi.disconnect();
WiFi.reconnect();
previous_reconnect = current;
}
return;
} else if (WiFi.status() == WL_CONNECTED) {
previous_reconnect = 0;
}

WiFiClient client = server.available();

if (client) {
clients.push_back(client);
}

auto it = clients.begin();

while (it != clients.end()) {
WiFiClient& client = *it;
if (!client.connected()) {
it = clients.erase(it);
continue;
}
if (client.available()) {
char c = client.read();

if (!action(c)) {
it = clients.erase(it);
continue;
}
client.write((uint8_t*)&c, sizeof(char));
++it;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... any-output
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ESP32 перестает реагировать на Wi -Fi через некоторое время без какого -либо выхода [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Модуль разработки ESP32-WROOM-32 выходит из строя через некоторое время после запуска
    Anonymous » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Код Visual Studio CTRL+Click с Java перестает работать через некоторое время
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Приложение GPS-слежения в Xamarin через некоторое время перестает работать в фоновом режиме
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • FileSystemWatcher через некоторое время перестает запускать события [дубликат]
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»