diff --git a/Doorbell-Speaker.ino b/Doorbell-Speaker.ino index b49b2c0..381ad73 100644 --- a/Doorbell-Speaker.ino +++ b/Doorbell-Speaker.ino @@ -5,11 +5,13 @@ https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299 https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchbook/ESP32_DFPlayer_full/ESP32_DFPlayer_full.ino https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchbook/ESP32_DFPlayer_full/setup.png https://randomnerdtutorials.com/esp32-web-server-arduino-ide/ +https://randomnerdtutorials.com/solved-reconnect-esp32-to-wifi/ */ /* Anmerkungen: - Übertragung aus Arduino IDE mit Board "ESP32 Dev Module", siehe https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md - Zum Übertragen an das ESP-32-WROOM muss (manchmal?) der BOOT-Button gedrückt werden +- Die Library DFRobotDFPlayerMini-1.0.3.zip muss in der Arduino IDE über Sketch > Bibliothek einbinden > .ZIP-Bibliothek geöffnet werden */ #include @@ -29,7 +31,9 @@ const int ledPin = 26; int charCount = 0; - +unsigned long previousMillis = 0; +unsigned long interval = 120000; +unsigned long lastcheck = 120000; void setup() { @@ -76,14 +80,13 @@ void setupServer() { server.begin(); delay(500); - dfPlayer.play(2); //Play the second mp3 + dfPlayer.play(2); // play the second mp3 digitalWrite(ledPin, HIGH); Serial.println("Setup completed"); } void loop() { - if ((WiFi.status() == WL_CONNECTED)) { WiFiClient client = server.available(); // Listen for incoming clients @@ -107,10 +110,13 @@ void loop() { client.println(); // turns the GPIOs on and off - if (header.indexOf("GET /bell/on") >= 0) { + if (header.indexOf("GET /") >= 0) { + client.println("{ \"status\": \"true\" }"); + } + else if (header.indexOf("GET /bell/on") >= 0) { dfPlayer.play(1); //Play the first mp3 } - else if (header.indexOf("GET /volume/") >= 0) { // yes, I know this is not RESTful + else if (header.indexOf("GET /volume/") >= 0) { // yes, I know this is not RESTful String str1 = header; str1 = str1.substring(header.indexOf("GET /volume/") + 12); volume = str1.substring(0, str1.indexOf(" ")).toInt(); @@ -162,9 +168,15 @@ void loop() { Serial.println(""); } } - else { + else if (lastcheck >= interval) { Serial.println("Reconnecting..."); - setupServer(); + dfPlayer.play(3); // play the third mp3 + WiFi.disconnect(); + WiFi.reconnect(); + previousMillis = millis(); + } + else { + lastcheck = millis() - previousMillis; } } @@ -212,10 +224,12 @@ String printDetail(uint8_t type, int value){ return "Error: In Advertise"; break; default: + return "UNKNOWN ERROR"; break; } break; default: + return "UNKNOWN TYPE"; break; } -} +} \ No newline at end of file