mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 05:06:44 +00:00
Add otaUpdateCheck
This commit is contained in:
parent
61d1746c26
commit
9afcac61de
@ -3,31 +3,73 @@
|
|||||||
|
|
||||||
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
||||||
|
|
||||||
#include "hasp_conf.h"
|
#include "hasp_conf.h"
|
||||||
|
|
||||||
#include "hasp_debug.h"
|
#include "hasp_debug.h"
|
||||||
#include "hasp_ota.h"
|
#include "hasp_ota.h"
|
||||||
|
|
||||||
#include "../hasp/hasp_dispatch.h"
|
#include "../hasp/hasp_dispatch.h"
|
||||||
#include "../hasp/hasp.h"
|
#include "../hasp/hasp.h"
|
||||||
|
|
||||||
#if defined(ARDUINO_ARCH_ESP8266)
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
#include <ESP8266HTTPClient.h>
|
#include <ESP8266HTTPClient.h>
|
||||||
#include <ESP8266httpUpdate.h>
|
#include <ESP8266httpUpdate.h>
|
||||||
#include <ESP8266WiFi.h>
|
#include <ESP8266WiFi.h>
|
||||||
#else
|
#else
|
||||||
#include <HTTPClient.h>
|
#include <HTTPClient.h>
|
||||||
#include <HTTPUpdate.h>
|
#include <HTTPUpdate.h>
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ArduinoOTA.h>
|
#include <ArduinoOTA.h>
|
||||||
|
|
||||||
static WiFiClient otaClient;
|
static WiFiClient otaClient;
|
||||||
std::string otaUrl = "http://ota.netwize.be";
|
std::string otaUrl = "http://ota.netwize.be";
|
||||||
int16_t otaPort = HASP_OTA_PORT;
|
int16_t otaPort = HASP_OTA_PORT;
|
||||||
int8_t otaPrecentageComplete = -1;
|
int8_t otaPrecentageComplete = -1;
|
||||||
|
|
||||||
|
bool otaUpdateCheck()
|
||||||
|
{ // firmware update check
|
||||||
|
WiFiClientSecure wifiUpdateClientSecure;
|
||||||
|
HTTPClient updateClient;
|
||||||
|
Log.notice(TAG_OTA, F("UPDATE: Checking update URL: %s"), otaUrl.c_str());
|
||||||
|
|
||||||
|
// wifiUpdateClientSecure.setInsecure();
|
||||||
|
// wifiUpdateClientSecure.setBufferSizes(512, 512);
|
||||||
|
updateClient.begin(wifiUpdateClientSecure, otaUrl.c_str());
|
||||||
|
|
||||||
|
int httpCode = updateClient.GET(); // start connection and send HTTP header
|
||||||
|
if(httpCode != HTTP_CODE_OK) {
|
||||||
|
Log.error(TAG_OTA, F("Update check failed: %s"), updateClient.errorToString(httpCode).c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicJsonDocument updateJson(1024);
|
||||||
|
DeserializationError jsonError = deserializeJson(updateJson, updateClient.getString());
|
||||||
|
updateClient.end();
|
||||||
|
|
||||||
|
if(jsonError) { // Couldn't parse the returned JSON, so bail
|
||||||
|
Log.error(TAG_OTA, F("JSON parsing failed: %s"), jsonError.c_str());
|
||||||
|
// mqttClient.publish(mqttStateJSONTopic,
|
||||||
|
// String(F("{\"event\":\"jsonError\",\"event_source\":\"updateCheck()\",\"event_description\":"
|
||||||
|
// "\"Failed to parse incoming JSON command with error\"")) +
|
||||||
|
// String(jsonError.c_str()));
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if(!updateJson["d1_mini"]["version"].isNull()) {
|
||||||
|
// updateEspAvailableVersion = updateJson["d1_mini"]["version"].as<float>();
|
||||||
|
// debugPrintln(String(F("UPDATE: updateEspAvailableVersion: ")) + String(updateEspAvailableVersion));
|
||||||
|
// espFirmwareUrl = updateJson["d1_mini"]["firmware"].as<String>();
|
||||||
|
// if(updateEspAvailableVersion > haspVersion) {
|
||||||
|
// updateEspAvailable = true;
|
||||||
|
// debugPrintln(String(F("UPDATE: New ESP version available: ")) + String(updateEspAvailableVersion));
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
Log.verbose(TAG_OTA, F("UPDATE: Update check completed"));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void otaProgress(void)
|
static inline void otaProgress(void)
|
||||||
{
|
{
|
||||||
Log.verbose(TAG_OTA, F("%s update in progress... %3u%"),
|
Log.verbose(TAG_OTA, F("%s update in progress... %3u%"),
|
||||||
@ -99,22 +141,22 @@ void otaSetup(void)
|
|||||||
// delay(5000);
|
// delay(5000);
|
||||||
});
|
});
|
||||||
|
|
||||||
#if HASP_USE_MQTT > 0
|
#if HASP_USE_MQTT > 0
|
||||||
ArduinoOTA.setHostname(String(mqttGetNodename()).c_str());
|
ArduinoOTA.setHostname(String(mqttGetNodename()).c_str());
|
||||||
#else
|
#else
|
||||||
ArduinoOTA.setHostname(String(mqttGetNodename()).c_str());
|
ArduinoOTA.setHostname(String(mqttGetNodename()).c_str());
|
||||||
#endif
|
#endif
|
||||||
// ArduinoOTA.setPassword(configPassword);
|
// ArduinoOTA.setPassword(configPassword);
|
||||||
ArduinoOTA.setPort(otaPort);
|
ArduinoOTA.setPort(otaPort);
|
||||||
|
|
||||||
#if ESP32
|
#if ESP32
|
||||||
#if HASP_USE_MDNS > 0
|
#if HASP_USE_MDNS > 0
|
||||||
ArduinoOTA.setMdnsEnabled(true);
|
ArduinoOTA.setMdnsEnabled(true);
|
||||||
#else
|
#else
|
||||||
ArduinoOTA.setMdnsEnabled(false);
|
ArduinoOTA.setMdnsEnabled(false);
|
||||||
#endif
|
#endif
|
||||||
// ArduinoOTA.setTimeout(1000);
|
// ArduinoOTA.setTimeout(1000);
|
||||||
#endif
|
#endif
|
||||||
ArduinoOTA.setRebootOnSuccess(false); // We do that ourselves
|
ArduinoOTA.setRebootOnSuccess(false); // We do that ourselves
|
||||||
|
|
||||||
ArduinoOTA.begin();
|
ArduinoOTA.begin();
|
||||||
@ -138,19 +180,19 @@ void otaHttpUpdate(const char * espOtaUrl)
|
|||||||
{ // Update ESP firmware from HTTP
|
{ // Update ESP firmware from HTTP
|
||||||
// nextionSendCmd("page 0");
|
// nextionSendCmd("page 0");
|
||||||
// nextionSetAttr("p[0].b[1].txt", "\"HTTP update\\rstarting...\"");
|
// nextionSetAttr("p[0].b[1].txt", "\"HTTP update\\rstarting...\"");
|
||||||
#if HASP_USE_MDNS > 0
|
#if HASP_USE_MDNS > 0
|
||||||
mdnsStop(); // Keep mDNS responder from breaking things
|
mdnsStop(); // Keep mDNS responder from breaking things
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ARDUINO_ARCH_ESP8266)
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
// ESPhttpUpdate.onStart(update_started);
|
// ESPhttpUpdate.onStart(update_started);
|
||||||
// ESPhttpUpdate.onEnd(update_finished);
|
// ESPhttpUpdate.onEnd(update_finished);
|
||||||
// ESPhttpUpdate.onProgress(update_progress);
|
// ESPhttpUpdate.onProgress(update_progress);
|
||||||
// ESPhttpUpdate.onError(update_error);
|
// ESPhttpUpdate.onError(update_error);
|
||||||
ESP8266HTTPUpdate httpUpdate;
|
ESP8266HTTPUpdate httpUpdate;
|
||||||
#else
|
#else
|
||||||
HTTPUpdate httpUpdate;
|
HTTPUpdate httpUpdate;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
httpUpdate.rebootOnUpdate(false); // We do that ourselves
|
httpUpdate.rebootOnUpdate(false); // We do that ourselves
|
||||||
t_httpUpdate_return returnCode = httpUpdate.update(otaClient, espOtaUrl);
|
t_httpUpdate_return returnCode = httpUpdate.update(otaClient, espOtaUrl);
|
||||||
@ -170,9 +212,9 @@ void otaHttpUpdate(const char * espOtaUrl)
|
|||||||
dispatch_reboot(true);
|
dispatch_reboot(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HASP_USE_MDNS > 0
|
#if HASP_USE_MDNS > 0
|
||||||
mdnsStart();
|
mdnsStart();
|
||||||
#endif // HASP_USE_MDNS
|
#endif // HASP_USE_MDNS
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ARDUINO_ARCH_ESP8266 || ARDUINO_ARCH_ESP32
|
#endif // ARDUINO_ARCH_ESP8266 || ARDUINO_ARCH_ESP32
|
Loading…
x
Reference in New Issue
Block a user