Go Down

Topic: [RESOLU]Envoi d'un fichier sur serveur FTP hébergé par RaspBerry (Read 1 time) previous topic - next topic

Herouis

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.

fdufnews

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?

Herouis

J'ai fait le ifconfig mais pas le ping, comment faire ?
je n'ai jamais utilisé de raspberry.

fdufnews

dans une console tu tapes:
ping -c8 169.254.161.141
le raspi va envoyer 8 ping à l'adresse indiquée

Herouis

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 ?

fdufnews

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.

Herouis

J'avais vu vite-fait sur internet pour faire une requete DHCP avec l'arduino mais ça n'avais pas fonctionné chez moi.

fdufnews

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?

supercc

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 .




Herouis

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.

Herouis

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.

supercc

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....



Herouis

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.

fdufnews

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.

Herouis

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() {

}



Go Up