From 68914621ee5f1d63e6844247737306c66e5e71b4 Mon Sep 17 00:00:00 2001 From: x Date: Thu, 20 Jun 2024 20:47:50 +0200 Subject: [PATCH] Add AndroidOTA --- src/main.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 23136a4..0034884 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #define RELAY 4 // GPIO4 #define WIFI_NAME "TechInc" @@ -7,6 +8,8 @@ #define HTTP_HOST "google.com" #define HTTP_PORT (80) +void ensureWiFiConnection(); + bool testHTTP() { WiFiClient client; client.setNoDelay(true); @@ -18,10 +21,47 @@ bool testHTTP() { // Returns true if Internet works bool uplinkWorks() { return testHTTP(); } +void setupOTA() { +ArduinoOTA.onStart([]() { + String type; + if (ArduinoOTA.getCommand() == U_FLASH) { + type = "sketch"; + } else { // U_FS + type = "filesystem"; + } + + // NOTE: if updating FS this would be the place to unmount FS using FS.end() + Serial.println("Start updating " + type); + }); + ArduinoOTA.onEnd([]() { + Serial.println("\nEnd"); + }); + ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { + Serial.printf("Progress: %u%%\r", (progress / (total / 100))); + }); + ArduinoOTA.onError([](ota_error_t error) { + Serial.printf("Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) { + Serial.println("Auth Failed"); + } else if (error == OTA_BEGIN_ERROR) { + Serial.println("Begin Failed"); + } 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"); + } + }); + ArduinoOTA.begin(); +} + void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); pinMode(RELAY, OUTPUT); + ensureWiFiConnection(); + setupOTA(); } void relayOn() { @@ -63,8 +103,12 @@ void ensureWiFiConnection() { Serial.println(WiFi.localIP()); } } + void loop() { ensureWiFiConnection(); testInternet(); - delay(5000); + for (size_t i = 0; i < 5; i++) { + ArduinoOTA.handle(); + delay(1000); + } }