IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

ESP32 - SPIFFS - Effortless-SPIFFS Comment faire fonctionner


Sujet :

Arduino

  1. #1
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut ESP32 - SPIFFS - Effortless-SPIFFS Comment faire fonctionner
    Bonjour à tous
    Voilà plusieurs jours que je galère pour essayer de stocker par programme des informations sur le SPIFFS d'un ESP32 (bien que j'ai lu qu'il n'y en a pas sur l'ESP32).
    J'ai réussi à le faire par VS CODE de façon statique mais pas par le programme, ce qui n'est pas intéressant pour stocker le SSID et le PASS d'une box x par exemple.
    Alors j'ai trouvé cette nouvelle librairie (Effortless-SPIFFS) qui semble permettre de lire et d'écrire sur le SPIFFS.
    Mais pour le bricoleur que je suis, je ne comprends pas exactement comment procéder.
    J'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include <Effortless_SPIFFS.h>
    eSPIFFS fileSys;
    float maVar;
    //************************Enregistrement des codes en SPIFFS*******************************
    void ecritSsid(String box){
      if(fileSys.saveToFile("/ssid.txt",box)){ 
        Serial.println("message enreg");
      }
    }
    void ecritPass(String code){
      if(fileSys.saveToFile("/pass.txt",code)){
        Serial.println("code lu");
    }
    //****chargement clef Wifi de la box + mot de passe*********************************
    void chargeBox(){
      if(fileSys.openFromFile("/ssid.txt",maVar){
        Serial.print("ssid lu: ");
        Serial.println(maVar,14);
      }
      if(fileSys.openFromFile("/pass.txt",maVar){
        Serial.print("pass lu: ");
        Serial.println(maVar,10);
      }
    }
    Mais lorsque j'appelle ces procédures, cela ne fonctionne pas.
    Si quelqu'un pouvait me mettre sur la voie...
    Merci
    Michel

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    sur ESP32 maintenant ce qui est recommandé c'est de passer par la bibliothèque preferences

    ==> https://espressif-docs.readthedocs-h...eferences.html

    un tuto (en anglais)

    https://randomnerdtutorials.com/esp3...y-preferences/

  3. #3
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    Merci JAY M pour cette piste
    Oui 'Preferences' semble être plus facile à utiliser pour de petites variables à stocker mais pour des fichiers plus importants cela ne semble pas conseillé.
    Alors j'ai poursuivi mes recherches pour enfin trouver une solution à mon problème.
    Voici un petit exemple pour stocker un SSID et un PASSE. (je suis sur Arduino IDE 2.0.3), si cela peut servir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    #include <BluetoothSerial.h>
    #include "FS.h"
    #include <SPIFFS.h>
     
    /* You only need to format SPIFFS the first time you run a
       test or else use the SPIFFS plugin to create a partition
       https://github.com/me-no-dev/arduino-esp32fs-plugin */
     
    #define FORMAT_SPIFFS_IF_FAILED true
     
    BluetoothSerial sBt;
    //******************lecture SPIFFS**********************
    void lectureFichier(fs::FS &fs, const char *path){
      String tempo="";
      Serial.printf("fichier lu: %s\r\n", path);
      File file = fs.open(path);
      if(!file || file.isDirectory()){
        Serial.println("Erreur de lecture fichier");
        return;
      }
      Serial.println("lu dans le fichier:");
      while(file.available()){
        tempo += (char)file.read();
      }
      Serial.println(tempo);
      sBt.println(tempo);
      file.close();
    }
    //*****************Ecriture SPIFFS***********************************
    void writeFile(fs::FS &fs, const char * path, const char * message){
      Serial.printf("Ecriture du fichier: %s\r\n", path);
     
      File file = fs.open(path, FILE_WRITE);
      if(!file){
        Serial.println("Erreur d'ecriture du fichier");
        return;
      }
      if(file.print(message)){
        Serial.println("Fichier ecrit");
      } else {
        Serial.println("Erreur d'ecriture");
      }
      file.close();
    }
    //*********************commande Bluetooth recu********************
    void analyseCommandeBt(String com){
      char c = com.charAt(0);
      switch (c){
        case 'S': writeFile(SPIFFS, "/ssid.txt", com.substring(1).c_str());
        break;
        case 'P': writeFile(SPIFFS,"/pass.txt",com.substring(1).c_str());
        break;
        /*case 'T': enregTouches();
        break;
        case 'A': enregAlarme(com.substring(1));
        break;
        case 'R': enregAlarmHebdo(com.substring(1));    //format: Rhh:mm+J-'texte'
        break;*/
        case 'X': sBt.println("Commande recu: " + com);
                  readFile(SPIFFS,"/ssid.txt");
        break;
        case 'Y': readFile(SPIFFS,"/pass.txt");
        default:
        break;
      }
      sBt.println("Ok");
    }
    //*********************configuration*****************************
    void setup(){
      Serial.begin(115200);
      sBt.begin("Matrice");
      if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
        Serial.println("SPIFFS Mount Failed");
        return;
      }
    } 
    //*******************boucle principale*****************************
    void loop(){
      char tempo;
      String commande;
    if(sBt.available()){
        tempo = sBt.read();
        if(tempo=='Z'){             //Z=commande
          while(sBt.available()){
            tempo=sBt.read();
            commande += tempo; 
          }
        }
        Serial.println(commande);
        analyseCommandeBt(commande);
      }
      delay(50);
    }
    Je vais maintenant essayer de l'intégrer sur un prog plus complexe avec VS Code.

    Cordialement
    Michel

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Citation Envoyé par mormic Voir le message
    Voici un petit exemple pour stocker un SSID et un PASSE.
    J'avais mentionné Preferences parce que justement vous parliez de SSID et mot de passe, donc peu d'info.

    Pour le stockage de fichier, oui vaut mieux rester en système de fichier.
    SPIFFS n'est plus activement supporté par l'équipe de développement du core Arduino pour ESP8266 (déprécié) et il faut passer sur LittleFS
    Sur ESP32 SPIFFS est encore d'actualité mais on peut s'attendre à ce que LittleFS prenne aussi la suite

  5. #5
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 293
    Points : 145
    Points
    145
    Par défaut
    Pour revenir à ma question initiale à propos de 'Effortless-SPIFFS'. Cela fonctionne parfaitement avec Arduino IDE 1.8.19 mais ne fonctionne pas avec IDE 2.0.3 (je ne sais pourquoi).
    C'était là l'origine de mon problème.
    Merci encore

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut
    Salut,

    Effectivement, il y a encore des soucis avec l'EDI 2.0.x. Voir [Arduino EDI 2.0] [ESP32] Installer système de fichiers SPIFFS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SPAW] Comment faire fonctionner Spaw
    Par Seth77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 09/02/2006, 18h22
  2. [Vs.Net & SQL Serveur] Comment faire fonctionner le Débu
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/08/2005, 19h23
  3. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 16h47
  4. [Chat] Comment faire fonctionner Flash 7 sous Debian ?
    Par piff62 dans le forum Evolutions du club
    Réponses: 22
    Dernier message: 07/03/2005, 15h27
  5. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo