From 65a1a3027becaa76c058de4c588fc405c2a05838 Mon Sep 17 00:00:00 2001 From: Florian Overkamp Date: Sun, 10 Nov 2019 20:51:26 +0100 Subject: [PATCH] implement ota updater plus minor fixes --- 10_wifi_conf.ino | 25 +++++++++++++++---------- 99_setup_loop.ino | 4 ++-- ESPGadget.ino | 4 ++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/10_wifi_conf.ino b/10_wifi_conf.ino index c454328..6cad1c0 100644 --- a/10_wifi_conf.ino +++ b/10_wifi_conf.ino @@ -29,13 +29,13 @@ void wifi_associate() { WifiManager.setConfigPortalTimeout(300); // If no configuration is done in 5 mins, exit/restart quietly if (WifiManager.autoConnect(apname)) { // @@@FIXME@@@ we should really set a PSK for the AP (but in my brief testing it crashed the ESP, so what's up with that) settings.ip = WiFi.localIP().toString(); - PRINTLN_SERIAL("Figured out my network \O/"); + PRINTLN_SERIAL("Figured out my network \\O/"); //wificlient.setFingerprint(WTR_SHA1); net.setInsecure(); // Do not check fingerprint net.setTimeout(15000); // 15 Seconds - PRINT_SERIAL("Setting time using SNTP"); +/* PRINT_SERIAL("Setting time using SNTP"); configTime(-5 * 3600, 0, "pool.ntp.org", "time.nist.gov"); now = time(nullptr); while (now < 1510592825) { @@ -47,7 +47,7 @@ void wifi_associate() { struct tm timeinfo; gmtime_r(&now, &timeinfo); PRINT_SERIAL("Current time: "); - APPENDLN_SERIAL(asctime(&timeinfo)); + APPENDLN_SERIAL(asctime(&timeinfo)); */ } } @@ -66,22 +66,27 @@ void wifi_loop() { unsigned long ota_check = millis()/1000; if((ota_lastcheck == 0) || ((ota_check - ota_lastcheck) > OTA_UPDATE_INTERVAL)) { PRINTLN_SERIAL("Checking for OTA update"); -/* + // Check for firmware upgrades - t_httpUpdate_return ret = ESPhttpUpdate.update(wificlient, WTR_SERVER, WTR_SRVPORT, "/fw/", nodeversion); + String version = settings.name; + version.concat("-v"); + version.concat(FW_VERSION); + t_httpUpdate_return ret = ESPhttpUpdate.update(net, OTA_SERVER, OTA_PORT, OTA_URI, version); switch(ret) { case HTTP_UPDATE_FAILED: // HTTP 403, 404 - Serial.printf("Firmware upgrade available, but update failed (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str()); + PRINT_SERIAL("Firmware upgrade available, but update failed "); + APPEND_SERIAL(" (ERR "); + APPEND_SERIAL(String(ESPhttpUpdate.getLastError())); + APPEND_SERIAL(") "); + APPENDLN_SERIAL(ESPhttpUpdate.getLastErrorString().c_str()); break; case HTTP_UPDATE_NO_UPDATES: // HTTP 304 - Serial.println("No firmware upgrade available"); + PRINTLN_SERIAL("No firmware upgrade available"); break; case HTTP_UPDATE_OK: // HTTP 200 - Serial.println("Firmware upgrade available, upgraded ok."); // may not called we reboot the ESP + PRINTLN_SERIAL("Firmware upgrade available, upgraded ok."); // may not called we reboot the ESP break; } - -*/ ota_lastcheck = ota_check; } } diff --git a/99_setup_loop.ino b/99_setup_loop.ino index 2913457..2d4458f 100644 --- a/99_setup_loop.ino +++ b/99_setup_loop.ino @@ -23,7 +23,7 @@ void setup() { // If we run in to trouble, this can painlessly be removed and the resulting device name will just be longer settings.name.remove(devlen+1, 6); - PRINTLN_SERIAL("Figured out who I am \O/"); + PRINTLN_SERIAL("Figured out who I am \\O/"); wifi_setup(); @@ -37,7 +37,7 @@ void setup() { moon_setup(); #endif // Start the cooperative scheduler loops - PRINTLN_SERIAL("Done setting up, ready for main loop \O/"); + PRINTLN_SERIAL("Done setting up, ready for main loop \\O/"); } void loop() { diff --git a/ESPGadget.ino b/ESPGadget.ino index 6e00d57..da92008 100644 --- a/ESPGadget.ino +++ b/ESPGadget.ino @@ -13,7 +13,7 @@ // Implement versioning so that new firmware can be done OTA // Todo: -// Split the wifi and mqtt code in order to support http interface +// maybe: loading settings on SPIFFS or similar so we can create more generic firmware? https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html#flash-layout // Stay on the lookout for watchdog crashes, see also https://www.sigmdel.ca/michel/program/esp8266/arduino/watchdogs_en.html#ESP8266_WDT_RECOV // Keeps crashing after a few days. Dunno why. https://www.pieterverhees.nl/sparklesagarbage/esp8266/130-difference-between-esp-reset-and-esp-restart // More on this subject https://github.com/esp8266/Arduino/issues/1017 @@ -34,7 +34,7 @@ // v12: Refactored inbound commands to hook in to the modules (module_message function), completed assimilation of (never-published) Moon_Connected sketch // v11: Simplified scheduler, back to cooperative looping // v10: First 'production' run. MQTT over TLS, but no OTA support. -const int FW_VERSION = 13; +const int FW_VERSION = 14; // // Configuration settings