Problème accès serveur arduino

Bonjour à tous, j'aurai une question.
Jai installé mon boîtier de clôture connecté qui doit permettre d'envoyer une requête a un arduino, mais également de recevoir des notifs pushingbox.
Mon arduino est donc serveur, mais aussi client.
Jusque là tout allait bien, mais aujourd'hui le serveur était pratiquement toujours inaccessible.le code n'était pas bloqué, puisque toutes les autres actions fonctionnait, mis à part le serveur.
Quand je tapais l'adresse dans un navigateur le serveur était inaccessible.
D'où peut venir le soucis, du shield non officiel ?du câble ethernet ?

Merci pour vos reponses

D'où peut venir le soucis, du shield non officiel ?du câble ethernet ?

Il ne faut pas se focaliser sur le fait qu'il soit officiel ou non.
Si on se limite au strict plan matériel la seule chose de sûre c'est qu'un shield officiel est plus cher parce que l'un des 2 arduinos qui le fabrique qui le commercialise d'une part prend plus de bénéfices que sur Ebay et d'autre part à plus de charges..

Acheter officiel ou une copie est du domaine de la morale personnelle.
Pour ce qui est de la qualité il peut exister des fournisseurs catastrophiques mais le plus souvent le sous-traitant chinois fabrique pour une "marque connue" et quand la quantité commandée est atteinte il continue la fabrication pour son propre compte (il suffit souvent de simplement changer un masque de sérigraphie) : c'est donc les mêmes composants.

Mais pourquoi se limiter au seul matériel ?
Il se peut que le programme soit entré dans une configuration que tu n'avais pas prévu au départ.

Je pense que le mieux serait de faire des tests unitaires simples des différentes composantes matérielles et logicielles.

Mon arduino fonctionne en serveur et client . Le serveur est inaccessible, il ne répond pas aux requêtes, par contre, quand j'effectue une action ( appuis sur un bouton pour mettre un relais à LOW, la notification push s'effectue toujours et sans problèmes. Le serveur se bloque alors que le client fonctionne très bien .
Je ne vois vraiment pas d'où peut venir le problème

Jai fait beaucoup de test et même tous composants déconnectés, le serveur bloqué. Le pb vient donc du code

Jai testé également le shield avec uniquement le code de serveur ethernet . Et bien tout fonctionne parfaitement. Je pense donc que quelque part le code est en cause

Salut,

Tu devrait mttre ton code qu'on y vois plus clair.

Salut, y a t-il une carte sd sur ton shield ? car j'ai eu des problèmes à m'arracher les cheveux quand la carte était ou n'était pas insérer !

Non je n'ai passé carte sd

voici mon code qui fonctionne parfaitement. le seul problème c'est qu'a partir d'un moment le serveur devient innaccessible. j'ai testé en supprimant la partie client pour envoyer les push en pensant qu'il pouvait y avoir conflit entre serveur/client, mais non, ça ne change rien.
Par contre, quand je connecte ma mega avec uniquement le code (exemple arduino) serveur, il fonctionne toujours et ne se bloque pas.

#include <DHT.h>

// ---------------------------------------------------------------------------------------------------------
// zimmermann frédéric
// Arduino + ethernet shield control by iOS
// Mai 2015
// ----------------------------------------------------------------------------------------------------------

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

#define DHTPIN 23 
#define DHTTYPE DHT22

unsigned long tempscloturearret;

DHT dht(DHTPIN, DHTTYPE);

float h = 0;
float t = 0;
// Ethernet shield settings
// Change the MAC in hex, your IP, Gateway, subnet mask and webport
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};        // MAC
byte ip[] = {192, 168, 0, 254};                         // Shield IP
byte gateway[] = {192, 168, 0, 1};                      // Gateway
byte subnet[] = {255, 255, 255, 0}; // Subnet mask
byte dnsserver[] = {213, 166, 201, 3};
int port = 85;                                                        // Webport

// ---------------------------------------------------------------------

EthernetServer server(port);
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
EthernetClient client2;


int Cloture1 = 30;
int led = 22;
int bouton = 6;
int etatbouton ;
int etatbouton1 ;
int buzzer = 24;
int ledtemp = 25;
int boutontemp = 26;

