implement ota updater plus minor fixes
This commit is contained in:
		| @@ -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; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -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() { | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user