probleme requête pushingbox

Bonjour à tous, j’avance doucement avec mon projet, mais je rencontre un probleme concernant ma requête au serveur pushingbox.

J’obtiens bien dans ma console le message me disant que je suis connecté :

Serial.println(“connected”);
Serial.println(“sendind request”)
Serial.println(“succes”);

par contre, il ne se passe rien, je ne recois pas de notifications

que se passe il ? ou est mon erreur ?

Merci d’avance pour vos conseils

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

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

// 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, 93};                         // Shield IP
byte gateway[] = {192, 168, 0, 1};                      // Gateway
byte subnet[] = {255, 255, 255, 0};                       // Subnet mask
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 val= 0;
int precedetat= 0;
long previousMillis = 0;
long interval = 250;

boolean pushenvoi = true;
boolean cloture1Allume = true;
boolean clotureOFFiphone;

boolean lastConnected = false; 

char DEVID1[] = "v1F51D72F4A163BD";  //sénario cloture 1 allumé
char DEVID2[] = "v7F928A69AAD2196";  //sénario cloture 1 éteinte
char serverName[] = "api.pushingbox.com";


// Serial speed
int speedSerial = 9600;

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

// Setup
void setup()  {
  
  
   lcd.begin(16,2);
  
  // Digital Pins 10, 11, 12 i 13 utilisé par le shield ethernet
  pinMode(Cloture1, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(bouton, INPUT);
  


  
  // Start ethernet shield webserver
  Serial.begin(speedSerial);
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  
  //demarre connexion ethernet
  
}  


void loop()  { 
  
  
   
   val = digitalRead (bouton);
   
   Serial.print("CLOTURE");
   Serial.print(" ");
   Serial.println(cloture1Allume);
   delay(500);
   Serial.print("bouton");
   Serial.print(" ");
   Serial.println(etatbouton);
   
  //------------------------------ GESTION DE L'APPUI SUR LE BOUTON --------------------------------

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


if(etatbouton == 0 && cloture1Allume == true) { // si bouton n'a pas encore été appuyé et cloture allumée
  
      lcd.setCursor(0, 1);
              lcd.print("Clot1. ON.Bouton ");} 
  
  
  
if (etatbouton == 1 && cloture1Allume == true) { // si bouton appuyé et cloture allumée
  cloture1Allume = false; 
      lcd.setCursor(0, 1);
              lcd.print("Clot1.OFF.Bouton ");}                      // alors on éteint
  
 if (etatbouton == 0 && cloture1Allume == false) {   //  si  bouton pas appuyé et cloture éteinte 
   cloture1Allume = true; 
 lcd.setCursor(0, 1);
              lcd.print("Clot1. ON.Bouton ");      // alors on allume

 }

  if (etatbouton == 0 && cloture1Allume == true && clotureOFFiphone == true){   // si bouton pas appuyé, cloture allumé et iphone Off
    cloture1Allume = false;
     lcd.setCursor(0, 1);
              lcd.print("Clot1.OFF.Iphone ");}                 // alors on éteint

  //---------------------------------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>Cloture1</namePin>");
            client.print("<digitalPin>");
            // Digital pin to control
             client.print(Cloture1);
            client.print("</digitalPin>");
              client.print("<Estado>");
             if (cloture1Allume == 1) { client.print ("  ALLUMEE");}
          if (cloture1Allume == 0) { client.print (" ETEINTE");}
             client.print("</Estado>");
          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("Cloture1=ON") != -1){
                cloture1Allume = true;
                clotureOFFiphone = false;
               lcd.setCursor(0, 1);
              lcd.print("Clot1. ON.Iphone ");
             
             
              
              
            }
            // si off iphone 
            if ((stringInput.indexOf("Cloture1=OFF") != -1)&&(cloture1Allume==true)) { 
              cloture1Allume = false;
              clotureOFFiphone= true;
             lcd.setCursor(0, 1);
              lcd.print("Clot1.OFF.Iphone ");
              
              
                            
            }  
            
            
            
          }
          currentLineIsBlank = true;
          stringInput = "";
        } 
        else if (c != '\r')  {
          
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  
   }
   
 
      
   
if (cloture1Allume == true ) {                       // ON ALLUME LA CLOTURE
       digitalWrite (Cloture1, HIGH);
       digitalWrite (led, HIGH); 
       
   }
       
    if (cloture1Allume == false ) {                  // ON ETEINT LA CLOTURE
      digitalWrite (Cloture1, LOW);
       digitalWrite (led, LOW); 
        }
       
    if ( cloture1Allume == true && pushenvoi == true ) {   // si la cloture est allumé on envoi un push
         // On envoi un push allumé
         sendToPushingBox(DEVID1);
         pushenvoi = false;
    }
    
    if ( cloture1Allume == false && pushenvoi == false ) {  // si la cloture est éteinte en onvoi un push
         // On envoi un push éteint
         sendToPushingBox(DEVID2);
         pushenvoi = true;
    }
    
}
     //Function for sending the request to PushingBox
