В настоящее время я делаю простое устройство с 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
ESP32 перестает реагировать на Wi -Fi через некоторое время без какого -либо вывода ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
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
-