Tenho este codigo abaixo e tenho uma placa esp8266 antes de entrar nele em media tenho 40000 bytes e após executar o http cai para 17000. Já troquei para Mqtt e é o mesmo consumo de memória.
Estou verificando o codigo no looping e se entrou não chama mais a função executarConsulta mas a memoria usando getFreeHeap não volta aos 40000 bytes. Notei que para voltar preciso disconectar da internet a placa. Existe outra forma melhor?
void executarConsulta(int bombaID) {
Serial.println("executarConsulta");
Serial.println("bombaID");
Serial.println(bombaID);
// Simula a criação do URL
String url = String(serverApi) + "?email=" + email + "&senha=" + senha;
// Inicia a requisição HTTP
http.begin(client, url);
http.addHeader("Content-Type", "application/json");
http.addHeader("Connection", "keep-alive");
int httpResponseCode = http.GET(); // Faz a requisição GET
Serial.print("httpResponseCode: ");
Serial.println(httpResponseCode);
if (httpResponseCode > 0) {
Serial.println("Resposta: " + http.getString());
} else {
Serial.println("Erro HTTP");
}
http.end(); // Finaliza a requisição e libera a memória
// Chama uma função para forçar a coleta de lixo (coletando memória não utilizada)
yield(); // Força a liberação de memória e evita que o ESP8266 trave
printMemoryStatus("Fim da consulta");
}