void sendToPushingBox(char devid[]){
  
 //demarre connexion ethernet
 

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

    Serial.println("sendind request");
    client2.print("GET /pushingbox?devid=");
    client2.print(devid);
    client2.println(" HTTP/1.1");
    client2.print("Host: ");
    client2.println(serverName);
    client2.println("User-Agent: Arduino");
    client2.println();
    Serial.println("succes");
  } 
  else {
    Serial.println("connection failed");}
    client2.stop();
  }
  
 
[code]

Et même en utilisant la url de la requête, dans safari, le serveur me révoie l'erreur 404

Personne pour un petit conseil

Salut
Je n'ai pas de shield ethernet, donc pas d'expérience dessus.
Mais je remarque que tu n'as pas configuré de serveur DNS.
J'imagine que l'arduino ne peut déjà pas résoudre l'adresse api.pushingbox.com.

Et l'erreur 404 dans safari est le second problème....
Sauf si pushingbox refuse les connexions de safari.
Mais dans ce cas, tu n'aurais pas une erreur 404....

Salut, content de te revoir ,

Si d'après l'API sur le site pushingbox, larduino peut , sans problèmes se connecter à cette adresse sans passer par le dns . De plus, jai trouvé sur l'assistance pushingbox que parfois, le serveur bloque un client, et qu'il fallait demander un debloquage, ce que j'ai fait .

Tahitibob, c’est toi qui vient de tester mon url avec mon device Id car je viens de recevoir 2 notifs de prowl ?

Depuis Firefox, j'arrive bien à accéder aux adresses suivantes :
http://api.pushingbox.com/pushingbox?devid=v1F51___________D
http://api.pushingbox.com/pushingbox?devid=v7F92___________6

J'ai bien un code de retour 200 et pas 404 comme toi.
Mais pas de données dans la réponse.
Je ne connais pas pushingbox, je ne sais pas s'il doit y avoir des données dans la réponse.....

Tu devrais peut-être éviter de donner tes devid, je pense que c'est confidentiel car n'importe qui peut accèder à tes données, voir peut-être les modifier.....

Oui, c'est moi ! :smiley:
Donc tu as juste un problème de serveur DNS.

Merci, mais à part lancer des requêtes vers pushingbox et que je reçoive des push, personne ne peut modifier les données, le site est protégé par des mots de passe.

J'avais tester en modifiant l'adresse et en mettant le DNS,mais ça ne change rien .Je pense que mon adresse est bloqué !

Si d'après l'API sur le site pushingbox, larduino peut , sans problèmes se connecter à cette adresse sans passer par le dns .

Tu as dû mal comprendre.....

cache tes devid dans tes posts du forum, sinon tu risques de te faire pourrir d'alertes

Si tu utilises cette librairie http://www.arduino.cc/en/Reference/EthernetBegin , je pense que tu as loupé un argument dans :
Ethernet.begin(mac, ip, gateway, subnet);
(les balises code ont disparu !!)

Begin avec 4 arguments, ça correspond à ça :
Ethernet.begin(mac, ip, dns, gateway);

donc tu as mis la gateway dans le dns.....

J'utiliserai plutôt cette syntaxe :
Ethernet.begin(mac, ip, dns, gateway, subnet);

Merci, je teste ça demain matin.

En effet les balises code on disparues, mais tu peux le faire manuellement en mettant ton code entre

la balise code est toujours là, sauf quelle a bougée et changée d’aspect.
la 1ere </>

Bonjour, alors je viens de tester et ca ne fonctionne pas.
Par contre maintenant, mon url fonctionne dans safari.
Et quand je veux rentrer un dns dans mon arduino, je reçois une erreur du compilateur:

error: 'byte dns ' redeclared as different kind of symbol

Cest donc bien un problème dans mon code, mon arduino ne parvient pas à envoyer la requête

J’imagine que le problème vient du fait que je suis en ip fixe, et je ne sais pas trop comment regler ça .

merci pour votre aide

remets ton code stp...

Ok, ce soir, mais c'est le même de plus haut

J'ai l'impression que dns est déjà déclaré qq part.
donc :

byte dnsserver[] = {8, 8, 8, 8};         /*dns de google, je crois... tu mettre celui de ton fournisseur internet*/

puis

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