ESP OTA通过https web服务器更新



我有一个旧代码,它运行良好,没有问题,但我被要求更改OTA配置,以便此代码可以从SSL服务器更新自己。我有证书和指纹需要这个(从谷歌铬下载(。我在谷歌上搜索并尝试了HTTPS上OTA的大多数建议方法。但它们都不适用于我。我从"ESPhttpUpdate.update"中得到的结果总是"-1〃;这意味着";连接失败";。

有人能提出一个行之有效的方法吗?由于我没有任何正确的代码,所以我没有发布任何代码。我只是想要一个建议或一个示例代码。

提前感谢大家

问题已经解决。

我已经将服务器地址分为两部分(如示例代码所示(,URL和URI;但我不知道为什么,当我把它们连接在一起时,问题就解决了。

这是那些可能需要它的人的代码:

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <FS.h>
#include "ESP8266httpUpdate.h"
/********************************************************
******************************************************** 
********************************************************/
const char* ssid = "********";  // modify this
const char* password = "********";   // modify this
const char* host = "https://server/steamer_v1_2.bin";   // modify this
/********************************************************
******************************************************** 
********************************************************/
void setup() {
Serial.begin(115200);

WiFi.mode(WIFI_STA);
for (uint8_t t = 4; t > 0; t--)
{
Serial.printf("[SETUP] WAIT %d...n", t);
Serial.flush();
delay(1000);
}
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
if (WiFi.SSID() != ssid) {
WiFi.begin(ssid, password);
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// configure time
configTime(3 * 3600, 0, "pool.ntp.org");
BearSSL::WiFiClientSecure client;
const uint8_t fingerprint[20] = {0xdd, 0xa5, 0x2d, 0x31, 0x25, 0x31, 0xae, 0x7a, 0x10, 0x0b, 0x68, 0xba, 0x22, 0x84, 0x1a, 0x94, 0xec, 0x79, 0xb4, 0xbb};   // modify this
client.setFingerprint(fingerprint);
auto ret = ESPhttpUpdate.update(client, host);
// if successful, ESP will restart
Serial.println("update failed");
Serial.println((int) ret);
}
/********************************************************
******************************************************** 
********************************************************/
void loop() {
}

最新更新