Problema ao gravar um arquivo com um json grande

Estou tendo problemas com memoria de uma grande lista json.

Tenho ela gravada em um banco de dados e a única maneira que achei foi usar o código está na (referencia 1) a baixo para ler a lista que está dentro do loop.

Após ler eu passo esta lista json para gravar com o LittleFS (“referencia 2”) e acredito que não está gravando.

Se coloco json menor não estoura a memória e tudo funciona. Sou novo ainda no ESP é o meu primeiro projeto então estou acostumado em outras linguagens que sobra memória.

Quando vou ler o arquivo gravado grande uso o código da (referencia 3) da o erro Erro ao carregar JSON ler arquivo: EmptyInput acredito que não gravou o arquivo grande,

referencia 1

    WiFiClientSecure client; // Secure client for SSL/TLS

       HTTPClient http;        
      String url = String(serverApi)  + "?email=" + email + "&senha=" + senha;
       client.setInsecure(); // This disables SSL verification (unsafe for production)
        http.begin(client, url);
        http.addHeader("Content-Type", "application/json");

        int httpResponseCode = http.GET();
        

        if (httpResponseCode > 0) {

          WiFiClient* stream = http.getStreamPtr();
          String jsonString = "";
          while (stream->available()) {
            char c = stream->read();
            jsonString += c;  // Concatena os caracteres do JSON
          }


           // Se o JSON for muito grande, você pode processá-lo em partes aqui
    // Deserializando o JSON
          const size_t capacity = JSON_OBJECT_SIZE(50) + JSON_ARRAY_SIZE(50) + 500;
          DynamicJsonDocument doc(capacity);
           
          DeserializationError error = deserializeJson(doc, jsonString);

          if (error) {
            Serial.println("Erro ao desserializar JSON");
            return;
          }

          String comando = doc["comando"];
          String json= doc["json"];

            /*Serial.println("Tamanho string json");
            Serial.println(jsonString.length());*/

            Serial.println("comando ..." +  comando);
            //Serial.println("Json agendamento: " + jsonString);*
            //Serial.println(ESP.getFreeHeap());

          
          if (comando.length() > 0) {
             if (comando == "dosar-manual") {
               Serial.println("Json dosar-manual recebido: " + json);
               dosarManual(jsonString);

             }else if(comando == "agendamento"){
                Serial.println("Json agendamento: " +json);
                gravarAgendamento(json);
              }else if(comando == "calibrar"){
                  Serial.println("Json calibrar: " + json);
                  calibrar(jsonString);
              }
          }
              // Limpa os dados do documento

        }
      http.end();

referencia 2

 if (LittleFS.remove(path))
  {
    Serial.println("Arquivo deletado com sucesso!");
  }
  else
  {
    Serial.println("Erro ao deletar o arquivo!");
  }

  Serial.print("Escrevendo em: ");
  Serial.println(path);

  File file = LittleFS.open(path, "w"); // "w" -> cria ou sobrescreve o arquivo
  if (!file)
  {
    Serial.println("Falha ao abrir o arquivo para escrita!");
    return;
  }

  file.print(json);
  file.close();
  Serial.println("Arquivo gravado com sucesso!");

referencia 3

 Serial.print("Lendo JSON do arquivo: ");
  Serial.println(path);

  File file = LittleFS.open(path, "r");
  if (!file)
  {
    Serial.println("Erro ao abrir o arquivo para leitura!");
    return;
  }


  // Lê todo o conteúdo do arquivo
  //String jsonString;
  String jsonString;

  while (file.available())
  {

     jsonString += (char)file.read();
  }
  file.close();

  Serial.print("ler arquivo: jsonString ");

  const size_t capacity = JSON_OBJECT_SIZE(100) + JSON_ARRAY_SIZE(100) + 1000;
  DynamicJsonDocument doc(capacity);
  DeserializationError error = deserializeJson(doc,jsonString);
  if (error)
  {
    Serial.print("Erro ao carregar JSON ler arquivo: ");
    //enviarErro(email, "Erro ao carregar JSON:", "Função lerArquivo: Erro ao carregar JSON:");

    Serial.println(error.c_str());
    return;
  }

  // Obter o array JSON
  JsonArray array = doc.as<JsonArray>();

  for (JsonObject obj : array)
  {
}

Lista json que da problema

[
{"key":1,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:00","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":2,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:12","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":3,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:18","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":4,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:24","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":5,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:30","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":6,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:36","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":7,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:42","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":8,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:48","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":9,"codUser":12,"codbomba":1,"dosagem":15,"hora":"08:54","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":10,"codUser":12,"codbomba":1,"dosagem":15,"hora":"09:00","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":11,"codUser":12,"codbomba":1,"dosagem":15,"hora":"09:06","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":12,"codUser":12,"codbomba":1,"dosagem":15,"hora":"09:12","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":13,"codUser":12,"codbomba":1,"dosagem":15,"hora":"09:18","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5},
{"key":14,"codUser":12,"codbomba":1,"dosagem":15,"hora":"09:24","diasemana":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","flag":0,"bombaativa":"on","calibracao":44.5}]`

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.