Accueil / esp8266 / ESP8266 (Serveur FTP) : échange de fichiers SPIFFS, développement rapide Web Serveur

ESP8266 (Serveur FTP) : échange de fichiers SPIFFS, développement rapide Web Serveur

Le système de fichier SPIFFS des ESP8266 (et Arduino) peu servir à stocker les fichiers d’un serveur Web mais aussi des fichiers de données (en utilisant l’ESP8266 comme un système d’acquisition de données par exemple). Il est très facile d’accéder au système de fichier SPIFFS depuis le code Arduino grâce à la librairie FS.h, mais rien n’est prévu pour accéder depuis un autre ordinateur en FTP. Dans ce tutoriel, nous allons tester la librairie ESP8266FtpServer.h développée par David Paiva (nailbuster sur GitHub) qui permet d’ajouter un petit serveur FTP à l’ESP8266, suffisant pour déposer et récupérer des fichiers.

Ajouter la librairie ESP8266FtpServer.h à un projet ESP8266

La librairieESP8266FtpServer.h est encore en cours de développement. C’est une adaptation de la librairie Arduino de Gallegojm. Elle peut nous rendre bien des services dans deux situations.

Tout d’abord, si vous développé votre propre interface HTML pour votre projet ESP8266, il faut télécharger à chaque modification l’intégralité de système SPIFFS. Sur une Wemos D1 Mini qui dispose de 4MB de mémoire Flash, il faut télécharger un fichier de 3MB. Même à 921600 bauds, l’opération dure 2 minutes et 35 secondes. Ca peut passer pour une petite interface, mais pour un projet d’envergure, c’est vite problématique.

Second cas de figure, vous utilisez l’ESP8266 pour développer un système d’acquisition de données autonome. Vous pouvez profiter du système de fichier SPIFFS pour enregistrer des mesures. Pratique pour reprendre un enregistrement en cas de redémarrage. Cette solution évite également de devoir ajouter et gérer un lecteur de carte SD.

Pour utiliser la librairie dans votre projet, il va falloir ajouter manuellement les deux fichiers (.cpp et .h) car elle n’est pas disponible depuis le gestionnaire de librairie. Le plus facile est de télécharger le dépôt depuis GitHub. Ouvrez votre projet et glissez les deux fichiers.

Ajouter un serveur FTP à un projet ESP8266

Maintenant que la librairie est ajoutée à votre projet, déclarez celle-ci au début du code

On créé ensuite un objet

Dans la fonction setup(), on configure les informations d’identification (utilisateur, mot de passe).

Enfin, on appel surveille les demandes de connexion au serveur (fonction handleFTP) dans la boucle loop().

D’autres paramètres peuvent être configurés directement dans la librairie

  • define FTP_DEBUG : dé-commentez pour activer l’envoi des messages de debug sur le moniteur série (pratique pour la mise au point)
  • FTP_CTRL_PORT : port du serveur FTP. Par défaut, c’est le 21
  • FTP_TIME_OUT : temps avant déconnexion automatique (j’ai un doute sur son bon fonctionnement)

C’est terminé, vous pouvez maintenant accéder à vos fichiers en FTP.

Accéder au SPIFFS à l’aide de Filezilla

Dans la version actuelle, il n’y a que le mode passif qui est supporté. Le SFTP (FTP sécurisé) n’est pas supporté. Si vous ne connaissez pas Filezilla, vous pouvez commencer par lire ce tutoriel.

Lancez FileZilla. Le plus facile pour se connecter à un ESP8266 en FTP et d’utiliser le gestionnaire de site. J’ai rencontré des difficultés en utilisant la barre de connexion rapide. Ouvrez le gestionnaire de site depuis le menu Fichier et configurez l’accès comme ceci :

  • Hôte : adresse IP de l’ESP8266
  • Port : 21 (ou celui configuré par la clé FTP_CTRL_PORT)
  • Protocole : TFP – Protocole de Transfert de Fichiers
  • Chiffrement : Connexion FTP simple (non sécurisé)
  • Type d’authentification : Normale
  • Identifiant et mot de passe 

 filezilla esp8266 ftp connexion spiffs

Lancez la connexion en cliquant sur Connexion. La connexion est maintenant enregistrée par FileZilla, il ne sera plus nécessaire de le refaire. Une fois la connexion établie, vous avez un accès à tous les fichiers du répertoire Data (celui du projet Arduino). Comme vous pouvez le constater, l’arborescence n’est pas encore très bien gérée. A moins de corriger la librairie, il faudra abandonner l’organisation des fichiers dans des répertoires dédiés (js, img, css…), dommage !

filezilla fichiers spiffs esp8266 wemos d1 mini

En activant les messages de debug, voici ce qui se passe sur le moniteur série de l’IDE Arduino.

Voilà, j’espère que vous gagnerez beaucoup de temps dans le développement de vos projets Web Server sur ESP8266.

  • Clemzo

    très bon tuto.

    Merci.

    J’utilise le serveur ftp depuis un certain temps déjà, mais comme dit dans le tuto, il souffre de quelques faiblesses dont celle d’être un ftp simple (pas sftp).
    Donc la présence d’un port 21 ouvert en permanence me dérange un peu.
    pour régler ce PB j’ai ajouté :
    void FtpServer::close () { // pour fermer le serveur ftp
    ftpServer.close();
    }
    Dans le fichier ESP8266FtpServer.cpp et en ajoutant la déclaration :
    void close();
    dans la partie « public » de ESP8266FtpServer.h

    De cette façon, il est possible d’activer et de désactiver le serveur ftp uniquement lorsque c’est nécessaire.