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 :

FTP avec Arduino


Sujet :

Arduino

  1. #1
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut FTP avec Arduino
    Bonjour à tous,

    Pour un systeme d'acquisition de données, j'ai besoins de transférer un fichier vers un un PC(Raspberry)

    Sur le Raspberry tourne un serveur proftpd.
    Sur l'arduino, yune carte SD enregistre mes données et les restitue au raspberry via FTP.

    Cela fonctionne assez bien.......(je prépare un tuto sur le sujet)
    Cependant, lors de l'envoi du fichier, si un chemin est défini dans le nom du fichier, et que les répertoires
    de ce chemin n'existent pas sur le Raspberry, le serveur FTP me retourne un code d'erreur.....

    J'ai donc chercher à creer les répertoires nécessaire dans le FTP. Dans la doc de proftpd, on donne la liste des commande (lien un peu plus bas).
    Ces commande semble fonctionner pour ce qui concerne la connexion au serveur,la mise en mode "ecoute" du serveur
    qui alors m’envoie le numero du port ou transférer le fichier.
    Donc certaine commande fonctionnent. PASS, USER,....

    Cependant, dans la doc, on dit,
    MKD
    Short for MaKe Directory.
    Qui semble être la commande pour crée un répertoire
    Si j'envoi cette commande avec le nom du répertoire à creer, je ne reçois aucun retour (seulement un silence dédaigneux....

    J'ai essayé plusieurs commandes, mais je reçois toujours cette erreur. (sauf pour la "pwd" qui fonctionne.....)

    Quelqu'un a-t-il déjà travailler avec ce serveur ou avec FTP ????

    Pour info, depuis un PC soit avec FTP sous linux soit avec FILESILLA, la connexion au serveur fonctionne et je peux utiliser les commandes decrites
    dans la donc de proftpd
    http://proftpd.org/docs/howto/FTP.html#CWD

    Le problème ne semble pas venir du serveur proftpd, mais de l'envoi des commandes depuis l'arduino vers le seveur.

    Je cherche dans la bibliothèque "wifi101.h", mais je ne trouve rien

    Pour info la commande pour se logger est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      client.println(message);//Nom du User
    Ou message est une chaine de caractère contenant
    "USER "
    "<user du Rasperry>"

    Cela fonctionne donc pour les commande "USER", "PASS", "SYST", "PASV"
    Qui sont les commande pour se logger, et mettre le serveur en mode écoute.

    Avant d'aller enquêter chez proftpd, je viens d'abord voir ici si quelqu'un aurait une idée....


    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
    Quel est votre arduino et quelle bibliothèque FTP utilisez vous?

  3. #3
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Bonjour,

    J'utilise un MKR1000 avec MKR MEM SHIELD (pour sa carte SD)
    Les bibliothèques utilisées sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <RTCZero.h>
    #include <SPI.h>
    #include <SD.h>
    #include<Wire.h>
     
    #include <WiFi101.h>
    #include <WiFiUdp.h>
    Merci

  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
    vous faites votre FTP "à la main" ?

  5. #5
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Citation Envoyé par Jay M Voir le message
    vous faites votre FTP "à la main" ?

    ???? Heuu Comment "à la main"?

    Je ne connait pas d'application client FTP pour Arduino.
    Si cela existe je serai enchante de les connaître.

    Pour ma part j'utilise du code glané sur Internet.

    En gros:
    je me connecte au mon WIFI local via la carte MKR1000.
    Je me connecte au serveur FTP proftpd installe sur un Raspberry. la connexion fonctionne
    lorsque la connexion FTP est établie, j'envoie les commandes pour passer le serveur en mode "PASV", il me renvoie
    le port ou me connecter pour envoyer le fichier.
    Je crée un deuxième client FTP en me connectant à ce deuxième port.
    J'envoi le fichier. <chemin/fichier>

    Si le chemin defini pour le fichier existe sur le serveur FTP, le fichier est copier...
    Sinon, je reçoit un code d'erreur.
    une fois le transfert terminé, je ferme les connexions des deux client FTP


    Donc si je reçois un code d'erreur, je voudrais vérifier si le répertoire existe (sans doute que non) et le créer sur le serveur.

    Et c'est là que cela foire,....

    voilà


    Michel

  6. #6
    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 il y a https://www.arduino.cc/reference/en/...p32_ftpclient/ qui est un fork de https://github.com/blackcodetavern/ESP32_FTPClient

    il y a des méthodes pour gérer les répertoires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void ChangeWorkDir(const char * dir);
      void DeleteFile(const char * file);
      void MakeDir(const char * dir);
      void RemoveDir(const char * dir);
    qui ne font qu'envoyer les bonnes commandes textuelles et écouter la réponse du serveur ==> peut-être une source d'inspiration (notamment pour la partie GetFTPAnswer()?

  7. #7
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Bonjour Jay M,

    Merci pour l'inspiration....

    Dans les librairies
    https://github.com/blackcodetavern/E...7b36b9c57b6a16

    Telle que tu les donnent dans ta réponse,

    J'ai réussi à trouver pourquoi certaine commande ne passe pas.
    Il semblerait qu'il faille des code après les commande et avant les arguments...
    Je m'explique : pour changer de répertoire par exemple si je crée un chaine complete cela ne marche pas.
    Tandis que si je separe la commande de l'argument cela fonctionne exemple :

    lors de la connection au serveur, la connection se fait sur le repertoire home de l'utilsateur, la commande "PWD" donne comme retour "/" qui sous linux est bien le repertoire home de l'utilisateur.
    Pour changer le repertoire de travail, on doit utiliser la commande "CWD" avec le repertoire <repertoire>, mais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //COmmande pour changer de repertoir de travail ==CWD < rep>
    char commande[100];
    strcpy (commande, "CWD ");
    strcat(commande,"/D2201");
    client.println(commande);
    Eh bien cela ne marche pas, les réponse sont 'Commande invalide"
    tandis que si l'on envoi le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    client.print("CWD ");
    client.prinln("/D2201");
    Alors le retour est correct et le repertoire est bien changer en "/D2201".
    Le retour de la commande "PWD" donne alors "/D2201".

    Je vais encore m'attaquer au autres commandes, "MKD", "MLSD",.....

    Merci pour les pistes.

    Je vais aussi étoffer mon tuto avec ces remarques ( et installer wireshark pour comprendre ce qui se passe sur le réseau.....)

    Je marque comme résolu

    Un grand (très grand) merci à toi.


    Michel

  8. #8
    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
    cool (et surprenant !)

    et le tuto sera intéressant!

  9. #9
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut Et le tuto ?
    J'ai déja posté un premier jet du tuto dans la partie privé afin que des experts
    puissent lire et évaluer ce tuto.

    J'attend les retours pour améliorer,corriger et peaufiner de tuto, ainsi que mettre les informations complémentaire en service.

    Voila

    michel

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/09/2005, 13h27
  2. Réponses: 15
    Dernier message: 01/09/2005, 10h07
  3. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 09h35
  4. [Indy 10] Serveur FTP avec SSL
    Par KarMa_CoMa dans le forum Web & réseau
    Réponses: 5
    Dernier message: 21/04/2005, 09h51
  5. lister le contenu d'un serveur ftp avec NMFTP
    Par jackson dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/02/2005, 17h42

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