99 lines
4.1 KiB
C++
99 lines
4.1 KiB
C++
// This sketch provide the functionality of OTA Firmware Upgrade
|
|
#include "WiFi.h"
|
|
#include "HttpsOTAUpdate.h"
|
|
// This sketch shows how to implement HTTPS firmware update Over The Air.
|
|
// Please provide your WiFi credentials, https URL to the firmware image and the server certificate.
|
|
|
|
static const char *ssid = "your-ssid"; // your network SSID (name of wifi network)
|
|
static const char *password = "your-password"; // your network password
|
|
|
|
static const char *url = "https://example.com/firmware.bin"; //state url of your firmware image
|
|
|
|
static const char *server_certificate = "-----BEGIN CERTIFICATE-----\n" \
|
|
"MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" \
|
|
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" \
|
|
"DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" \
|
|
"SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" \
|
|
"GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
|
|
"AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" \
|
|
"q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" \
|
|
"SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" \
|
|
"Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" \
|
|
"a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" \
|
|
"/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" \
|
|
"AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" \
|
|
"CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" \
|
|
"bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" \
|
|
"c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" \
|
|
"VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" \
|
|
"ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" \
|
|
"MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" \
|
|
"Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" \
|
|
"AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" \
|
|
"uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" \
|
|
"wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" \
|
|
"X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" \
|
|
"PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" \
|
|
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n" \
|
|
"-----END CERTIFICATE-----";
|
|
|
|
static HttpsOTAStatus_t otastatus;
|
|
|
|
void HttpEvent(HttpEvent_t *event)
|
|
{
|
|
switch(event->event_id) {
|
|
case HTTP_EVENT_ERROR:
|
|
Serial.println("Http Event Error");
|
|
break;
|
|
case HTTP_EVENT_ON_CONNECTED:
|
|
Serial.println("Http Event On Connected");
|
|
break;
|
|
case HTTP_EVENT_HEADER_SENT:
|
|
Serial.println("Http Event Header Sent");
|
|
break;
|
|
case HTTP_EVENT_ON_HEADER:
|
|
Serial.printf("Http Event On Header, key=%s, value=%s\n", event->header_key, event->header_value);
|
|
break;
|
|
case HTTP_EVENT_ON_DATA:
|
|
break;
|
|
case HTTP_EVENT_ON_FINISH:
|
|
Serial.println("Http Event On Finish");
|
|
break;
|
|
case HTTP_EVENT_DISCONNECTED:
|
|
Serial.println("Http Event Disconnected");
|
|
break;
|
|
}
|
|
}
|
|
|
|
void setup(){
|
|
|
|
Serial.begin(115200);
|
|
Serial.print("Attempting to connect to SSID: ");
|
|
WiFi.begin(ssid, password);
|
|
|
|
// attempt to connect to Wifi network:
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
Serial.print(".");
|
|
delay(1000);
|
|
}
|
|
|
|
Serial.print("Connected to ");
|
|
Serial.println(ssid);
|
|
|
|
HttpsOTA.onHttpEvent(HttpEvent);
|
|
Serial.println("Starting OTA");
|
|
HttpsOTA.begin(url, server_certificate);
|
|
|
|
Serial.println("Please Wait it takes some time ...");
|
|
}
|
|
|
|
void loop(){
|
|
otastatus = HttpsOTA.status();
|
|
if(otastatus == HTTPS_OTA_SUCCESS) {
|
|
Serial.println("Firmware written successfully. To reboot device, call API ESP.restart() or PUSH restart button on device");
|
|
} else if(otastatus == HTTPS_OTA_FAIL) {
|
|
Serial.println("Firmware Upgrade Fail");
|
|
}
|
|
delay(1000);
|
|
}
|