Tester connection serveur arduino

Bonjour, j'aimerai pouvoir tester la connection entre mon app et ma carte arduino ( serveur).

mais je ne sais pas trop comment vérifier une connection a un serveur , pouvez vous meclairer

Réponses

  • Tu peux donner plus de détails?

    Quel type de serveur? Est il connecté à  un réseau? etc...

  • Donc pour me connecter à  mon arduino, j'utilise son adresse ip (192.168.0.77:80) pour lui envoyer une action à  réaliser ( si pin2=On


    > allumer le relais 2).

    Cependant, j'aimerai savoir si je suis bien connecté à  cette adresse, car parfois celà  met un certain temps pour actionner le relais.


     


    merci 


  • Bonjour,


     


    D'après ce que tu nous dis, l'Arduino est utilisé ici comme un serveur WEB ( port 80 ).


    As-tu essayé d'utiliser la commande Ping pour vérifier que la carte est bien accessible?


     


    Brut de pomme


  • Oui brut cest exactement ça, ma carte est accessible puisqu'elle fait ce que je lui demande, mais parfois au début elle met un certain temps . Et cest ça que je voudrai tester via mon app iOS . Je veux savoir comment faire une commande ping dans mon app
  • Je m'explique autrement, j'ai une app IOS qui met à  l'état haut des PIN arduino grace à  ce code 



    if (theSwitch.isOn)
    {
    // mettre PIN2 sur ON
    NSString * myURLString = [NSString stringWithFormat:@http:;//%@/PIN3=ON", adresse1.text];
    NSURL *url = [NSURL URLWithString:myURLString];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    [webwiew1 loadRequest:req];
    [image2 setImage:[UIImage imageNamed:@labelpin2ON.png]];



    Ceci fonctionne parfaitement, mais lors d'une première connection au serveur arduino, il arrive que ça ne fonctionne qu'après plusieurs essaies. Jaimerai donc, savoir dès l'ouverture de l'application si je cuis connecté au serveur ou pas.


    Voici mon code arduino



    // zimmermann frédéric
    // Arduino + ethernet shield control by iOS
    // March 2014
    //

    #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, 100, 100}; // Shield IP
    byte gateway[] = {192, 168, 100, 1}; // Gateway
    byte subnet[] = {255, 255, 255, 0}; // Subnet mask
    int port = 80; // Webport
    //
    EthernetServer server(port);

    // Pins
    int Pin2 = 2;
    int Pin3 = 3;
    int Pin4 = 4;
    int Pin5 = 5;
    int Pin6 = 6;
    int Pin7 = 7;
    int Pin8 = 8;
    int Pin9 = 9;

    // Serial speed
    int speedSerial = 9600;

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

    // Setup
    void setup() {

    // Config output pins
    // Digital Pins 10, 11, 12 i 13 are used by ethernet shield
    pinMode(Pin2, OUTPUT);
    pinMode(Pin3, OUTPUT);
    pinMode(Pin4, OUTPUT);
    pinMode(Pin5, OUTPUT);
    pinMode(Pin6, OUTPUT);
    pinMode(Pin7, OUTPUT);
    pinMode(Pin8, OUTPUT);
    pinMode(Pin9, OUTPUT);

    // Output pins LOW
    digitalWrite(Pin2, LOW);
    digitalWrite(Pin3, LOW);
    digitalWrite(Pin4, LOW);
    digitalWrite(Pin5, LOW);
    digitalWrite(Pin6, LOW);
    digitalWrite(Pin7, LOW);
    digitalWrite(Pin8, LOW);
    digitalWrite(Pin9, LOW);

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

    } // Setup end

    // loop Start
    void loop() {

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

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

    client.println("<estadoDomotica>");

    // You can configure all pins (digitals or analog) here, copy and paste the block, and configure the pin
    // // P2
    client.print("<Pin>");
    client.print("<namePin>Pin 2</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin2);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin2));
    client.print("</Estado>");
    client.print("</Pin>");

    // P3
    client.print("<Pin>");
    client.print("<namePin>Pin 3</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin3);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin3));
    client.print("</Estado>");
    client.print("</Pin>");

    // P4
    client.print("<Pin>");
    client.print("<namePin>Pin 4</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin4);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin4));
    client.print("</Estado>");
    client.print("</Pin>");

    // P5
    client.print("<Pin>");
    client.print("<namePin>Pin 5</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin5);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin5));
    client.print("</Estado>");
    client.print("</Pin>");

    // P6
    client.print("<Pin>");
    client.print("<namePin>Pin 6</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin6);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin6));
    client.print("</Estado>");
    client.print("</Pin>");

    // P7
    client.print("<Pin>");
    client.print("<namePin>Pin 7</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin7);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin7));
    client.print("</Estado>");
    client.print("</Pin>");

    // P8
    client.print("<Pin>");
    client.print("<namePin>Pin 8</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin8);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin8));
    client.print("</Estado>");
    client.print("</Pin>");

    // P9
    client.print("<Pin>");
    client.print("<namePin>Pin 9</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin9);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin9));
    client.print("</Estado>");
    client.print("</Pin>");

    // ANALOGS PINS
    // Print analog value in XML
    // A0
    client.print("<Analog>");
    client.print("<Nombre>Analog 0</Nombre>");
    client.print("<Value>");
    client.print(analogRead(0));
    client.print("</Value>");
    client.print("</Analog>");

    // A1
    client.print("<Analog>");
    client.print("<Nombre>Analog 1</Nombre>");
    client.print("<Value>");
    client.print(analogRead(1));
    client.print("</Value>");
    client.print("</Analog>");

    // A2
    client.print("<Analog>");
    client.print("<Nombre>Analog 2</Nombre>");
    client.print("<Value>");
    client.print(analogRead(2));
    client.print("</Value>");
    client.print("</Analog>");

    // A3
    client.print("<Analog>");
    client.print("<Nombre>Analog 3</Nombre>");
    client.print("<Value>");
    client.print(analogRead(3));
    client.print("</Value>");
    client.print("</Analog>");

    // A4
    client.print("<Analog>");
    client.print("<Nombre>Analog 4</Nombre>");
    client.print("<Value>");
    client.print(analogRead(4));
    client.print("</Value>");
    client.print("</Analog>");

    // A5
    client.print("<Analog>");
    client.print("<Nombre>Analog 5</Nombre>");
    client.print("<Value>");
    client.print(analogRead(5));
    client.print("</Value>");
    client.print("</Analog>");

    client.println("</estadoDomotica>");
    break;
    }

    if (c == '\n') {

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

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

    //
    // You can configure all pins (digitals or analog) here, copy and paste the block, and configure the pin
    // // Pin2
    if (stringInput.indexOf("PIN2=ON") != -1) {
    digitalWrite(Pin2, HIGH);

    }
    if (stringInput.indexOf("PIN2=OFF") != -1) {
    digitalWrite(Pin2, LOW);
    } // End Pin 2

    // Pin3
    if (stringInput.indexOf("PIN3=ON") != -1) {
    digitalWrite(Pin3, HIGH);

    }
    if (stringInput.indexOf("PIN3=OFF") != -1) {
    digitalWrite(Pin3, LOW);
    } // End Pin 3

    // Pin4
    if (stringInput.indexOf("PIN4=ON") != -1) {
    digitalWrite(Pin4, HIGH);

    }
    if (stringInput.indexOf("PIN4=OFF") != -1) {
    digitalWrite(Pin4, LOW);
    } // End Pin 4

    // Pin5
    if (stringInput.indexOf("PIN5=ON") != -1) {
    digitalWrite(Pin5, HIGH);

    }
    if (stringInput.indexOf("PIN5=OFF") != -1) {
    digitalWrite(Pin5, LOW);
    } // End Pin 5

    // Pin6
    if (stringInput.indexOf("PIN6=ON") != -1) {
    digitalWrite(Pin6, HIGH);

    }
    if (stringInput.indexOf("PIN6=OFF") != -1) {
    digitalWrite(Pin6, LOW);
    } // End Pin 6

    // Pin7
    if (stringInput.indexOf("PIN7=ON") != -1) {
    digitalWrite(Pin7, HIGH);

    }
    if (stringInput.indexOf("PIN7=OFF") != -1) {
    digitalWrite(Pin7, LOW);
    } // End Pin 7

    // Pin8
    if (stringInput.indexOf("PIN8=ON") != -1) {
    digitalWrite(Pin8, HIGH);

    }
    if (stringInput.indexOf("PIN8=OFF") != -1) {
    digitalWrite(Pin8, LOW);
    } // End Pin 8

    // Pin9
    if (stringInput.indexOf("PIN9=ON") != -1) {
    digitalWrite(Pin9, HIGH);

    }
    if (stringInput.indexOf("PIN9=OFF") != -1) {
    digitalWrite(Pin9, LOW);
    } // End Pin 9

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

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


    Merci d'avance 


  • est-il possible que ta carte soit en veille ?


    Les premiers trames ethernet permettraient de la réveiller et serait donc perdues.


  • plutôt qu'un ping il serait peut-être mieux d'établir une première communication (comme un echo) et d'envoyer le reste des commandes quand la carte à  répondu correctement ? (ce qui la forcerait peut-être de sortir d'un éventuel état de veille, alors qu'un ping n'aiderait peut-être pas)


  • Ok mais alors concrètement comme pourrais je faire ? Je ne veux pas la réponse , mais juste être mis sur la bonne piste de recherche . Est ce qu'avec Nsurlconnection je pourrais y arriver ?
  • Je vois que tu utilises une webview pour faire ta requete. En fait tu pourrais effectivement utiliser NSURLConnection (ou plutot NSURLSession en fonction de la version iOS minimum ciblée) pour faire des requetes invisibles a l'utilisateur.

    Par exemple tu pourrais faire une lecture d'entrée, ou recuperer la page d'accueil du serveur Arduino.

    Tu peux faire une requete asynchrone avec un completion block et afficher un UIActivityController pendant que la requete tourne (Connexion en cours ...)
  • As-tu essayé de faire ton test à  partir de ton ordinateur avec un navigateur Web?


    Cela permettrai de voir comment se comporte le serveur Web de la carte Arduino.


  • Quand je suis en wifi , la réponse est instantanée , par contre en 3G ça ne fonctionne pas tj du premier coup .

    Avec mon Mac, pas de soucis , j'ai testé un ping et c'est bon
  • En tous cas merci pour votre aide
Connectez-vous ou Inscrivez-vous pour répondre.