#include "simpleota.h" uint16_t otaWaitCounter; OTA_MODE otaMode; void checkOTA() { otaMode = SEARCHING; Serial.println("looking for OTA WiFi..."); // WARNING: to allow ESP-NOW work, this WiFi must be on Channel 1 if (OTA_WIFI_PASSWORD!="") { WiFi.begin(OTA_WIFI_SSID, OTA_WIFI_PASSWORD); //wifi with password }else{ WiFi.begin(OTA_WIFI_SSID); //open wifi } while (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("no OTA WiFi found, proceed normal boot"); otaMode = NONE; WiFi.disconnect(); return; } otaMode = WAITING; } bool initOTA() { if (otaMode == WAITING) { Serial.println("connected to OTA WiFi. Waiting for firmware..."); Serial.print("IP address: "); Serial.println(WiFi.localIP()); ArduinoOTA .onStart([]() { otaMode = UPDATING; String type; if (ArduinoOTA.getCommand() == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end() Serial.println("Start updating " + type); }) .onEnd([]() { Serial.println("\nEnd"); }) .onProgress([](unsigned int progress, unsigned int total) { int prog = (progress / (total / 100)); Serial.printf("Progress: %u%%\r", prog); }) .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(); return 1; //ota ok }else{ return 0; //not using ota } } bool loopOTA() { if (otaMode != NONE) { ArduinoOTA.handle(); if(otaMode == WAITING) { static long mil = millis(); static boolean huehott = false; if(millis() - mil > 100) { huehott = !huehott; mil = millis(); otaWaitCounter++; if(otaWaitCounter >= OTA_WAIT_TIMEOUT) { Serial.println("OTA wait timeout, proceeding normal boot"); otaMode = NONE; } } } return true; } else { return false; } }