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

Le système de fichier SPIFFS des ESP8266 (et Arduino) peut 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

#include "ESP8266FtpServer.h"

On créé ensuite un objet

FtpServer ftpSrv;

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

if (SPIFFS.begin()) {
  Serial.println("SPIFFS opened!");
  ftpSrv.begin("esp8266","esp8266");    //username, password for ftp.  set ports in ESP8266FtpServer.h  (default 21, 50009 for PASV)
}

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

void loop(void){
  ftpSrv.handleFTP();
}

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.

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Tags:

Domotique et objets connectés à faire soi-même