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 :

MEGA2560 ET W5500 en IP fixe


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut MEGA2560 ET W5500 en IP fixe
    Bonjour,
    j'ai réalisé un module qui communique avec un serveur pour échanger des infos.
    Tout fonctionne bien de puis un bon moment.
    Par souci de simplicité et d'adaptabilité à l'ensemble des installations je me raccorde au réseau en DHCP.
    Super tout marche bien.
    Seulement un nouveau client m'impose de travailler en IP fixe et la bizarrement ça ne marche plus.
    Ca fonctionne en réseau local (LAN) mais dès que je sors sur le net (WAN) ça ne marche plus.
    l'IP fixe est déclarée sur mon routeur, en dehors de la zone DHCP.
    Qu'est-ce qui peux bloquer la connexion ?
    Est-ce que j'ai oublié quelque chose ?
    Si un spécialiste réseau peux m'aider il serait le bienvenu, parce que je sèche.
    J'ai isolé la partie du code qui me pose problème, il suffit d'activer ou désactiver les balises T_DHCP et WAN pour faire un test.
    Pour le moment, j'ai laissé le serveur sur le WAN ouvert pour les tests.
    Merci de votre aide.
    Patrick


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    #include <SPI.h> //For the selection of the key
    #include <Ethernet2.h>          //gestion réseau WS5500
     
    #define DEBUG
    //#define T_DHCP    //connection par DHCP sinon IPfixe
    #define WAN        //CONNECTION WAN sinon LAN
     
    #define SS_IP 53  //connection SS sur mega2560pro
     
    //variables pour la construction de la trame d'interrogation
    const char sep = '¤';  //¤ séparateur de trame
    const char FT = 253;   //  fin de trame
    int value = 0;
    String trame1;
    int TR0;
    int TR1;
    int TR2;
    int TR3;
    String code;
    String carte;
     
    EthernetClient client;  //ETHERNET INSTANCE
      signed long next;
      //adresse mac du module IP
      byte mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
      IPAddress IP(192,168,0,112);    //adresse fixe du module enregistrée sur le routeur
     
      IPAddress PAS(192,168,0,1);     //passerelle
      IPAddress DNS(192,168,0,254);   //dns
      IPAddress MAS(255,255,255,0);   //masque
     
      #ifdef WAN
        IPAddress SRV(91,160,17,23);    //IP WAN
        const long PORT = 33007;        //port WAN
      #else
        IPAddress SRV(192,168,0,65);    //IP LAN
        const long PORT = 10007;        //port LAN
      #endif
     
    signed long timeout;              //TIMEOUT SO IT DOESN'T SIT THERE FOREVER
     
    /*la connection fonctionne :
     * lorsque je me connecte sur le réseau local LAN en DHCP ou en IP fixe
     * lorsque je me connecte par le WAN sur un entrée redirigée   
     * 33007 est redirigée par le routeur sur 10007
     * en DHCP c'est ok mais impossible de se connecter en IP fixe ???
     */
     
     
    void setup() {
      Serial.begin(115200);
      digitalWrite(SS_IP, 0);
      Ethernet.init(SS_IP);
      Serial.println  ("***************************************************************");
      Serial.println  ("********* CONNECTION SERVEUR **********************************");
      Serial.println  ("***************************************************************");
     
      #ifdef WAN
        Serial.print ("connection WAN :");
      #else
        Serial.print ("connection LAN :");
      #endif
      Serial.print (SRV);
      Serial.print(" - ");
      Serial.println (PORT);
     
      #ifdef T_DHCP   //CONNECTION QUI FONCTIONNE
        int rep=0;
        Serial.print("test en DHCP rep= ");
        rep=Ethernet.begin(mac);     //solution DHCP pour fonctionner sur tous les sites
        Serial.println(rep);
      #else           //CONNECTION QUI NE FONCTIONNE PAS!!!!!!!!
        Serial.print("test avec IP fixe : ");
        Serial.println(IP);
     
        //Ethernet.begin(mac, IP, DNS, PAS, MAS);
        //Ethernet.begin(mac, IP, DNS, PAS);
        //Ethernet.begin(mac, IP, DNS);
        Ethernet.begin(mac,IP);
      #endif
      delay(3000);
     
      #ifdef DEBUG     
        Serial.print("localIP: ");     Serial.println(Ethernet.localIP());
        Serial.print("subnetMask: ");  Serial.println(Ethernet.subnetMask());
        Serial.print("gatewayIP: ");   Serial.println(Ethernet.gatewayIP());
        Serial.print("dnsServerIP: "); Serial.println(Ethernet.dnsServerIP());
        Serial.print("Serveur : ");    Serial.print (SRV);
        Serial.print("  Port : ");     Serial.println (PORT);    
        Serial.println ("=================================================");
      #endif  
     
    }
     
    void loop() {
     
      Connect();
      delay(5000);
     
    }
     
    void Connect() {
    ++value;
    TR0=99;
    TR1=2;
    TR3=3;
    code="OSMOPUR";
        #ifdef DEBUG
          Serial.print("Connexion : "); Serial.print(SRV);Serial.print(" - Tentative: "); Serial.println(value);
        #endif
          int rep=0;   
          rep= (client.connect(SRV,PORT));
          if (rep==1)
            {
              #ifdef DEBUG
                Serial.println(" - OK");
                value=0;
              #endif
              // Créer la trame à envoyer
              trame1= TR0;
              trame1 += sep;trame1 += TR1;
              trame1 += sep;trame1 += TR2;
              trame1 += sep;trame1 += TR3;
              trame1 += sep;trame1 += code;
              trame1 += sep;trame1 += carte;    
              trame1 += FT;          
              client.print(trame1);
              //client.print("Des infos de la part du client - "); client.println(IP);
              unsigned long timeout = millis();
              while(client.available()==0) {
                if (millis() - timeout > 8000) {
                  //pas de réponse du serveur
                  #ifdef DEBUG 
                    Serial.print(" >>> Client Timeout ! ");
                  #endif
     
                  goto close;
                }
              }
     
              int size;
              while((size = client.available()) > 0) {
                {
                  uint8_t* msg = (uint8_t*)malloc(size);
                  size = client.read(msg,size);
                  #ifdef DEBUG
                    Serial.print(" - Réponse serveur: ");
                    Serial.write(msg,size);
                  #endif
                  //Serial.println();
                  free(msg);
                }
              }
    close:
              //disconnect client
              #ifdef DEBUG
                Serial.println(" - Client déconnecté ");
              #endif
              client.stop();
            }else{
     
              #ifdef DEBUG
                Serial.println(" - Client connect Erreur ");
              #endif
     
            }
      delay(1000);
     
    return;
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Que voyez vous à la connexion?

  3. #3
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut W5500 pb IP fixe
    Citation Envoyé par Jay M Voir le message
    Que voyez vous à la connexion?
    j'ai repris un test de la bibliothèque Ethernet.h, tout simple pour bien comprendre mon problème.
    si j'utilise ce code tel quel cela ne fonctionne pas j'obtiens "connection failed"
    si j'enlève ",ip" et que je laisse "mac" tout va bien.
    Ce qui m'énerve, c'est que tous les exemples fonctionnent avec une adresse IP et pour moi cela ne fonctionne qu'en mode DHCP.
    cela fonctionne très bien d'ailleurs depuis plusieurs mois.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #include <Ethernet.h>
    #include <SPI.h>
     
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    byte ip[] = { 192, 168, 0, 115 };
    byte server[] = { 64, 233, 187, 99 }; // Google
     
    EthernetClient client;
     
    void setup()
    {
      Serial.begin(115200);
      digitalWrite(53, 0);
      Ethernet.init(53);
     
      Ethernet.begin(mac, ip);   //ici connection failed. si j'enlève ',ip' , je ne conserve que mac, tout fonctionne.
      delay(3000);
     
      Serial.println("connecting...");
     
      if (client.connect(server, 80)) {
        Serial.println("connected");
        client.println("GET /search?q=arduino HTTP/1.0");
        client.println();
      } else {
        Serial.println("connection failed");
      }
    }
     
    void loop()
    {
      if (client.available()) {
        char c = client.read();
        Serial.print(c);
      }
     
      if (!client.connected()) {
        Serial.println();
        Serial.println("disconnecting.");
        client.stop();
        for(;;)
          ;
      }
    }

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    L’adresse IP fixe que vous prenez est compatible avec le réseau / autorisée par le routeur ?

  5. #5
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut Compatibilité adresse IP
    oui, tout à fait compatible, j'ai réservé les 50 premières pour le DHCP le reste est libre.
    C'est juste une box FREE, assez facile à configurer.
    Nom : DHCP FREE.jpg
Affichages : 431
Taille : 34,3 Ko

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Je n’ai pas de freebox donc ne Connaît pas les détails de configuration.
    Et si vous enlevez l’assignation fixe par machine ? Comme il a déjà vu votre adresse Mac peut être ça crée un conflit et il veut forcer l’allocation de l’adresse DHCP?

    Avez vous essayé à titre de curiosité de fixer l’adresse IP sur le routeur par gestion de l’adresse MAC? (De manière générale ce n’est pas super quand l’adresse IP qu’est codée en dur dans un programme, autant laisser cela aux éléments du réseau et utiliser soit DHCP, soit l’allocation statique d’une adresse donnée pour une MAC address donnée)

  7. #7
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut W550 IP fixe
    la freebox se comporte comme n'importe quel routeur,
    j'ai attribué les adresse IP de 0 à 50 pour le DHCP

    j'ai enregistré l'adresse mac sur le port 112
    Nom : IP FIXE FREE.jpg
Affichages : 411
Taille : 9,7 Ko

    Ensuite j'ai fait un nombre incalculable de tests en modifiant l'adresse mac, l'adresse IP, les timings, en modifiant les paramètres de la fonction begin, en changeant de serveur...
    physiquement j'ai changé de module W5500, de carte électronique, le câble réseau, de connexion sur le switch, j'ai testé différents programmes de test... rien à faire
    Et pourtant tous les exemples fonctionnent avec cette configuration "Ethernet.begin(mac,IP)" et personne n'a l'air d'avoir de problème...

    J'aimerai communiquer avec quelqu'un qui utilise le module W5500 avec n'importe quel Arduino pour savoir comment il fonctionne et si ça marche...

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Avez vous un autre routeur?
    Il me semble avoir lu des galères avec la freebox (Mais c’était il y’a longtemps)

  9. #9
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut Autre routeur
    Non, je n'en ai pas d'autre sous la main, mais je vais essayer de squatter un client ou un copain, parce que je pense vraiment que le problème vient de la config du routeur.
    J'ai essayé différentes modifications, mais les modifs ne sont pas instantanées, du coup c'est très long de faire des tests.

  10. #10
    Membre régulier
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut Autre routeur
    Bien, hier soir je suis allé faire un test chez un voisin.
    Nouvelle équipement FreeBox pro installé cette semaine, aucun modification aux paramétrages d'usine.
    Et bien cela ne marche pas non plus en IP fixe, uniquement en DHCP.
    L'adresse 112 n'est pas utilisée par d'autres connexions, j'ai bien vérifié. de plus j'ai essayé avec d'autres adresses et d'autres adresses mac.

    J'en arrive à me rabattre sur le plan B : Convaincre mon client d’enregistrer une adresse fixe sur son routeur avec l'adresse mac
    Ce n'est pas ma solution préférée, j'ai horreur de contourner les problèmes sans les résoudre.
    Je continuerai donc de chercher la solution pour la suite.

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour Patrick

    En DHCP, il y a plusieurs informations qui sont renseignées. L'adresse IP qui est attribuée, le masque de sous-réseau, le serveur DNS et la passerelle. Lorsque tu passes en manuel tu dois renseigner ces champs. La bibliothèque Arduino met des valeurs par défaut pour les trois dernier si cela ne sont pas fait dans l'appel de la fonction Ethernet.begin.

    Vu que tu tentes la connexion à une adresse IP en WAN, le DNS n'est pas nécessaire mais il faut que la passerelle soit correctement renseignée. Est-ce qu'en adresse dynamique la passerelle a bien la valeur que tu attribues lorsque tu tests en manuel? (Vu que tu les affiches en debug pour le 1er code). Dans tes codes, étant donné que tu utilises Ethernet.begin(mac, ip); tu fixes la passerelle à 192.168.0.1.

    Avec une plage DHCP de 192.168.0.0 à 192.168.0.50, j'ai comme l'impression que la box, et donc la passerelle n'est pas sur 192.168.0.1 (traditionnellement elle doit être en dehors).
    Edit: à priori non au vu du print-screen, simplement une erreur de frappe dans le message #7

    Delias

  12. #12
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 900
    Par défaut
    Salut à tous.

    Citation Envoyé par patrick.pourmonet
    Par souci de simplicité et d'adaptabilité à l'ensemble des installations je me raccorde au réseau en DHCP.
    Super tout marche bien.
    Le serveur DHCP de votre FreeBox vous attribue une adresse dynamique dans la plage des adresses que vous avez indiqué. S'il n'existe pas d'adresse fixe, l'adresse dynamique sera prise entre 192.168.0.10 jusqu'à 192.168.0.50 comprise. Si vous attribuez une adresse fixe, cela se fait par l'association avec une adresse mac et l'adresse ip doit être en dehors de la plage des adresses dynamiques que vous avez indiqué.

    Voyez-vous l'adresse de connexion "192.168.0.115" dans votre FreeBox ? Est-ce que votre adresse MAC est bien "DE:AD:BE:EF:FE:ED" ?

    Je possède une box sfr. Je suis obligé d'autorisé les adresses MAC en wifi à se connecter à ma box, en plus d'avoir déclaré le couple (adresse mac ; adresse ip fixe) dans mon serveur DHCP. Avez-vous une configuration de ce genre dans votre FreeBox ?

    Citation Envoyé par patrick.pourmonet
    Seulement un nouveau client m'impose de travailler en IP fixe et la bizarrement ça ne marche plus.
    Ca fonctionne en réseau local (LAN) mais dès que je sors sur le net (WAN) ça ne marche plus.
    Qu'est-ce que vous entendez pas "ca fonctionne en réseau local" ? Voulez-vous dire que vous arrivez à communiquer avec votre périphérique à partir d'un ordinateur qui se trouve dans votre réseau local ? Si la réponse est oui, ce n'est pas un problème de DHCP que vous avez mais un problème de NAT (Network Address Translation). Vous dites :
    Citation Envoyé par patrick.pourmonet
    j'ai enregistré l'adresse mac sur le port 112
    Le flux internet entrant et sortant de votre freeBox, pour le port 112, doit être redirigé vers votre adresse fixe "192.168.0.115".
    Je possède un serveur web, et je suis obligé de rediriger le flux afin d'avoir accès à mes pages web depuis l'internet.

    Vous dites que cela fonctionnait avant. Ce n'est pas le fait de mettre votre adresse dynamique en fixe qui vous cause des problèmes, c'est que vous avez changé d'adresse ip. Et vous avez oublié de corriger l'adresse ip dans la section NAT.

    Cordialement.
    Artemus24.
    @+

  13. #13
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    et vous êtes sûr que personne d'autre sur le réseau utilise déjà 192.168.0.112?

Discussions similaires

  1. [MFC] CListCtrl: colonnes fixes + tri des items
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 10/05/2004, 22h54
  2. [C#]dimension fixe footer et header datagrid
    Par Dos dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/01/2004, 17h45
  3. IP Fixe et déclarations DNS
    Par Admin dans le forum Dépannage et Assistance
    Réponses: 37
    Dernier message: 05/11/2003, 17h01
  4. Comment enregistrer un stream de longueur fixe ?
    Par Alcarbone dans le forum MFC
    Réponses: 5
    Dernier message: 13/04/2003, 20h14
  5. Chiffre a Virgule Fixe
    Par garybaldi dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 10h41

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