From 21beb90a76d10fab443613cd1db84696deaa284a Mon Sep 17 00:00:00 2001 From: bendtherules Date: Tue, 28 Nov 2023 18:52:07 +0530 Subject: [PATCH] Print IP info --- build/esp12e/firmware.bin | Bin 394208 -> 394544 bytes include/myOTA.h | 4 +++- include/version.h | 6 +++--- src/main.cpp | 6 ++++++ src/myOTA.cpp | 27 +++++++++++++++++++++------ versioning | 2 +- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/build/esp12e/firmware.bin b/build/esp12e/firmware.bin index ee7db7e7f3c84829b70559bfcb5cbbe749098a63..bc064c415aaa84b62b4537a26634c945ad09b43e 100644 GIT binary patch delta 30673 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�>wz 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 diff --git a/include/myOTA.h b/include/myOTA.h index cabb227..a9ec703 100644 --- a/include/myOTA.h +++ b/include/myOTA.h @@ -3,4 +3,6 @@ void setupOTALocal(); void handleOTALocal(); -void handleOTARemote(); \ No newline at end of file +void handleOTARemote(); + +void printIPInfo(); diff --git a/include/version.h b/include/version.h index 4d40c1a..83aced3 100644 --- a/include/version.h +++ b/include/version.h @@ -1,9 +1,9 @@ #ifndef BUILD_NUMBER - #define BUILD_NUMBER 42 + #define BUILD_NUMBER 47 #endif #ifndef VERSION - #define VERSION "v0.1.42 - 2023-11-28 18:31:54.334129" + #define VERSION "v0.1.47 - 2023-11-28 18:50:16.207931" #endif #ifndef VERSION_SHORT - #define VERSION_SHORT "v0.1.42" + #define VERSION_SHORT "v0.1.47" #endif diff --git a/src/main.cpp b/src/main.cpp index 437c159..5c0fda8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -75,6 +75,7 @@ const String KEY_D = "0x1FE20DF"; const String KEY_ON = "0x1FE48B7"; const String KEY_OFF = "0x1FE48B7"; const String KEY_MODE = "0x1FE58A7"; +const String KEY_RPT = "0x1FE10EF"; char lastPressedKey = '\0'; @@ -118,6 +119,9 @@ void handleKeyPress(char pressedKey) { playBuzzer(BUZZER_PIN, TONE_BEEP_TWICE); handleOTARemote(); } + if (pressedKey == 'I') { + printIPInfo(); + } // If pressed number uint8_t currentNumberEntered = pressedKey - '0'; uint8_t lastNumberEntered = lastPressedKey - '0'; @@ -208,6 +212,8 @@ void loop() { pressedKey = 'R'; } else if (hexKey == KEY_MODE) { pressedKey = 'U'; + } else if (hexKey == KEY_RPT) { + pressedKey = 'I'; } if (pressedKey != '\0') { handleKeyPress(pressedKey); diff --git a/src/myOTA.cpp b/src/myOTA.cpp index a81bfed..6f5c0c1 100644 --- a/src/myOTA.cpp +++ b/src/myOTA.cpp @@ -11,9 +11,11 @@ void setupOTALocal() { Serial.println("Booting"); - char infoBuffer[LCD_COLUMNS]; - sprintf(infoBuffer, "W:%s", WIFI_SSID); - showInsideInfo(infoBuffer); + { + char infoBuffer[LCD_COLUMNS]; + sprintf(infoBuffer, "W:%s", WIFI_SSID); + showInsideInfo(infoBuffer); + } WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.waitForConnectResult() != WL_CONNECTED) { @@ -33,9 +35,11 @@ void setupOTALocal() { }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { Serial.printf("Progress:%u%%\r", (progress / (total / 100))); - char infoBuffer[LCD_COLUMNS]; - sprintf(infoBuffer, "LU:P:%u%%", (progress / (total / 100))); - showInsideInfo(infoBuffer); + { + char infoBuffer[LCD_COLUMNS]; + sprintf(infoBuffer, "LU:P:%u%%", (progress / (total / 100))); + showInsideInfo(infoBuffer); + } }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("Error[%u]:", error); @@ -44,11 +48,22 @@ void setupOTALocal() { else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); + showInsideInfo("LU:Failed"); }); ArduinoOTA.begin(); Serial.println("Ready"); Serial.print("IP address:"); Serial.println(WiFi.localIP()); + showInsideInfo("Ready"); +} + +void printIPInfo() { + String localIPStr = WiFi.localIP().toString(); + char localIP[LCD_COLUMNS]; + localIPStr.toCharArray(localIP, LCD_COLUMNS); + char infoBuffer[LCD_COLUMNS]; + sprintf(infoBuffer, "W:%s", localIP); + showInsideInfo(infoBuffer); } void handleOTALocal() { diff --git a/versioning b/versioning index f70d7bb..801f180 100644 --- a/versioning +++ b/versioning @@ -1 +1 @@ -42 \ No newline at end of file +47 \ No newline at end of file