#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, поэтому, основываясь на вашем комментарии, я полагаю, что правильные настройки должны работать. Какие настройки я должен изменить?