int val = 0;
int val1 =0;
int precedetat = 0;
int precedetat1 = 0;

boolean pushenvoi = true;
boolean cloture1Allume = true;

boolean clotureOFFiphone = false;
boolean clotureONiphone = false;
boolean clotureEteinteIphone = false;
boolean clotureEteinteBouton = false;
boolean tempsdepasse;
boolean debutrebour;
boolean pushtemp = true;
boolean affichtemp = false;


char DEVID1[] = "v1F51D72F4A163BD";  //sénario cloture 1 allumé
char DEVID2[] = "v7F928A69AAD2196";  //sénario cloture 1 éteinte

char DEVID5[] = "vBD841D59046818A"; // sénario temps dépassé cloture éteinte trop longtemps
char DEVID6[] = "vED7798342897B86"; // sénario température
char serverName[] = ("api.pushingbox.com");



// Serial speed
int speedSerial = 9600;

// Buffer size
int sizeString = 80;
String stringInput = String(sizeString);

// Setup
void setup()  {

  Serial.begin(speedSerial);

  lcd.begin(16, 2);
  
  // Digital Pins 10, 11, 12 , 13 utilisé par le shield ethernet
  pinMode(Cloture1, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(bouton, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(boutontemp, INPUT);
  pinMode(ledtemp, OUTPUT);
  // Start ethernet shield webserver


  Ethernet.begin(mac, ip, dnsserver, gateway, subnet);
  Serial.println (Ethernet.localIP ());



  server.begin();
dht.begin();

     lcd.setCursor(0, 0);
    lcd.print("  AGRIDOMOTIQUE ");
    lcd.setCursor(0, 1);
    lcd.print("     Bonjour "   );
    
    
    
}


void loop()  { 
  
 
    

       t = dht.readTemperature();  // mesure valeur température et humiditée
       h = dht.readHumidity();

  val = digitalRead (bouton);
  val1 = digitalRead (boutontemp);
  
  Serial.print("CLOTURE");
  Serial.print(" ");
  Serial.println(cloture1Allume);
  delay(500);
  Serial.print("bouton");
  Serial.print(" ");
  Serial.println(etatbouton);
   Serial.println(tempscloturearret);
   Serial.println(t);
      Serial.println(h);
  //------------------------------ GESTION DE L'APPUI SUR LE BOUTON DE LA CLOTURE --------------------------------

  if (val == HIGH && precedetat == LOW) {
    etatbouton = !etatbouton;
    delay(10);
  }
  precedetat = val;

 

  if (etatbouton == 1 && cloture1Allume == true) { // si bouton appuyé et cloture allumée
    cloture1Allume = false;                        // alors on éteint
    clotureEteinteBouton = true;
   
    lcd.setCursor(0, 0);
    lcd.print("Cloture eteinte ");
    lcd.setCursor(0, 1);
    lcd.print("-----Bouton-----");
    
  }                     

     // si cloture éteinte par bouton et non pas par iphone, alors on allume
     
  if (etatbouton == 0  && cloture1Allume == false && clotureEteinteIphone== false && clotureEteinteBouton == true) {   
    cloture1Allume = true;                                                                                            
   clotureEteinteBouton = false;
    
    lcd.setCursor(0, 0);
    lcd.print("Cloture allumee ");     
    lcd.setCursor(0, 1);
    lcd.print("-----Bouton-----");

  }

  // si cloture éteinte par bouton, on peu quand meme rallumer par iphone EN CAS D'URGENCE
   
if (cloture1Allume == false && clotureEteinteBouton == true && clotureONiphone == true) {   
                                                                                                
    
     clotureEteinteBouton = false;
    cloture1Allume = true;
    etatbouton = 0;
    
    lcd.setCursor(0, 0);
    lcd.print("Cloture allumee ");
    lcd.setCursor(0, 1);
    lcd.print("-----Bouton-----");
    clotureONiphone = false;

  }

    // si cloture allumé et qu'on éteint avec l'iphone, alors on éteint 
    
  if (cloture1Allume == true && clotureOFFiphone == true && etatbouton == 0) {  // SI CLOTURE ALLUMEE ET ON ETEINT AVEC IPHONE ALORS ON ETEINT LA CLOTURE
    cloture1Allume = false;
    clotureEteinteIphone = true;
    clotureONiphone = false;
    
    lcd.setCursor(0, 0);
    lcd.print("Cloture eteinte ");
    lcd.setCursor(0, 1);
    lcd.print("-----Iphone-----");
    
  }                 
  
  // si la cloture a été éteinte par l'iphone et qu'on allume avec l'iphone, alors on allume
  
   if (cloture1Allume == false && clotureONiphone == true && clotureEteinteIphone == true) {  // si bouton pas appuyé, cloture allumé et iphone Off
    clotureOFFiphone = false;
    cloture1Allume = true;
    clotureEteinteIphone = false;
    
    lcd.setCursor(0, 0);
    lcd.print("Cloture allumee ");
    lcd.setCursor(0, 1);
    lcd.print("-----Iphone-----");
   
  }                 
  
  // si l'iphone à éteint, alors c'est impossible de rallumer avec le bouton
  
 if(clotureEteinteIphone == true && etatbouton == 1  ){ // si bouton appuyé, alors que l'iphone a éteint, on peut rien faire
   
   lcd.setCursor(0, 0);
    lcd.print("Manip.impossible");
    lcd.setCursor(0, 1);
    lcd.print("Utilisez Iphone ");
    delay(2000);
   
    etatbouton =0;
 }

suite du code

  //-------------------------------GESTION DE L'APPUI SUR LE BOUTON DE LA TEMPERATURE ET HUMIDITÉE
 if (val1 == HIGH && precedetat1 == LOW) {
    etatbouton1 = !etatbouton1;
    delay(10);
  }
  precedetat1 = val1;



  if ( etatbouton1 == 1) 
   { 
     digitalWrite (ledtemp, HIGH);
     
     lcd.setCursor(0, 0);      // ecrit la température et l'humiditée sur le lcd
     lcd.print("Temp : ");
     lcd.print(t,1);
     lcd.setCursor(11, 0);      
     lcd.print(" deg ");
    
    lcd.setCursor(0, 1);
    lcd.print("Humid: ");
    lcd.print(h,1);
    lcd.setCursor(11, 1);      
     lcd.print(" %   ");
    
    affichtemp = true;
     
   
    
   }
    
  if ( etatbouton1 == 0 && affichtemp == true)
  
  { digitalWrite (ledtemp, LOW);
  
    lcd.setCursor(0, 0);
    lcd.print(" AGRIDOMOTIQUE  ");
    
    lcd.setCursor(0, 1);      
    lcd.print(" Attente ordre  ");
    affichtemp = false;
                               }
    
  //---------------------------------CONNEXION AU SERVEUR-------------------------




  EthernetClient client = server.available();
  if (client)  {

    boolean currentLineIsBlank = true;
    stringInput = "";

    if (client.connected())  {
      while (client.available())  {

        char c = client.read();

        if (stringInput.length() < sizeString)  {
          stringInput.concat(c);

        }

        if (c == '\n' && currentLineIsBlank)  {

          digitalRead(Cloture1);


          client.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

          client.println("<agridomotique>");
        
         
          
          // Pin 30 Cloture1

          client.print("<Pin>");
          
          client.print("<namePin>CLOTURE </namePin>");
          
          client.print("<Etat>");
          if (cloture1Allume == 1) {
            
            client.print ("  ALLUMEE");
          }
          if (cloture1Allume == 0 && clotureEteinteIphone == true) {
            client.print (" ETEINTE avec l'Iphone ");
            }
          if (cloture1Allume == 0 && clotureEteinteBouton == true) {
            client.print (" ETEINTE avec le Bouton ");
            }
            
          client.print("</Etat>");
          
             
            
          client.print("<Temp> Température : </Temp>");
          client.print("<valeur>");
          client.print(t,1);
          client.print("</valeur>");
          
          
            
          client.print("<Humid> Humiditée : </Humid>");
          client.print("<valeurh>");
          client.print(h,1);
          client.print("</valeurh>");
          
          client.print("</Pin>");
          
          
          
          client.println("</agridomotique>");
          
          break;
        }

        if (c == '\n')  {

          Serial.print(stringInput);
          Serial.println();

          if (stringInput.indexOf("GET") != -1)  {



            // si iphone ON
            if (stringInput.indexOf("PIN8=ON") != -1)  { // pin8 utilisé pour ne pas modifier mon app IOS
             
            
            clotureONiphone = true;
             clotureOFFiphone = false;
            }
            
            // si  iphone OFF
            if (stringInput.indexOf("PIN8=OFF") != -1)  {
              
             
             clotureOFFiphone = true;
             clotureONiphone =false;
            }

           if ((stringInput.indexOf("temperature=ON") != -1) && (pushtemp == true))  {
                   sendToPushingBox(DEVID6);
                   pushtemp = false;}
                   
           if ((stringInput.indexOf("temperature=OFF") != -1) && (pushtemp == false))  {
                   sendToPushingBox(DEVID6);
                   pushtemp = true;}     

          }
          currentLineIsBlank = true;
          stringInput = "";
        }
        else if (c != '\r')  {

          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();

  }


//----------------------------------------- COMMMANDE , PUSH ET BUZZER de la Cloture  --------------------------------------------

  if (cloture1Allume == true ) {                       // ON ALLUME LA CLOTURE1
    digitalWrite (Cloture1, HIGH);
    digitalWrite (led, HIGH);
     debutrebour = true;
     tempsdepasse = false;
  }

  if (cloture1Allume == false ) {                  // ON ETEINT LA CLOTURE1
    digitalWrite (Cloture1, LOW);
    digitalWrite (led, LOW);
    
  }

  if ( cloture1Allume == true && pushenvoi == true ) {   // si la cloture1 est allumé on envoi un push allume
    // On envoi un push allumé
    sendToPushingBox(DEVID1);
    
    pushenvoi = false;
  }

  if ( cloture1Allume == false && pushenvoi == false ) {  // si la cloture1 est éteinte en onvoi un push éteint
    // On envoi un push éteint
    sendToPushingBox(DEVID2);
    pushenvoi = true;

  }


 if ( cloture1Allume == false && tempsdepasse == false && debutrebour == true)   // si cloture1 éteinte, on stock le temps au debut 1 fois
     {  
                            
       tempscloturearret = millis();
       debutrebour = false;
 }
 

 
 // si la cloture1 est éteinte depuis plus de 30 mn, on prévient tout le monde en envoyant un push
 
 if ( cloture1Allume == false && tempsdepasse == false && millis() - tempscloturearret >= 1800000)
     { 
         sendToPushingBox(DEVID5);
          tempsdepasse = true;
          debutrebour = true;
     }
 // si la cloture1 est éteinte depuis plus de 30 mn, on prévient tout le monde en actionnant le buzzer et les leds
 
 if (tempsdepasse == true)
     {         digitalWrite (buzzer, HIGH);  // buzzer en route
                delay (100);
               digitalWrite (buzzer, LOW);
               delay (100);
               
               digitalWrite ( led, HIGH);     // led en clignotement 
               delay (100);
               digitalWrite ( led, LOW);
               digitalWrite ( ledtemp, HIGH);
               delay (100);
               digitalWrite ( ledtemp, LOW);
               
                lcd.setCursor(0, 0);      // ecrit la température et l'humiditée sur le lcd
                lcd.print("-----ALARME-----");
                
                lcd.setCursor(0, 1);      
                lcd.print(" OFF + de 30 mn ");
               }
              

}
//---------------------------------Fonction permettant d'envoyer un push PushingBox---------------------

void sendToPushingBox(char devid[]) {

  //demarre connexion ethernet
  ;

  Serial.println("connecting...");
  if (client2.connect(serverName, 80)) {

    Serial.println("connected");

    Serial.println("sendind request");

    client2.print("GET /pushingbox?devid=");
    client2.print(devid);
    client2.print("&temperature=");
    client2.print(t,1);
    
    client2.println(" HTTP/1.1");

    client2.print("Host: ");
    client2.println(serverName);
    client2.println("User-Agent: Arduino");
    client2.println("Connection: close");
    client2.println();

    while (client2.connected ())
      if (client2.available ())
        Serial.write(client2.read());

    client2.stop ();

    Serial.println("succes");


  }


  else {
    Serial.println("connection failed");
  }

  client2.stop();
}
code]