ESP8266 создать еще один запрос WiFiClientSecure всегда завершается ошибкой https

#esp8266 #arduino-esp8266

#esp8266 #arduino-esp8266

Вопрос:

У меня есть несколько ESP8266 и ESP32.

Я использую их с сервером MQTT (SSL) и веб-сервером. Я использую два WiFiClientSecure, чтобы избежать отключения от моего MQTT-сервера. Один экземпляр WiFiClientSecure предназначен для сервера MQTT, а другой — для запросов HTTPS

ESP32 работает хорошо, я могу подключиться к своему серверу MQTT и отправить запрос HTTPS без проблем. ESP8266 (Wemos d1 mini) работает не так, как ожидалось. Запрос HTTPS всегда завершается ошибкой. Это работает, только если я использую только один экземпляр WiFiClientSecure. Однако во время запроса HTTPS я отключен от сервера MQTT.

Связано ли такое поведение с аппаратными ограничениями?

Вот самая важная часть кода

 WiFiClientSecure espClient;
WiFiClientSecure espClient2;
PubSubClient mqttClient(espClient);


const char* rootCABuff = 
"-----BEGIN CERTIFICATE-----n" 

...

"-----END CERTIFICATE-----n";

void setup() {

  /* Connect to wifi then set cert*/
  espClient.setCACert(rootCABuff);
  espClient2.setCACert(rootCABuff);
  
  /* Define clock or will fail*/
  setClock();
  
  ...

  client.setServer("myserver", myport);    // MQTT server
  
  ...
}

void loop() {

    ...

    if (!mqttclient.connected()) {
        reconnect();
    }
    else
    {
        mqttclient.loop();    
    }

    ...

  
    /*Sometimes a https request is needed*/
    
    HTTPClient http;
    http.setTimeout(10000);


    char* baserequest = "https://myserver.com";

        
    httpRequestData="somedata";

    Serial.print("[HTTPS] begin...n");
    if (http.begin(espClient2, baserequest)) {  // HTTPS
      http.addHeader("Accept", "application/json");
      http.addHeader("Content-Type", "application/x-www-form-urlencoded");
      Serial.print("[HTTPS] POST...n");
      int httpCode = http.POST(httpRequestData);    
      http.end();
    } else {
      Serial.printf("[HTTPS] Unable to connectn");
    }
    
    ...
    
}
 

Комментарии:

1. недостаточно памяти для двух WiFiSecureClient с настройками по умолчанию

2. Привет @Juraj, поэтому, основываясь на вашем комментарии, я полагаю, что правильные настройки должны работать. Какие настройки я должен изменить?