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
YUNLEI 2022-09-27 22:21:05 +08:00
parent 3ef35a6603
commit 40856f8cf9
8 changed files with 156 additions and 27 deletions

View File

@ -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");
}
}

View File

@ -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");
}
}

View File

@ -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()

View File

@ -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.

View File

@ -9,4 +9,5 @@ void readStaus(void *p);
void httpsOtaStart(void);
void httpsOtaTurnOn(void);
void otaSuccess(void);
int checkNewOTA(const String version);
#endif

View File

@ -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);//状态回调
}

View File

@ -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