Ecriture lecture dans un fichier TXT

Bonjour a tous,

J’utilise un esp8266 et j’essaie d’écrire dans un fichiers texte des données avec la bibliothèque FS.h, par contre tous mes essais son vain.
Le code ne plante pas mais rien ne s’écrit dans le fichier qui est dans le répertoire data qui est dans le même répertoire que mon sketch.

Si quelqu’un peut me donner des infos pour y arriver?

voici parmi d’autres essayé le code que j’utilise:

 #include <ESP8266WiFi.h>
#include <FS.h>   //Include File System Headers
 
const char* filename = "/file.txt";
 
  
void setup() {
  delay(1000);
  Serial.begin(9600);
  Serial.println();
 
  //Initialize File System
  if(SPIFFS.begin())
  {
    Serial.println("SPIFFS Initialisierung....OK");
  }
  else
  {
    Serial.println("SPIFFS Initialisierung...Fehler!");
  }
 
  //Format File System
  if(SPIFFS.format())
  {
    Serial.println("Datei-System formatiert");
  }
  else
  {
    Serial.println("Datei-System formatiert Error");
  }
 
  //Erstellung einer neuen Datei und Beispielhaftes füllen der Datei
  //w=Öffnen mit Schreibzugtriff auf die Datei
  File f = SPIFFS.open(filename, "w");
  
  if (!f) {
    Serial.println("Oeffnen der Datei fehlgeschlagen");
  }
  else
  {
      //Write data to file
      Serial.println("Schreibe Daten in die Datei");
      f.print("Dies ist Beispielinhalt....");
      f.close();  //Schließen der Datei
  }
}
 
void loop() {
  int i;
  
  //Lesen des Dateiinhaltes 
  File f = SPIFFS.open(filename, "r");
  
  if (!f) {
    Serial.println("Oeffnen der Datei fehlgeschlagen");
  }
  else
  {
      Serial.println("Lesen des Dateiinhaltes:");
      //Data from file
      for(i=0;i<f.size();i++) //Read upto complete file size
      {
        Serial.print((char)f.read());
      }
      f.close();  //Schließen der Datei
      Serial.println("");
      Serial.println("Datei geschlossen");
  }
  delay(5000);
}

Treza88:
Le code ne plante pas mais rien ne s’écrit dans le fichier qui est dans le répertoire data qui est dans le même répertoire que mon sketch.

Où est-ce que vous le cherchez ce fichier texte - sur le PC ?

Ton fichier n'est pas sur ton PC mais dans la mémoire de ton ESP8266. Ton code ouvre ou crée le fichier, dans la flash SPI de l'ESP8266 puis écrit dedans ceci

Dies ist Beispielinhalt....

Ensuite, il ferme le fichier, l'ouvre encore et affiche son contenu sur la console série de l'IDE. Si tu ne vois pas ce texte s'afficher, il y a en effet un problème.

Ok merci a vous deux pour vos réponses, donc je m’aperçois que je suis idiot de croire que le fichier était enregistrer sur le PC.
donc si le fichier est enregistrer dans la mémoire du esp8266, comment y a ton accès et/ou comment peut on le rapatrier sur le pc?

Et pour répondre a lesept, non rien ne s'affiche dans la console série de l'IDE.

Si n’importe quel gadget chinois à 3€ Pouvait être branché sur USB et écrire où il veut sur votre PC ce serait un sacré trou de sécurité :slight_smile:

Le moyen le plus simple puisque vous avez du wifi sur votre ESP c’est de prévoir dans votre code une requête HTTP qui va retourner le fichier, comme ça vous pouvez l’accéder à distance, pas besoin d’être attaché par USB

Il y a pas mal d’exemples en ligne, voici le premier qu’une recherche me donne ou une autre avec une video (en anglais)

Treza88:
Et pour répondre a lesept, non rien ne s'affiche dans la console série de l'IDE.

C'est pas normal, il devrait y avoir plein de commentaires, en allemand, affichés dans la console. Tu l'as bien réglée à 9600 bauds ?
Quel est ton module ESP8266 et quel type de carte as-tu choisi dans l'IDE ? As-tu vérifié que les paramètres associés comportent bien la taille du SPIFFS ?

Merci J-M-L, je vais donc creuser dans le sens de tes exemples, et voir si je m'en sort.

