modified: BIlinkerAndHttpsOta.ino
modified: build/preproc/ctags_target_for_gcc_minus_e.cpp modified: build/sketch/httpslei.cpp modified: build/sketch/httpslei.cpp.d modified: build/sketch/httpslei.cpp.o modified: build/sketch/httpslei.h modified: httpslei.cpp modified: httpslei.h message:添加了版本文件检查的功能master
parent
3ef35a6603
commit
40856f8cf9
|
@ -9,7 +9,10 @@
|
|||
#include <WiFi.h>
|
||||
#include <freertos/FreeRTOSConfig.h>
|
||||
#include "httpslei.h"
|
||||
|
||||
/**/
|
||||
const String this_version = "v1";
|
||||
const String next_version = "v2";
|
||||
/**/
|
||||
void button1_callback(const String & state);
|
||||
void none_callback(const String & data);
|
||||
void ot_callback(const String & state);
|
||||
|
@ -69,9 +72,11 @@ void ot_callback(const String & state){
|
|||
{
|
||||
Blinker.print("hello\n");
|
||||
ButtonOta.print("on");
|
||||
httpsOtaStart();
|
||||
}else if (state == "off")
|
||||
{
|
||||
int code = checkNewOTA(next_version); //检查文件是否存在
|
||||
if (code==HTTP_CODE_OK || code == HTTP_CODE_MOVED_PERMANENTLY){
|
||||
httpsOtaStart();
|
||||
}
|
||||
}else if (state == "off"){
|
||||
ButtonOta.print("off");
|
||||
}
|
||||
}
|
|
@ -18,6 +18,7 @@ void ot_callback(const String & state);
|
|||
char *auth = "c7f09e6ce624";
|
||||
char *ssid = "101_lei";
|
||||
char *pswd = "leiyun1314";
|
||||
const String version = "v1";
|
||||
|
||||
BlinkerButton Button1("btn-abc",button1_callback);
|
||||
BlinkerButton ButtonOta("ota",ot_callback);
|
||||
|
@ -70,9 +71,11 @@ void ot_callback(const String & state){
|
|||
{
|
||||
Blinker.print("hello\n");
|
||||
ButtonOta.print("on");
|
||||
httpsOtaStart();
|
||||
}else if (state == "off")
|
||||
{
|
||||
int code = checkNewOTA(version);
|
||||
if (code==HTTP_CODE_OK || code == HTTP_CODE_MOVED_PERMANENTLY){
|
||||
httpsOtaStart();
|
||||
}
|
||||
}else if (state == "off"){
|
||||
ButtonOta.print("off");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
#include <freertos/FreeRTOSConfig.h>
|
||||
#include "httpslei.h"
|
||||
#include <Arduino.h>
|
||||
#include <HTTPClient.h>
|
||||
#include <WiFiClientSecure.h>
|
||||
/*
|
||||
* - ESP_OK: OTA data updated, next reboot will use specified partition.
|
||||
* - ESP_FAIL: For generic failure.
|
||||
|
@ -13,6 +15,7 @@
|
|||
* - For other return codes, refer OTA documentation in esp-idf's app_update component.
|
||||
*/
|
||||
static const char *url = "https://www.lshserver.com:9006/test/esp32-v1.bin"; //state url of your firmware image
|
||||
String urls = "https://www.lshserver.com:9006/test/";
|
||||
static const char *server_certificate =\
|
||||
"-----BEGIN CERTIFICATE-----\n\
|
||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n\
|
||||
|
@ -86,12 +89,50 @@ void readStaus(void *p){
|
|||
delay(1000);
|
||||
}
|
||||
}
|
||||
/***/
|
||||
int checkNewOTA(const String version){
|
||||
WiFiClientSecure *client = new WiFiClientSecure;
|
||||
int httpCode = 0;
|
||||
if(client) {
|
||||
client -> setCACert(server_certificate);
|
||||
{
|
||||
// Add a scoping block for HTTPClient https to make sure it is destroyed before WiFiClientSecure *client is
|
||||
HTTPClient https;
|
||||
Serial.print("[HTTPS_CHECK] begin "+urls+"esp32-"+version+".bin"+"\n");
|
||||
if (https.begin(*client,urls+"esp32-"+version+".bin")) { // HTTPS
|
||||
Serial.print("[HTTPS_CHECK] GET...\n");
|
||||
// start connection and send HTTP header
|
||||
httpCode = https.GET();
|
||||
// httpCode will be negative on error
|
||||
if (httpCode > 0) {
|
||||
// HTTP header has been send and Server response header has been handled
|
||||
Serial.printf("[HTTPS_CHECK] GET... code: %d\n", httpCode);
|
||||
// file found at server
|
||||
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
|
||||
Serial.println("file is ok");
|
||||
}
|
||||
} else {
|
||||
Serial.printf("[HTTPS_CHECK] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
|
||||
}
|
||||
https.end();
|
||||
} else {
|
||||
Serial.printf("[HTTPS_CHECK] Unable to connect\n");
|
||||
}
|
||||
// End extra scoping block
|
||||
}
|
||||
delete client;
|
||||
} else {
|
||||
Serial.println("Unable to create client");
|
||||
}
|
||||
return httpCode;
|
||||
}
|
||||
void httpsOtaStart(){
|
||||
HttpsOTA.onHttpEvent(HttpEvent); //启用https 调试信息
|
||||
HttpsOTA.begin(url,server_certificate);//开始升级
|
||||
xTaskCreate(readStaus,"readStaus", 2048,NULL,2, NULL);//状态回调
|
||||
xTaskCreate(readStaus,"readStaus",2048,NULL,2, NULL);//状态回调
|
||||
}
|
||||
void httpsOtaTurnOn(){
|
||||
HttpsOTA.onHttpEvent(HttpEvent); //启用https 调试信息
|
||||
|
||||
}
|
||||
/*
|
||||
第一步:在setup中调用 httpsOtaTurnOn()
|
||||
|
|
|
@ -215,4 +215,45 @@ c:\Users\32244\Desktop\BIlinkerAndHttpsOta\build\sketch\httpslei.cpp.o: \
|
|||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/esp_rom/include/esp32/rom/rtc.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/esp_rom/include/esp32/rom/ets_sys.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/soc/esp32/include/soc/rtc_cntl_reg.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\Update\src/HttpsOTAUpdate.h
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\Update\src/HttpsOTAUpdate.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\HTTPClient\src/HTTPClient.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi\src/WiFiClient.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFiClientSecure\src/WiFiClientSecure.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFiClientSecure\src/ssl_client.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/platform.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/mbedtls/esp_config.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/config.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/check_config.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/esp_mem.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/platform_time.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/net.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/net_sockets.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ssl.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/mbedtls/bignum.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/bignum.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ecp.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ssl_ciphersuites.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/pk.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/md.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/platform_util.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/rsa.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ecdsa.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/cipher.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/x509_crt.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/x509.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/asn1.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/x509_crl.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/dhm.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ecdh.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/debug.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/entropy.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/sha512.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/sha512_alt.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/hal/include/hal/sha_types.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/esp_rom/include/esp32/rom/sha.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/ctr_drbg.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/aes.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/aes_alt.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/port/include/aes/esp_aes.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/hal/include/hal/aes_types.h \
|
||||
C:\Users\32244\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5/tools/sdk/esp32/include/mbedtls/mbedtls/include/mbedtls/error.h
|
||||
|
|
Binary file not shown.
|
@ -9,4 +9,5 @@ void readStaus(void *p);
|
|||
void httpsOtaStart(void);
|
||||
void httpsOtaTurnOn(void);
|
||||
void otaSuccess(void);
|
||||
int checkNewOTA(const String version);
|
||||
#endif
|
57
httpslei.cpp
57
httpslei.cpp
|
@ -2,6 +2,8 @@
|
|||
#include <freertos/FreeRTOSConfig.h>
|
||||
#include "httpslei.h"
|
||||
#include <Arduino.h>
|
||||
#include <HTTPClient.h>
|
||||
#include <WiFiClientSecure.h>
|
||||
/*
|
||||
* - ESP_OK: OTA data updated, next reboot will use specified partition.
|
||||
* - ESP_FAIL: For generic failure.
|
||||
|
@ -12,6 +14,7 @@
|
|||
* - For other return codes, refer OTA documentation in esp-idf's app_update component.
|
||||
*/
|
||||
static const char *url = "https://www.lshserver.com:9006/test/esp32-v1.bin"; //state url of your firmware image
|
||||
String urls = "https://www.lshserver.com:9006/test/";
|
||||
static const char *server_certificate =\
|
||||
"-----BEGIN CERTIFICATE-----\n\
|
||||
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n\
|
||||
|
@ -85,14 +88,50 @@ void readStaus(void *p){
|
|||
delay(1000);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief 检查版本文件是否存在
|
||||
*
|
||||
* @param version 版本号,例如"v1",最终合成的文件名是 esp32-v1.bin
|
||||
* @return int 返回https的状态码
|
||||
*/
|
||||
int checkNewOTA(const String version){
|
||||
WiFiClientSecure *client = new WiFiClientSecure;
|
||||
int httpCode = 0;
|
||||
if(client) {
|
||||
client -> setCACert(server_certificate);
|
||||
{
|
||||
// Add a scoping block for HTTPClient https to make sure it is destroyed before WiFiClientSecure *client is
|
||||
HTTPClient https;
|
||||
Serial.print("[HTTPS_CHECK] begin "+urls+"esp32-"+version+".bin"+"\n");
|
||||
if (https.begin(*client,urls+"esp32-"+version+".bin")) { // HTTPS
|
||||
Serial.print("[HTTPS_CHECK] GET...\n");
|
||||
// start connection and send HTTP header
|
||||
httpCode = https.GET();
|
||||
// httpCode will be negative on error
|
||||
if (httpCode > 0) {
|
||||
// HTTP header has been send and Server response header has been handled
|
||||
Serial.printf("[HTTPS_CHECK] GET... code: %d\n", httpCode);
|
||||
// file found at server
|
||||
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
|
||||
Serial.println("file is ok");
|
||||
}
|
||||
} else {
|
||||
Serial.printf("[HTTPS_CHECK] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
|
||||
}
|
||||
https.end();
|
||||
} else {
|
||||
Serial.printf("[HTTPS_CHECK] Unable to connect\n");
|
||||
}
|
||||
// End extra scoping block
|
||||
}
|
||||
delete client;
|
||||
} else {
|
||||
Serial.println("Unable to create client");
|
||||
}
|
||||
return httpCode;
|
||||
}
|
||||
void httpsOtaStart(){
|
||||
HttpsOTA.begin(url,server_certificate);//开始升级
|
||||
xTaskCreate(readStaus,"readStaus", 2048,NULL,2, NULL);//状态回调
|
||||
}
|
||||
void httpsOtaTurnOn(){
|
||||
HttpsOTA.onHttpEvent(HttpEvent); //启用https 调试信息
|
||||
}
|
||||
/*
|
||||
第一步:在setup中调用 httpsOtaTurnOn()
|
||||
第二步:在需要升级的时候调用 httpsOtaStart();
|
||||
*/
|
||||
HttpsOTA.begin(url,server_certificate);//开始升级
|
||||
xTaskCreate(readStaus,"readStaus",2048,NULL,2, NULL);//状态回调
|
||||
}
|
15
httpslei.h
15
httpslei.h
|
@ -1,11 +1,10 @@
|
|||
#ifndef _HTTPSLEI_H__
|
||||
#define _HTTPSLEI_H__
|
||||
#include "esp_http_client.h"
|
||||
#include "esp_https_ota.h"
|
||||
#include "HttpsOTAUpdate.h"
|
||||
void HttpEvent(HttpEvent_t*event);
|
||||
void readStaus(void *p);
|
||||
void httpsOtaStart(void);
|
||||
void httpsOtaTurnOn(void);
|
||||
void otaSuccess(void);
|
||||
#include "esp_http_client.h"
|
||||
#include "esp_https_ota.h"
|
||||
#include "HttpsOTAUpdate.h"
|
||||
void HttpEvent(HttpEvent_t*event);
|
||||
void readStaus(void *p);
|
||||
void httpsOtaStart(void);
|
||||
int checkNewOTA(const String version);
|
||||
#endif
|
Loading…
Reference in New Issue