Added basic WebSocket Functionality
This commit is contained in:
65
vesper/ota.hpp
Normal file
65
vesper/ota.hpp
Normal file
@@ -0,0 +1,65 @@
|
||||
void checkForUpdates();
|
||||
void performOTA();
|
||||
|
||||
void checkForUpdates() {
|
||||
Serial.println("Checking for firmware updates...");
|
||||
|
||||
// Step 1: Check the current version on the server
|
||||
HTTPClient http;
|
||||
http.begin(versionUrl);
|
||||
int httpCode = http.GET();
|
||||
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
String newVersionStr = http.getString();
|
||||
float newVersion = newVersionStr.toFloat();
|
||||
|
||||
Serial.printf("Current version: %.1f, Available version: %.1f\n", currentVersion, newVersion);
|
||||
|
||||
// Step 2: Compare the version
|
||||
if (newVersion > currentVersion) {
|
||||
Serial.println("New version available. Starting update...");
|
||||
performOTA(); // Perform the OTA update if a new version is found
|
||||
} else {
|
||||
Serial.println("No new version available.");
|
||||
}
|
||||
} else {
|
||||
Serial.printf("Failed to retrieve version. HTTP error code: %d\n", httpCode);
|
||||
}
|
||||
http.end();
|
||||
}
|
||||
|
||||
void performOTA() {
|
||||
HTTPClient http;
|
||||
http.begin(firmwareUrl);
|
||||
int httpCode = http.GET();
|
||||
|
||||
if (httpCode == HTTP_CODE_OK) {
|
||||
int contentLength = http.getSize();
|
||||
if (contentLength > 0) {
|
||||
bool canBegin = Update.begin(contentLength);
|
||||
if (canBegin) {
|
||||
Serial.println("Starting OTA update...");
|
||||
WiFiClient *client = http.getStreamPtr();
|
||||
size_t written = Update.writeStream(*client);
|
||||
if (written == contentLength) {
|
||||
Serial.println("Update complete");
|
||||
if (Update.end()) {
|
||||
Serial.println("Update successfully finished. Rebooting...");
|
||||
ESP.restart(); // Reboot to apply the update
|
||||
} else {
|
||||
Serial.printf("Update failed: %s\n", Update.errorString());
|
||||
}
|
||||
} else {
|
||||
Serial.println("Update failed: Written size mismatch.");
|
||||
}
|
||||
} else {
|
||||
Serial.println("Not enough space for update.");
|
||||
}
|
||||
} else {
|
||||
Serial.println("Firmware file is empty.");
|
||||
}
|
||||
} else {
|
||||
Serial.printf("Firmware HTTP error code: %d\n", httpCode);
|
||||
}
|
||||
http.end();
|
||||
}
|
||||
Reference in New Issue
Block a user