Merci également lesept, mon module est un ESP8266 Lolin NodeMcu v3, le type de carte "NODEMCU 1.0 (ESP - 12E Module)" et les paramètre associés sont 4M (3M SPIFFS).
Par contre tu avais raison au niveau de la vitesse de transfert vers la console je n'étais pas en 9600 bauds, donc du coup ça fonctionne beaucoup mieux et j'ai bien un retour dans la console.

Sinon les paramètre précédents sont bien les plus adapté a la carte ESP8266 que j'ai?

vos param font que vous avez divisé les 4 mega octet de mémoire flash en 3 mega pour le stockage des fichiers et 1 Mega pour votre programme. si ça vous convient c'est tout bon

Merci pour ta précision sur le découpage de la mémoire, je comprends de ce fait mieux le fonctionnement.

Par contre ça me fait rebondir sur une autre question, je me suis procuré des module de mémoire supplémentaire 32M de ce type: "WEMOS-340G Wemos 32M flash NodeMCU V3 340G ESP8266 Compatible".

Voici une photo:

Aurais tu des info pour son utilisation (Câblage programmation...).
Apres je te pose la question, mais il vaudrait peut être mieux créer un nouveau post?

32 Mb (M bits) = 4 MB (M bytes)

la carte n'a pas plus de mémoire Flash, son vendeur est juste assez malin pour présenter les choses sous un jour favorable au clic d'achat....

Il existe des cartes à ESP8266 dotees de 16MB (128Mb), ce sont les D1 MIni Pro
https://wiki.wemos.cc/products:d1:d1_mini_pro
dans l'IDE Arduino elles ont leur ligne particulière avec des options de partitionnement adaptées.

Treza88:
Par contre ça me fait rebondir sur une autre question, je me suis procuré des module de mémoire supplémentaire 32M de ce type: "WEMOS-340G Wemos 32M flash NodeMCU V3 340G ESP8266 Compatible".

Comme le laisse entendre J-M-L, ce n'est pas un module mémoire, c'est un ESP8266 équipé, comme tous les autres, d'un composant mémoire externe à la puce.

Ok et merci a vous deux,

Donc si je vous suis bien, ce n'est pas un module supplémentaire de mémoire indépendante, mais bien un esp8266 de 4M et qui a le désavantage de ne pas avoir le wifi.

c'est donc un microcontrôleur simple comme un "arduino nano" par exemple.

Et donc comme le disait allfch, je me suis fait avoir avec une fausse dénomination et je n'ai pas acheté ce que je pensais.

Treza88:
Ok et merci a vous deux,

Donc si je vous suis bien, ce n'est pas un module supplémentaire de mémoire indépendante, mais bien un esp8266 de 4M et qui a le désavantage de ne pas avoir le wifi.

c'est donc un microcontrôleur simple comme un "arduino nano" par exemple.

Et donc comme le disait allfch, je me suis fait avoir avec une fausse dénomination et je n'ai pas acheté ce que je pensais.

si si il a le wifi, c'est juste un clone. il semble qu'il y en aurait vraiment avec 32 Mega Octets apparement (cf ce lien Amazon qui mentionne bien Mo, et insiste... sinon c'est de la pub mensongère), don/Users/jmlunati/Desktop/sram.pngc vous ne vous êtes pas forcément fait avoir...

ou alors c'est une vraie arnaque et ce sont les modules classique avec 1Mo 2Mo ou 4Mo et au dos de la carte c'est affiché en Mbits

C'est un banal clone de D1 Mini = ESP8266 + mémoire flash 4MB...avec usage abusif du logo Wemos.

oui sans doute... et Amazon vend ça sans ennuis...

Oui tu a raison allfch, c'est bien le même que la photo de J-M-L avec j’espère au moins les 4Mo ou 32Mbit. Vu qu'il n'est même pas coché sur 8, 16 ou 32M.

Ok en tout cas merci pour vos précision, je sais ou je vais maintenant.

J'ai suivi les versions successives des D1 MIni WEMOS, achetées sur leur site.
A aucun moment ils n'ont produit la carte montrée , avec son gros régulateur AMS1117

Lassés de la reprise de leur marque ils l'ont laissée tombée au profit de la marqe LOLIN (mieux protége , j'espère pour eux !)