Arduino Forum

International => Français => Topic started by: Herouis on Jun 12, 2018, 02:42 pm

Title: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 12, 2018, 02:42 pm
Bonjour,

Je dois actuellement envoyer un fichier présent sur la carte SD de mon shield Ethernet sur un serveur FTP que j'ai monté sur une raspberry.

Après de nombreuses recherches, je ne trouve toujours pas comment faire.
J'avais trouvé ceci : http://playground.arduino.cc/Code/FTP
Mais impossible de faire fonctionner le programme correctement en remplaçant par mes adresses ip et etc.
Avez-vous des solutions et des idées ?

Pour info, voici le fichier à envoyer :
Nom du fichier : W14.txt
Contenu : date du jour / nombre


Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 12, 2018, 04:27 pm
J'avais trouvé ceci : http://playground.arduino.cc/Code/FTP
Mais impossible de faire fonctionner le programme correctement
Détaille un peu.
Qu'est-ce qui ne fonctionne pas?
Quels sont les erreurs remontées (s'il y en a)?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 12, 2018, 04:33 pm
Voila ce qui s'affiche dans le moniteur de série lorsque j'entre f :

Ready. Press f or r
SD opened
Command connection failed
FTP FAIL

J'ai lu sur un autre post que cela peut venir du firewall mais même après l'avoir désactivé cela ne fonctionne pas.

J'ai mon raspberry serveur connecté sur un switch, l'arduino et mon pc y sont aussi connectés, j'arrive à envoyer des fichiers grâce à FileZilla mais dès que je veux tenter une communication avec l'Arduino, cela ne fonctionne pas.

Le programme ne se bloque pas puisque quand je retape f, cela me remet l'erreur.
J'ai un shield ethernet W5100.

Au niveau des adresses IP je pense avoir les bonnes, les voici :
Code: [Select]
// this must be unique
 byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 }; 

// change to your network settings
 IPAddress ip( 10, 138, 16, 160 );   
 IPAddress gateway( 10, 138, 0, 6 );
 IPAddress subnet( 255, 255, 255, 0 );

// change to your server
 IPAddress server( 10, 138, 16, 159 );



merci. :)
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: anthology on Jun 12, 2018, 06:42 pm
sans regarder trop longtemps,
travaille tu en local ou en distant ?
les adresses local sont du type 192.168.XXX.XXX la plupart du temps
la ca me fait penser a des adresses distantes et qui du coup peuvent être bloquer par le parefeu,
regarde sur ta box pour avoir les ip local
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 13, 2018, 08:41 am
Je travaille en local, c'est un réseau entreprise.
Du coup je n'ai pas accès à la box ni aux serveurs hardware entreprise.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: kamill on Jun 13, 2018, 09:21 am
Bonjour,

To mask IP n'est pas correct.
Ce devrait être 255, 255, 0, 0
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 13, 2018, 09:31 am
Bonjour,

J'ai toujours la même erreur dans le moniteur après modification du 255 en 0.

Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 13, 2018, 09:37 am
Si c'est un serveur d'entreprise, ne pratique-t-il pas un filtrage sur les adresses MAC?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 13, 2018, 09:42 am
J'en sais rien du tout malheureusement.
Celui qui s'occupe d'une partie de l'informatique de l'entreprise est en déplacement donc je ne peux pas lui demander, cela peut venir de là ?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 13, 2018, 07:06 pm
Salut,

pour savoir si c'est le switch qui pose problème tu peux virer le switch ;-)  :

