Ftp lecture sdcard

bonjour, j'ai réussi à faire un datalogger avec une sauvegarde sur sdcard.
jusque là c'est ok.je voudrais que l'application ( andftp) puisse charger mon fichier.
mon serveur ftp tourne mais impossible d'afficher le répertoire. j'ai essayé avec filezilla même chose. j'ai bien la connexion, il me met "contenu du dossier"/" affiché avec succès. mais j'ai pas d'affichage , alors qu'il y a des fichiers sur ma carte sd. merci de votre aide. bonne journée

Broken-Crystal-Ball_small
Désolé, ma boule de cristal est cassée.
Pour aller plus loin, peut-être des pistes ici

bonjour, désolé pour votre boule de cristal, elle ne devait pas être de bonne qualité car je ne suis pas un nouveau:-) certes cela fait un moment que je n’étais pas venu.
alors plus d'info c'est un montage avec un esp 8266, une sdcard, je veux transférer
le fichier sur ma sdcard en ftp avec le wifi. comme je mentionne la connexion fonctionne. je dois passer à cotés de quelque chose , mais quoi ?
voilà pourquoi je fais appel.merci
voilà le code:

#include <BufferedPrint.h>
#include <FreeStack.h>
#include <MinimumSerial.h>
#include <RingBuf.h>
#include <SdFat.h>
#include <SdFatConfig.h>
#include <sdios.h>


//SDfat grieman//

#ifdef ESP8266
#include <ESP8266WiFi.h>
#elif defined ESP32
#include <WiFi.h>
#include "SPIFFS.h"
#endif

#include <ESP8266FtpServer.h>
#include <SPI.h>
//#include "SdFat.h"
SdFat SD;
SdFile root;
const char* ssid = "xxxxxxx";
const char* password = "xxxxxxxxx";
const int chipSelect = D8;
FtpServer ftpSrv;   //set #define FTP_DEBUG in ESP8266FtpServer.h to see ftp verbose on serial
unsigned long previousMillis = 0;//on évite les delay quand on faite de l'acquisition de données
const long interval = 1000;

File file;

// Create a Serial output stream.
ArduinoOutStream cout(Serial);
//------------------------------------------------------------------------------


void setup(void) {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());


  /////FTP Setup, ensure SPIFFS is started before ftp;  /////////

  /////FTP Setup, ensure SPIFFS is started before ftp;  /////////




  if (!SD.begin(chipSelect))

  { Serial.println("  ");
    Serial.println("initialisation carte memoire echouée!");
    return;
  }
  else
  {
    Serial.println("initialisation carte memoire reussie.");

    //username, password for ftp.  set ports in ESP8266FtpServer.h  (default 21, 50009 for PASV)
    //ftpSrv.begin("esp8266", "esp8266"); //ftpSrv.begin("esp32","esp32");    //username, password for ftp.  set ports in ESP32FtpServer.h  (default 21, 50009 for PASV)
  }
  if (SD.begin(chipSelect)) {
    Serial.println("SD opened!");
    // Change current directory to root.
    if (!SD.chdir()) {
       Serial.println("chdir to root failed.\n");
    }

    ftpSrv.begin("esp8266", "esp8266");   //username, password for ftp.  set ports in ESP8266FtpServer.h  (default 21, 50009 for PASV)
  }

  cout << F("\nList of files on the SD.\n");
  SD.ls("/", LS_R);
}


void loop(void) {
  ftpSrv.handleFTP();        //make sure in loop you call handleFTP()!!
  // server.handleClient();   //example if running a webserver you still need to call .handleClient();
  /* unsigned long currentMillis = millis();
    File essai =  SD.open("/", LS_R);//SD.open("/");


    if (currentMillis - previousMillis >= interval) {
     previousMillis = currentMillis;

     if (essai) {
       // sensors.requestTemperatures();
       // timeClient.update();

       String horaire = "12:00";//création de la variable String pour préparer l'envoi dans la mémoire
       float temperatures = 24.99;//pareil pour la température avec une varible flaot

       String data = horaire + "," + String(temperatures);//data sera enregistré dans la mémoire SPIFFS, on ajoute une virgule entre les deux valeurs pour pouvrois les séparer
       //et les rentrer facilement dans un tableur.

       essai.println (data);//on enregistre data dans la mémoire
       Serial.println (data);
     }
  */
}

