mirror of
https://github.com/esphome/esphome.git
synced 2024-11-26 00:48:19 +01:00
Nextion enable upload from https when using esp-idf (#6051)
This commit is contained in:
parent
886d1a2d00
commit
6061699eff
2 changed files with 18 additions and 8 deletions
|
@ -2,6 +2,7 @@ import esphome.codegen as cg
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome import automation
|
from esphome import automation
|
||||||
from esphome.components import display, uart
|
from esphome.components import display, uart
|
||||||
|
from esphome.components import esp32
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_LAMBDA,
|
CONF_LAMBDA,
|
||||||
|
@ -96,6 +97,11 @@ async def to_code(config):
|
||||||
if CORE.is_esp32 and CORE.using_arduino:
|
if CORE.is_esp32 and CORE.using_arduino:
|
||||||
cg.add_library("WiFiClientSecure", None)
|
cg.add_library("WiFiClientSecure", None)
|
||||||
cg.add_library("HTTPClient", None)
|
cg.add_library("HTTPClient", None)
|
||||||
|
elif CORE.is_esp32 and CORE.using_esp_idf:
|
||||||
|
esp32.add_idf_sdkconfig_option("CONFIG_ESP_TLS_INSECURE", True)
|
||||||
|
esp32.add_idf_sdkconfig_option(
|
||||||
|
"CONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY", True
|
||||||
|
)
|
||||||
elif CORE.is_esp8266 and CORE.using_arduino:
|
elif CORE.is_esp8266 and CORE.using_arduino:
|
||||||
cg.add_library("ESP8266HTTPClient", None)
|
cg.add_library("ESP8266HTTPClient", None)
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ int Nextion::upload_range(const std::string &url, int range_start) {
|
||||||
ESP_LOGVV(TAG, "url: %s", url.c_str());
|
ESP_LOGVV(TAG, "url: %s", url.c_str());
|
||||||
uint range_size = this->tft_size_ - range_start;
|
uint range_size = this->tft_size_ - range_start;
|
||||||
ESP_LOGVV(TAG, "tft_size_: %i", this->tft_size_);
|
ESP_LOGVV(TAG, "tft_size_: %i", this->tft_size_);
|
||||||
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
int range_end = (range_start == 0) ? std::min(this->tft_size_, 16383) : this->tft_size_;
|
int range_end = (range_start == 0) ? std::min(this->tft_size_, 16383) : this->tft_size_;
|
||||||
if (range_size <= 0 or range_end <= range_start) {
|
if (range_size <= 0 or range_end <= range_start) {
|
||||||
ESP_LOGE(TAG, "Invalid range");
|
ESP_LOGE(TAG, "Invalid range");
|
||||||
|
@ -37,6 +37,8 @@ int Nextion::upload_range(const std::string &url, int range_start) {
|
||||||
esp_http_client_config_t config = {
|
esp_http_client_config_t config = {
|
||||||
.url = url.c_str(),
|
.url = url.c_str(),
|
||||||
.cert_pem = nullptr,
|
.cert_pem = nullptr,
|
||||||
|
.disable_auto_redirect = false,
|
||||||
|
.max_redirection_count = 10,
|
||||||
};
|
};
|
||||||
esp_http_client_handle_t client = esp_http_client_init(&config);
|
esp_http_client_handle_t client = esp_http_client_init(&config);
|
||||||
|
|
||||||
|
@ -44,7 +46,7 @@ int Nextion::upload_range(const std::string &url, int range_start) {
|
||||||
sprintf(range_header, "bytes=%d-%d", range_start, range_end);
|
sprintf(range_header, "bytes=%d-%d", range_start, range_end);
|
||||||
ESP_LOGV(TAG, "Requesting range: %s", range_header);
|
ESP_LOGV(TAG, "Requesting range: %s", range_header);
|
||||||
esp_http_client_set_header(client, "Range", range_header);
|
esp_http_client_set_header(client, "Range", range_header);
|
||||||
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGVV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
|
|
||||||
ESP_LOGV(TAG, "Opening http connetion");
|
ESP_LOGV(TAG, "Opening http connetion");
|
||||||
esp_err_t err;
|
esp_err_t err;
|
||||||
|
@ -70,13 +72,13 @@ int Nextion::upload_range(const std::string &url, int range_start) {
|
||||||
std::string recv_string;
|
std::string recv_string;
|
||||||
if (buffer == nullptr) {
|
if (buffer == nullptr) {
|
||||||
ESP_LOGE(TAG, "Failed to allocate memory for buffer");
|
ESP_LOGE(TAG, "Failed to allocate memory for buffer");
|
||||||
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGV(TAG, "Memory for buffer allocated successfully");
|
ESP_LOGV(TAG, "Memory for buffer allocated successfully");
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
App.feed_wdt();
|
App.feed_wdt();
|
||||||
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGVV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
int read_len = esp_http_client_read(client, reinterpret_cast<char *>(buffer), 4096);
|
int read_len = esp_http_client_read(client, reinterpret_cast<char *>(buffer), 4096);
|
||||||
ESP_LOGVV(TAG, "Read %d bytes from HTTP client, writing to UART", read_len);
|
ESP_LOGVV(TAG, "Read %d bytes from HTTP client, writing to UART", read_len);
|
||||||
if (read_len > 0) {
|
if (read_len > 0) {
|
||||||
|
@ -145,17 +147,19 @@ bool Nextion::upload_tft() {
|
||||||
|
|
||||||
// Define the configuration for the HTTP client
|
// Define the configuration for the HTTP client
|
||||||
ESP_LOGV(TAG, "Establishing connection to HTTP server");
|
ESP_LOGV(TAG, "Establishing connection to HTTP server");
|
||||||
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGVV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
esp_http_client_config_t config = {
|
esp_http_client_config_t config = {
|
||||||
.url = this->tft_url_.c_str(),
|
.url = this->tft_url_.c_str(),
|
||||||
.cert_pem = nullptr,
|
.cert_pem = nullptr,
|
||||||
.method = HTTP_METHOD_HEAD,
|
.method = HTTP_METHOD_HEAD,
|
||||||
.timeout_ms = 15000,
|
.timeout_ms = 15000,
|
||||||
|
.disable_auto_redirect = false,
|
||||||
|
.max_redirection_count = 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initialize the HTTP client with the configuration
|
// Initialize the HTTP client with the configuration
|
||||||
ESP_LOGV(TAG, "Initializing HTTP client");
|
ESP_LOGV(TAG, "Initializing HTTP client");
|
||||||
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
esp_http_client_handle_t http = esp_http_client_init(&config);
|
esp_http_client_handle_t http = esp_http_client_init(&config);
|
||||||
if (!http) {
|
if (!http) {
|
||||||
ESP_LOGE(TAG, "Failed to initialize HTTP client.");
|
ESP_LOGE(TAG, "Failed to initialize HTTP client.");
|
||||||
|
@ -164,7 +168,7 @@ bool Nextion::upload_tft() {
|
||||||
|
|
||||||
// Perform the HTTP request
|
// Perform the HTTP request
|
||||||
ESP_LOGV(TAG, "Check if the client could connect");
|
ESP_LOGV(TAG, "Check if the client could connect");
|
||||||
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
|
ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
|
||||||
esp_err_t err = esp_http_client_perform(http);
|
esp_err_t err = esp_http_client_perform(http);
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
ESP_LOGE(TAG, "HTTP request failed: %s", esp_err_to_name(err));
|
ESP_LOGE(TAG, "HTTP request failed: %s", esp_err_to_name(err));
|
||||||
|
@ -256,7 +260,7 @@ bool Nextion::upload_end(bool successful) {
|
||||||
this->soft_reset();
|
this->soft_reset();
|
||||||
vTaskDelay(pdMS_TO_TICKS(1500)); // NOLINT
|
vTaskDelay(pdMS_TO_TICKS(1500)); // NOLINT
|
||||||
if (successful) {
|
if (successful) {
|
||||||
ESP_LOGD(TAG, "Restarting esphome");
|
ESP_LOGD(TAG, "Restarting ESPHome");
|
||||||
esp_restart(); // NOLINT(readability-static-accessed-through-instance)
|
esp_restart(); // NOLINT(readability-static-accessed-through-instance)
|
||||||
}
|
}
|
||||||
return successful;
|
return successful;
|
||||||
|
|
Loading…
Reference in a new issue