Traiter deux fichiers en même temps Arduino + SD

Bonjour,
Je suis entrain de créer un système de chauffage connecté. Celui ci enregistre les températures des sondes toutes les 1/2 heures. A la fin de la semaine (le dimanche soir a minuit), je voudrais que les températures de toutes la semaine soit enregistrée dans un nouveau fichier avec le numéro de la semaine.

Pour l’instant, j’ai essayer de créer un programme qui lit le fichier avec les températures de la semaine, et les réécrit dans celui portant le numéro de la semaine:

String name_save = "/SYSTEM/SONDE/SAVE/";
    
    if(t.mon == 1){
      name_save.concat("Jan_");
    }
    if(t.mon == 2){
      name_save.concat("Fev_");
    }
    if(t.mon == 3){
      name_save.concat("Mar_");
    }
    if(t.mon == 4){
      name_save.concat("Avr_");
    }
    if(t.mon == 5){
      name_save.concat("Mai_");
    }
    if(t.mon == 6){
      name_save.concat("Jui_");
    }
    if(t.mon == 7){
      name_save.concat("Aou_");
    }
    if(t.mon == 8){
      name_save.concat("Jui_");
    }
    if(t.mon == 9){
      name_save.concat("Sep_");
    }
    if(t.mon == 10){
      name_save.concat("Oct_");
    }
    if(t.mon == 11){
      name_save.concat("Nov_");
    }
    if(t.mon == 12){
      name_save.concat("Dec_");
    }

    name_save.concat(int(t.date / 7));

    Serial.println(name_save);
    
    File save_sonde_graph = SD.open(name_save,FILE_WRITE);
    
    save_sonde_graph.println("<script>");
    
    for(int i = 0; i < 7;i++){
      //variable qui contient le chemin d'acces au fichier de sauvgarde des données des sondes

      String sonde = "/SYSTEM/SONDE/";
      sonde.concat(i+1);

      Serial.println(sonde);
      if(SD.exists(sonde)){
        Serial.println(".");
        File sonde_file = SD.open(sonde,FILE_READ);

        save_sonde_graph.print("var liste");
        save_sonde_graph.print(i+1);
        save_sonde_graph.print(" = [");
        if(!sonde_file.available()){
          save_sonde_graph.print("0");
        }
        for(int j = 0; j < 336 && sonde_file.available();j++){
          save_sonde_graph.print(sonde_file.readStringUntil('\n'));
          if(j < 335)save_sonde_graph.print(",");
        }
        save_sonde_graph.println("];");

        sonde_file.close();
      }      
    } 
    save_sonde_graph.println("</script>");

    save_sonde_graph.close();

Malheuresement, dans le fichier final, il n’y a que

<script>
</script>

Merci pour votre aide :slight_smile:

Il doit y avoir un problème ici : if(SD.exists(sonde)){
Si cette condition n'est pas remplie, rien ne sera écrit dans ton fichier. Est-ce que tu vois les points écrits à la console par Serial.println("."); ?

Merci d'avoir répondu si vite :slight_smile:

Non, je ne vois pas les "." J'avais mis Serial.println("."); pour voir justement si la condition était remplie.

Donc c'est bien le test qui est en cause : vérifie le nom du fichier que tu lis (sonde), il n'est sûrement pas ce que tu crois

Bah pourtant, j'ai vérifié le nom de fichier plusieurs fois et il est correct.

Je tiens à préciser que j'ouvre deux fichiers simultanément. Et je me demande si le problème ne viens pas de là?

Possible, ferme le premier avant d'ouvrir le second pour voir...

En laissant juste le traitement d'un seul fichier, ça ne marche toujours pas, je ne comprends pas...

Je ne connais pas la bibliothèque que tu utilises pour manipuler les fichiers, mais ça peut venir du type de variable à employer pour le nom des fichiers, par exemple un tableau de char et pas un string. Vérifie ou bien dis moi quelle est cette bibliothèque.

C'est la bibliothèque SD fournis avec L'IDE Arduino. Ce que je comprend pas, c'est que dans d'autres fonctions de mon programme, ça marche parfaitement...

La biblio dit :

boolean SDClass::exists(const char *filepath) {

et

File SDClass::open(const char *filepath, uint8_t mode) {

Donc les noms de fichiers doivent être du même type pour les deux fonctions.

Si ça marche ici

File save_sonde_graph = SD.open(name_save,FILE_WRITE);

tu dois faire pareil (avec le même type de variable) pour le test d'existence.

Sinon, je ne vois pas ce qui cloche...