Je ne sais pas si tu utilises cette librairie, si c'est le cas, elle ne supporte que le système de fichier SPIFFS.

Tu peux confirmer la source de la librairie que tu utilises?

oui c'est bien celle-ci ,j'en ai tiré mon code.
j'ai rein trouvé qui le mentionne , merci
il faut que je trouve une autre lib qui fasse sdcard.

j'ai trouvé cela :

la lib est la même je pense , il y a la sdcard comme moyen de sauvegarde , je vais voir cela.

même résultat, connexion ok , message disant que l'affichage est ok ,mais rien en fait!!


j'ai même remplacer par la lib SDFAT de greiman:
GitHub - greiman/SdFat: Arduino FAT16/FAT32 exFAT Library, pas mieux

Il ne suffit pas de récupérer un sketch pour avoir un projet complet, il faut aussi récupérer les librairies qu'il utilise.
Tu remarqueras que ce projet utilise sa propre version de la librairie esp8266FTPServer :

Bien entendu il faudra utiliser la même librairie SD que lui, et non pas SDFAT.

bonjour, j'ai bien lu vos remarques. Je potasse , je potasse, je dirais que c'est la panade:-/
alors je vais reprendre à zéro. j'ai un esp8266 nodemcu,
j'ai écrit un programme qui me stocke les températures sur une sdcard
( pourquoi? parce que la prise de température se fait toute les 15 min, puis veille et je préfère changer la carte lorsqu'elle est HS plutôt que le esp)
mon système étant autonome, je voudrais lorsque je me connecte qu'il se réveil et m’envoie le fichier sur mon appli android.
j'ai choisi la lib SDfat car elle a plus de commande pour la manipulation de fichier( ex renommer)
voilà. où j'en suis revenu.
si vous avez des suggestions, idées je suis preneur.
merci de votre lecture.

La librairie de haxord7hasib utilise SD, mais rien n'interdit de la réécrire avec SDfat.
Remarque bien que depuis le départ, on n'a strictement aucune idée de la taille maximale des données. Les stocker dans la FLASH (SPIFFS) serait une solution tout à fait pertinente, au lieu de s'encombrer avec une SD surdimensionnée.

oui pour le spiffs, j'ai étudié la possibilité,seulement quand la mémoire de l'esp8266 est hs ,je suis oblige de reprogrammer un esp, alors qu'avec une sd c'est juste une nouvelle qu'il me faut.
j'ai un fichier de 400 a 500 valeurs par jour, plus un fichier de 100 valeurs et un dernier de 50 environ. ces fichiers sont automatiquement copier pour avoir des valeur à j-1, puis effacé pour les nouvelles valeur du jour( ce a 00h 00mm).

bonjour,j'ai suivi ce tuto:
https://www.mischianti.org/2020/02/08/ftp-server-on-esp8266-and-esp32
j'ai réussi à lire la sd avec filezilla. c'est ok.
par contre si j'essaye avec l'application AndFTP, j'ai bien la connexion wifi,il se connecte,mais pas de lecture du directory. De ce qu'il m'affiche le serveur attend une commande de lecture que l'appli ne fait pas ou d'une façon pas comprise par mon programme.
merci de votre lecture.

voilà ce
que me donne l'affichage serial.


alors qu'avec filezilla il envoi une commande list après listening at .......

FEAT : Liste les fonctions supportées par le serveur en plus de ceux inclus dans la RFC 959

merci pour votre aide, je suis allé voir la doc RFC959, houuulala c'est pas de mon niveau :slight_smile: et en plus en anglais:-/
il faut dire que le ftp est nouveau pour moi,et il y a pas l'air d'avoir beaucoup de sujet sur ftp et sd avec android en plus!

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