219ff3005b
I spent quite a while today figuring out how to get an OTA update over HTTPS on a custom port working. A part of my problem was not putting a slash before the .bin filename, since it wasn't there in the example. This produced invalid HTTP requests. Adding the slash would make it clear that it needs to be there. Given that the URL in line 53 contains the same words "server" and "file.bin", one might assume that in line 55, the slash after the port number would get added automatically, however I have found out that without a slash you get an invalid request. Adding the slash removes any doubt.
73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
/**
|
|
httpUpdate.ino
|
|
|
|
Created on: 27.11.2015
|
|
|
|
*/
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include <WiFi.h>
|
|
#include <WiFiMulti.h>
|
|
|
|
#include <HTTPClient.h>
|
|
#include <HTTPUpdate.h>
|
|
|
|
WiFiMulti WiFiMulti;
|
|
|
|
void setup() {
|
|
|
|
Serial.begin(115200);
|
|
// Serial.setDebugOutput(true);
|
|
|
|
Serial.println();
|
|
Serial.println();
|
|
Serial.println();
|
|
|
|
for (uint8_t t = 4; t > 0; t--) {
|
|
Serial.printf("[SETUP] WAIT %d...\n", t);
|
|
Serial.flush();
|
|
delay(1000);
|
|
}
|
|
|
|
WiFi.mode(WIFI_STA);
|
|
WiFiMulti.addAP("SSID", "PASSWORD");
|
|
|
|
|
|
}
|
|
|
|
void loop() {
|
|
// wait for WiFi connection
|
|
if ((WiFiMulti.run() == WL_CONNECTED)) {
|
|
|
|
WiFiClient client;
|
|
|
|
// The line below is optional. It can be used to blink the LED on the board during flashing
|
|
// The LED will be on during download of one buffer of data from the network. The LED will
|
|
// be off during writing that buffer to flash
|
|
// On a good connection the LED should flash regularly. On a bad connection the LED will be
|
|
// on much longer than it will be off. Other pins than LED_BUILTIN may be used. The second
|
|
// value is used to put the LED on. If the LED is on with HIGH, that value should be passed
|
|
// httpUpdate.setLedPin(LED_BUILTIN, LOW);
|
|
|
|
t_httpUpdate_return ret = httpUpdate.update(client, "http://server/file.bin");
|
|
// Or:
|
|
//t_httpUpdate_return ret = httpUpdate.update(client, "server", 80, "/file.bin");
|
|
|
|
switch (ret) {
|
|
case HTTP_UPDATE_FAILED:
|
|
Serial.printf("HTTP_UPDATE_FAILED Error (%d): %s\n", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str());
|
|
break;
|
|
|
|
case HTTP_UPDATE_NO_UPDATES:
|
|
Serial.println("HTTP_UPDATE_NO_UPDATES");
|
|
break;
|
|
|
|
case HTTP_UPDATE_OK:
|
|
Serial.println("HTTP_UPDATE_OK");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|