connecte directement le PC et le shield. Si ton PC obtient son adresse IP par DHCP il déconfigurera peut-être son adresse IP lorsque tu le débrancheras du switch. Tu devras alors faire une configuration manuelle de son IP et de son masque réseau,  (la passerelle on s'en moque).

Une fois les tests faits, reconfigure la configuration réseau du PC comme à l'origine.

Si ça marche le problème vient du switch.

Si ça ne marche toujours pas c'est soit  :

  * de la faute du programme
  * soit un problème de câble Ethernet droit/croisé mais normalement le circuit W5100 embarqué dans certains shield gère automatiquement le type de câble.


Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 14, 2018, 09:24 am
Salut,

Pourrais-tu m'expliquer comment faire s'il te plait ?
Je ne connais pas du tout le réseau et je suis totalement perdu là  :smiley-confuse:
Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 14, 2018, 10:17 am
Après relecture de ton post initial je viens de voir que tu as besoin d'un switch puisque tu as 3 machines (PC, Raspberry, Shield Ethernet).


 - ton serveur FTP est sur la raspberry
 - le client FTP est sur l'arduino
 - a quoi te sert le PC (faire du ssh sur la raspberry ?)
 - sous quel système d'exploitation tourne le PC ?

Je pose ces questions parce que c'est plus simple de n'avoir que 2 machines pour virer le switch et donc il faut en virer une (PC ou raspberry)

Ce que je ferai pour valider le programme client sur l'arduino sans switch  :

1. Installation d'un serveur FTP sur le PC histoire d'éliminer la raspberry PI dans un premier temps
2 Connexion directe (sans switch) du PC et du shield
3 Configuration de l'IP manuelle de l'IP du PC
4 test de la réception du fichier sur le serveur FTP du PC.

Le plus simple est quand même de récupérer un switch basique (https://shop.hardware.fr/fiche/AR201007010073.html?gclid=EAIaIQobChMIjqGNv9vS2wIVxEPTCh1Hrgi2EAQYAiABEgJVjfD_BwE) (sans filtrage en supposant que le problème vienne de là).



Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 14, 2018, 01:08 pm
Mon PC est branché sur le switch pour avoir une connexion internet et pouvoir faire des recherches en parallèle, je n'ai qu'une prise réseau à ma disposition. Le PC tourne sous W7 entreprise.

J'aimerais quand même garder le serveur ftp sur la RaspBerry puisque c'est cette solution qui doit être mise en œuvre.

j'ai cherché sur le net pour faire un réseau entre mon pc, la raspberry et l'arduino mais j'ai trouvé que de vieux articles de 2005 ou autre année dépassée aujourd'hui.

Peux-tu m'expliquer comment faire pour configurer l'IP manuellement ?

Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 14, 2018, 01:32 pm
Mon organisation se présente comme dans l'image en pièce jointe.
Le système doit être expensible, donc autant de clients que l'on veut mais le serveur ftp sur la raspberry ne doit pas bouger.
Est-ce faisable ?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 14, 2018, 09:53 pm
Oui c'est faisable mais à condition de ne pas avoir un switch filtrant l'adresse MAC de ton arduino (si c'est bien ce qui se passe).

En attendant le retour de l'administrateur réseaux, histoire d'avancer si le switch en place est le problème :

Switch (pour Internet) <- Ethernet -> Windows <- USB -> Arduino <- Ethernet -> Raspberry

Tu élimines le switch entre l'arduino et le raspberry et tu n'as même pas besoin de changer les adresses IP.


Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 18, 2018, 03:06 pm
J'ai donc suivi ton schéma de montage, j'ai branché directement l'arduino au raspberry via ethernet, les adresses ip sont donc maintenant 169.254.161.140 pour le serveur et j'ai mis 169.254.161.141 pour l'arduino.

Malheureusement le programme ne fonctionne toujours pas. Il bloque au niveau de la connexion au serveur.
Cela ne vient pas du shield ethernet puisque j'ai essayé de la changer, sans succès.

Avez-vous des solutions ?

Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 18, 2018, 03:18 pm
Tu as vérifié avec un ifconfig sur le Raspi que l'adresse est bien celle prévue?
As-tu fait un ping 169.254.161.141 depuis le Raspi pour confirmer que l'Arduino est bien visible sur le réseau?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 18, 2018, 03:21 pm
J'ai fait le ifconfig mais pas le ping, comment faire ?
je n'ai jamais utilisé de raspberry.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 18, 2018, 03:25 pm
dans une console tu tapes:
ping -c8 169.254.161.141
le raspi va envoyer 8 ping à l'adresse indiquée
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 18, 2018, 03:40 pm
Merci. Maintenant le programme fonctionne et le fichier s'envoie.
J'ai maintenant essayé de mettre le système sur le réseau, cela ne fonctionne plus, penses -tu que je dois débloquer une adresse ip pour l'arduino et le raspberry ?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 18, 2018, 04:00 pm
Chaque appareil connecté au réseau doit avoir une adresse spécifique.
Soit tu demandes que l'on t'alloue des adresses fixes sur le réseau pour chacun de tes équipements soit ils doivent faire une requête DHCP à l'initialisation afin d'obtenir une adresse sur le réseau.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 18, 2018, 04:25 pm
J'avais vu vite-fait sur internet pour faire une requete DHCP avec l'arduino mais ça n'avais pas fonctionné chez moi.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 18, 2018, 04:58 pm
Si j'en crois le schéma donné au message #13, il n'y a pas de serveur DHCP dans ta configuration.
Sauf si tu as activé la fonction dans le raspberry.
Lorsque tu avais fait un essai quelle était la configuration utilisée?
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 18, 2018, 06:14 pm
Bonjour,

2 remarques en passant :

  - 1. le ifconfig sur la raspberry est à refaire à chaque redémarrage de la raspberry. Si tu veux une config persistante il faut définir le fichier /etc/network/interfaces.

  - 2. connecter une machine sur un switch (et/ou installer son propre serveur DHCP) dans un réseau d'entreprise sans l'accord des admins réseaux/systèmes n'est a priori pas une bonne idée (imagine que tu plantes un serveur en usurpant accidentellement son IP).

Je pense qu'il est temps que tu prennes contact avec eux ou que tu ais au moins l'aval explicite de ta hiérarchie pour tes expériences de découverte du fonctionnement des réseaux avec le réseau de l'entreprise comme bac à sable. Bref couvre tes arrières .



Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 19, 2018, 10:36 am
Bonjour,

Le nouveau schéma de montage actuel est en pièce jointe.
J'ai donc besoin que ce soit le serveur qui donne une adresse à mon arduino car je ne peux pas mettre une adresse IP en dur puisque le module est extensible, il peux très bien en avoir 50 comme 6 en route.
Le responsable réseau est rentré et j'ai l'autorisation plus une adresse ip fixe pour le raspberry.
Savez-vous comment procéder pour le DHCP avec l'arduino ?

Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 19, 2018, 11:07 am
Pour le DHCP j'ai essayé plusieurs programmes,
comme celui la :
Code: [Select]
/*
   DHCP-based IP printer

   This sketch uses the DHCP extensions to the Ethernet library
   to get an IP address via DHCP and print the address obtained.
   using an Arduino Wiznet Ethernet shield.

   Circuit:
    Ethernet shield attached to pins 10, 11, 12, 13

   created 12 April 2011
   modified 9 Apr 2012
   by Tom Igoe
   modified 02 Sept 2015
   by Arturo Guadalupi

 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
   0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
 EthernetClient client;

void setup() {
   // Open serial communications and wait for port to open:
   Serial.begin(9600);
   // this check is only needed on the Leonardo:
   while (!Serial) {
     ; // wait for serial port to connect. Needed for native USB port only
   }

   // start the Ethernet connection:
   if (Ethernet.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
     // no point in carrying on, so do nothing forevermore:
     for (;;)
       ;
   }
   // print your local IP address:
   printIPAddress();
}

void loop() {

   switch (Ethernet.maintain())
   {
     case 1:
       //renewed fail
       Serial.println("Error: renewed fail");
       break;

     case 2:
       //renewed success
       Serial.println("Renewed success");

       //print your local IP address:
       printIPAddress();
       break;

     case 3:
       //rebind fail
       Serial.println("Error: rebind fail");
       break;

     case 4:
       //rebind success
       Serial.println("Rebind success");

       //print your local IP address:
       printIPAddress();
       break;

     default:
       //nothing happened
       break;

   }
}

void printIPAddress()
{
   Serial.print("My IP address: ");
   for (byte thisByte = 0; thisByte < 4; thisByte++) {
     // print the value of each byte of the IP address:
     Serial.print(Ethernet.localIP()[thisByte], DEC);
     Serial.print(".");
   }

   Serial.println();
}


Le même problème qui reviens a chaque fois, c'est que l'adresse mac ne passe pas, Est-ce normal ?

Erreur dans le moniteur : Failed to configure Ethernet using DHCP


Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 19, 2018, 11:54 am
Sans doute qu'aucun serveur DHCP ne répond. Ce qui ne serait pas étonnant si aucun serveur DHCP n'a été configuré pour cela.

Personnellement depuis le début je nage dans l'approximatif vu que tu ne détailles pas l'organisation du ou des réseaux dans lequel tu veux t'insérer et/ou créer. Je veux bien tenter de t'aider mais sans informations précises non seulement mes infos risques d'être encore plus foireuses qu'à l'accoutumée mais en plus provoquer des dysfonctionnements sur les réseaux.

Le plus simple serait que tu demandes à l'administrateur réseau comment lui il voit les choses.

Quelques questions dont je n'ai pas la réponse :

  - le réseau 10.138.0.0/16? est utilisé par quelles machines de l'entreprise (dans le sens ou des IP sont déjà réservées)
  - le réseau 10.138.0.0/16? dispose-t-il déjà d'un serveur DHCP ?
  - les switchs filtrent-ils les adresses MAC ?
  - quelles sont les IP réservées pour tes cartes arduino ?
  - dans le schéma que tu donnes toutes tes arduino sont connectée au même switch, c'est vraiment vrai ?
  - ta solution qui marche sans switch, marche-t-elle avec le switch ?
  - et d'autres question sans doutes par la suite.

Je pense que tu devrais nous faire une présentation claire de l'organisation réseau en place et à venir, on ne peut ni deviner ni décider. Encore une fois, demande au responsable réseaux.

Et pourquoi ne pas "taguer" les cartes (eeprom) avec une adresse MAC et une adresse IP fixe plutôt que de s'embêter avec un serveur DHCP....


Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 19, 2018, 02:08 pm
Pour répondre à tes questions,
-le réseau dispose déjà d'un serveur DHCP;
-Les switchs ne filtrent pas les adresses mac;
-je n'ai aucune ip réservée pour mes cartes arduino;
-pour l'instant j'ai un arduino connecté au switch;
-La solution qui marche sans switch marche avec switch (j'ai changé de switch et ça s'est mis à fonctionner);

Pour l'organisation, je vais essayer d'etre clair, mais c'est pas évident :
J'ai plusieurs modules arduino avec shield ethernet qui récupèrent tous des infos différentes.
Ils sont tous connectés à une prise RJ45 menant sur le réseau d'entreprise.
Mon Raspberry est lui aussi connecté sur une prise RJ45 sur le réseau d'entreprise.
Pour ne pas avoir à mettre en dur une adresse ip par module (Il pourrait y avoir 80 modules dans le futur), j'aimerais louer une adresse temporairement, juste le temps de l'envoi d'un fichier texte, au serveur DHCP.

J'espère que tu as compris, sinon poses moi des questions.

Merci.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 19, 2018, 02:45 pm
As-tu essayé de changer l'adresse MAC. Parce que celle-ci elle est dans tous les exemples Arduino. Si jamais un autre Arduino est sur le même réseau avec la même adresse MAC il peut y avoir un conflit.
Title: Re: Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 19, 2018, 02:45 pm
Tous mes soucis sont réglés, il suffisait de tout mettre hors tension l'arduino en débranchant le RJ45 et en laissant débranché quelques secondes.
Apres avoir rebranché et lancé le programme suivant, l'arduino prend une adresse tout seul.
Merci à tous de votre aide précieuse.
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  
   0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
 EthernetClient client;

void setup() {
   // start the serial library:
   Serial.begin(9600);
   // start the Ethernet connection:
   if (Ethernet.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
     // no point in carrying on, so do nothing forevermore:
     for(;;)
       ;
   }
   // print your local IP address:
   Serial.println(Ethernet.localIP());

}

void loop() {

}


Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 19, 2018, 03:18 pm
Super !

N'oublie pas la remarque sur les adresses MAC de fdufnews ;-)

Sinon :

Quote
Pour ne pas avoir à mettre en dur une adresse ip par module (Il pourrait y avoir 80 modules dans le futur), j'aimerais louer une adresse temporairement, juste le temps de l'envoi d'un fichier texte, au serveur DHCP.
2 remarques :

  - tu vas devoir fixer une adresse MAC de toute façon donc une adresse IP en plus (dérivant par exemple de l'adresse MAC) n'était pas vraiment plus compliqué.
  - je ne vois pas dans la bibliothèque Ethernet arduino de fonction "relachant" explicitement une adresse IP obtenue par DHCP. La réutilisation de l'IP se fera donc à l'issue de la durée du bail et donc suivant la fréquence des communications et/ou la durée du bail il faudra peut-être une IP par arduino. Mais bon si le serveur DHCP est bien configuré (plage d'adresse dynamiques assez étendue) et si le réseaux est vraiment 10.138.0.0/16 (65534 machines possible en tout) cela va bien se passer ;)

L'avenir le dira   :smiley-mr-green:
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 19, 2018, 04:36 pm
Quote
N'oublie pas la remarque sur les adresses MAC de fdufnews ;-)
Je n'oublie pas la remarque :)

Quote
si le réseaux est vraiment 10.138.0.0/16 (65534 machines possible en tout) cela va bien se passer ;)
Le réseau est même 10.138.0.0/24, je ne sais pas si cela change quelque chose.
Au passage l'entreprise est Michelin :)
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 19, 2018, 05:39 pm
Quote
Le réseau est même 10.138.0.0/24, je ne sais pas si cela change quelque chose.
Un peu, tu viens de passer d'un réseau de 65534 machines à un réseau de 254 machines ;-)

Du coup le masque réseau (subnet) est 255.255.255.0 et non pas 255.255.0.0 comme supposé à un moment.

A mon avis ce n'est pas un souci car :

  - ce réseau t'est sans doute réservé
  - chez Michelin tout roule non ? :smiley-red:

A+
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 20, 2018, 09:14 am
J'ai tout de même une dernière questions qui me viens en tête, est-il possible d'envoyer mon fichier texte dans un dossier précis situé sur la raspberry?

Pour l'instant le fichier s'envoie dans le dossier principal utilisateur mais j'aimerais, pour avoir quelque chose de vraiment propre, que le fichier texte aille se ranger dans un dossier nommé Dossier_Heures_Machines présent dans le dossier principal utilisateur.

Merci :)
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 20, 2018, 09:47 pm
Oui c'est possible. Observe le code http://playground.arduino.cc/Code/FTP que tu utilises. La fonction doFTP se connecte au serveur ftp et envoie le fichier . L'idée serait de changer de répertoire (en le créant si nécessaire) après s'être connecté et avant d'envoyer le fichier. Des commandes ftp (https://fr.wikipedia.org/wiki/Liste_des_commandes_ftp) existent pour cela ( MKD mydir, CWD mydir).

Exemple (pas testé) :

Code: [Select]


// ...
String dossier="monDossier";

// connexion (cf. doFTP)
// ...

// On se place dans dossier (si échec on le crée et on se place dedans)  

client.println((String)F("CWD ")+dossier);
if(!eRcv()) {
   client.println((String)F("MKD ")+dossier);
   eRcv();

   client.println((String)F("CWD ")+dossier);
   if(!eRcv()) return 0;
}

// on est dans le dossier, on copie le fichier (cf. doFTP)
// ...



Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 21, 2018, 10:23 am
Super, ça fonctionne, merci beaucoup.

Pendant que j'y suis j'ai encore une question (oui encore :) ),
j'aimerais que le fichier soit remonté tous les x temps en plus que lorsqu'on arrête le compteur.
Je pensais le mettre dans le loop avec un compteur qui augmente lorsqu'on atteint ce temps.

Mon code est en pièce jointe, je n'ai pas assez de place dans le post pour l'intégrer.

De plus, j'ai un problème, a chaque fois que je re téléverse le code sur l'arduino, il me met une adresse ip a la con genre 255.255.255.255 et le seul moyen que j'ai trouvé pour résoudre ce problème, c'est d'avoir un autre programme DHCP en parallèle et le compiler quand je veux tester mon nouveau code.
Est-ce normal ?

Merci.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 21, 2018, 11:26 am
Le morceau de code suivant est bizarre.
Code: [Select]
      S = now.second();   //Prend les secondes actuelles
   
      if(S > C)       //Compare si une seconde est passée de 0 a 58
      {
        compteur++;       //Ajoute 1 au compteur
        fonctionnement = compteur/3600;   //Converti le compteur en secondes
        Serial.println("boucle");       //Indicateur de debogage pour dire qu'on est passé dans la boucle
      }
      if(S < C)   //Compare si une seconde est passée(pour 59 secondes)
      {
        compteur++;     //Ajoute 1 au compteur
        fonctionnement = compteur/3600;     //Converti le compteur en secondes
        Serial.println("boucle");     //Indicateur de debogage pour dire qu'on est passé dans la boucle
      }

.....

      C = now.second();         //Prend les secondes actuelles pour etre comparé


Les 2 if font la même chose. Cela pourrait être remplacé par un if (S!=C)
Le fait de relire la RTC pour charger C en fin de boucle peut te faire perdre une seconde. Si le bloc de code, qui accède à la SD card, subit un ralentissement tu vas perdre une seconde.
Il suffirait de remplacer :
C = now.second();
par
C = S;

La variable etat n'est mise à jour qu'une fois dans le setup() et nulle part ailleurs:

Tu sembles avoir peur d'user l'EEPROM puisque tu comptes un nombre d'écriture et allume une alerte.
Si c'est la cas, il faudrait écrire ton compteur à une autre adresse lorsque tu approches de la fin de vie présumée de l'EEPROM et remettre à zéro le nombre d'écriture ce qui augmenterait la vie de ton système.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 21, 2018, 02:30 pm
J'ai suivi ton conseil et cela fonctionne.
J'ai un peu modifié le programme, maintenant le fichier remontera tous les jours à 15h peut importe l'état du bouton, en plus de remonter lorsqu'on éteint la machine.

Je n'ai pas trop compris ce que tu m'as dit sur l'EEPROM, je n'ai pas peur de l'utiliser, la led est juste un avertisseur pour changer l'arduino MEGA lorsque l'EEPROM est en fin de vie.

Merci.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: fdufnews on Jun 21, 2018, 03:00 pm
Je n'ai pas trop compris ce que tu m'as dit sur l'EEPROM, je n'ai pas peur de l'utiliser, la led est juste un avertisseur pour changer l'arduino MEGA lorsque l'EEPROM est en fin de vie.
Oui mais tu n'écris que quelques adresses ans l'EEPROM. Donc lorsque tu arrives en "fin de vie" en fait c'est la fin de vie pour ces quelques octets et il te reste tout le reste de l'EEPROM dans lequel tu n'as jamais écrit.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 21, 2018, 03:45 pm
D'accord donc si je change l'adresse de chaque variable et que je l'augmente de 8 (C'est bien 8 octets un long ?), je double l'espérance de vie du module ?

Es-tu sur que ce n'est pas l'entièreté de l'eeprom qui est limité en ecriture plutôt que chaque octet ?

J'en ai discuté avec mon maitre de stage, il me conseille de laisser comme ceci plutôt que de se compliquer la vie et de risquer d'empiéter sur d'autres octets déjà utilisés.

Merci.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 21, 2018, 10:22 pm
De plus, j'ai un problème, a chaque fois que je re téléverse le code sur l'arduino, il me met une adresse ip a la con genre 255.255.255.255 et le seul moyen que j'ai trouvé pour résoudre ce problème, c'est d'avoir un autre programme DHCP en parallèle et le compiler quand je veux tester mon nouveau code.
Est-ce normal ?
Bonsoir,

je n'ai pas tout compris (comment une compilation d'un programme peut influer sur une requête DHCP d'un autre programme ?).

Peut-être une piste : éteins tu la carte après le téléchargement ? Auquel cas lorsque que tu la réalimentes électriquement la requête DHCP est peut-être faite trop tôt, avant que le shield Ethernet ait le temps de correctement s'initialiser.

Pour tester cette théorie ajoute simplement un delay(1000) avant Ethernet.begin(mac);



Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: Herouis on Jun 25, 2018, 08:37 am
Bonjour,

Je ne comprends pas tout non plus sur cette histoire d'adresse IP qui prend 255.255.255.255 lors de l'initialisation de l'arduino.
J'ai essayé de rajouter 1 sec de délai comme tu me l'as dit mais rien ne change.
Est-ce encore une fois un de mystères incompréhensibles de l'Arduino ?  :smiley-roll-blue:

Merci.
Title: Re: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry
Post by: supercc on Jun 25, 2018, 10:23 pm
Et si après avoir attendu 1 s tu refais une requête DHCP ?