Skip to content

Commit

Permalink
OTA via the OpenCO2 Sensor itself
Browse files Browse the repository at this point in the history
  • Loading branch information
davidkreidler committed Oct 23, 2023
1 parent e7265fb commit 9f8241b
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 2 deletions.
67 changes: 67 additions & 0 deletions HttpsOTAUpdate.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#include "HttpsOTAUpdate.h"

unsigned long otaProgress;

static const char *rootCACertificate = \
"-----BEGIN CERTIFICATE-----\n"
"MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh\n"
"MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
"d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
"QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT\n"
"MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS\n"
"U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n"
"AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a\n"
"qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn\n"
"g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW\n"
"raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB\n"
"Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r\n"
"eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB\n"
"/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU\n"
"A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG\n"
"CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG\n"
"GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh\n"
"Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV\n"
"HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH\n"
"bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB\n"
"MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB\n"
"AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z\n"
"ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h\n"
"qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC\n"
"EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6\n"
"ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E\n"
"A7sKPPcw7+uvTPyLNhBzPvOk\n"
"-----END CERTIFICATE-----\n";

void HttpEvent(HttpEvent_t *event) {
switch(event->event_id) {
case HTTP_EVENT_ERROR:
Serial.printf("HTTP_EVENT_ERROR\n");
break;
case HTTP_EVENT_ON_CONNECTED:
Serial.printf("HTTP_EVENT_ON_CONNECTED\n");
otaProgress = 0;
break;
case HTTP_EVENT_HEADER_SENT:
Serial.printf("HTTP_EVENT_HEADER_SENT\n");
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:
Serial.printf("#");
otaProgress += event->data_len;
break;
case HTTP_EVENT_ON_FINISH:
Serial.printf("HTTP_EVENT_ON_FINISH\n");
break;
case HTTP_EVENT_DISCONNECTED:
Serial.printf("HTTP_EVENT_DISCONNECTED\n");
break;
}
}

void ota_http_update() {
Serial.printf("Starting OTA\n");
HttpsOTA.onHttpEvent(HttpEvent);
HttpsOTA.begin("https://https://raw.githubusercontent.com/davidkreidler/OpenCO2_Sensor/ota/firmware/OpenCO2_Sensor.ino.bin", rootCACertificate);
}
9 changes: 7 additions & 2 deletions OpenCO2_Sensor.ino
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ void toggleWiFi() {
preferences.end();
displayWiFi(useWiFi);
if (!BatteryMode) handleWiFiChange();
delay(500);
//delay(500);

bool ip_shown = false;
while (digitalRead(BUTTON) != 0) { // wait for button press
Expand Down Expand Up @@ -612,6 +612,10 @@ void handleButtonPress() {
return;
case INFO:
displayinfo();
if (WiFi.status() == WL_CONNECTED) {
ota_http_update();
delay(5000);
}
while (digitalRead(BUTTON) != 0) delay(100); // wait for button press
refreshes = 1;
return;
Expand Down Expand Up @@ -749,7 +753,8 @@ void setup() {
if (!initDone) initOnce();

#if ARDUINO_USB_CDC_ON_BOOT && !ARDUINO_USB_MODE
if (TEST_MODE) Serial.begin(115200);
//if (TEST_MODE)
Serial.begin(115200);
#endif

/* power */
Expand Down
Binary file added firmware/OpenCO2_Sensor.ino.bin
Binary file not shown.

0 comments on commit 9f8241b

Please sign in to comment.