Article original : How to use Arduino to check your web server’s response status
Par Harshita Arora
L'année dernière, j'ai créé Crypto Price Tracker (une application qui a été acquise par Redwood City Ventures cette année). Un membre de l'équipe backend utilisait un montage Arduino pour vérifier en continu les statuts de réponse du serveur web afin de recevoir des mises à jour en temps réel. J'ai trouvé ce montage assez utile et intéressant.
J'ai fait des recherches à ce sujet et j'ai recréé le montage pour moi-même. Dans cet article, je vais vous montrer comment vous pouvez le construire vous-même.
Ce dont vous avez besoin :
- Arduino Uno
- Bouclier Ethernet pour Arduino (pour connecter l'Arduino à Internet)
- Câble Ethernet
- Câble USB 2.0 de type A/B (câble d'alimentation pour Arduino)
- Câbles de pontage mâle-mâle (x2)
- Plaque d'essai
- LED (x1, n'importe quelle couleur)
- Résistance (x1, >100 ohms)
Installation
- Montez/Insérez le bouclier Ethernet sur l'Arduino.
- Insérez l'extrémité positive (plus longue) de la LED dans l'emplacement 6a de la plaque d'essai et l'extrémité négative (plus courte) dans l'emplacement 5a.
- Insérez une extrémité de la résistance dans l'emplacement 1b de la plaque d'essai et l'autre dans l'emplacement 5b.
- Insérez une extrémité du premier câble de pontage dans l'emplacement 1e de la plaque d'essai. Insérez l'autre extrémité dans l'emplacement GND du bouclier Ethernet.
- Insérez une extrémité du deuxième câble de pontage dans l'emplacement 6e de la plaque d'essai. Insérez l'autre extrémité dans l'emplacement de broche 2 du bouclier Ethernet.
- Connectez le câble Ethernet de votre routeur à votre bouclier Ethernet.
Voici à quoi ressemble mon montage :

Ouvrez une interface de ligne de commande sur votre machine et vérifiez et notez votre passerelle par défaut. Cela peut être fait en utilisant la commande
ipconfigsur Windows ou la commandenetstat -nr | grep defaultsur Linux/Mac.Téléchargez et installez l'IDE Arduino si ce n'est pas déjà fait.
Ouvrez l'IDE et allez dans Fichier -> Exemples -> Ethernet -> WebClientRepeating. Vous devriez voir le code suivant :
Modifiez la ligne 37 pour qu'elle soit une adresse IP dans la plage (1-254) de votre IP de passerelle par défaut. Par exemple, si ma passerelle par défaut est 10.0.0.1, alors je peux utiliser une adresse IP de 10.0.0.2 à 10.0.0.254. Il est cependant important de s'assurer que l'IP que vous utilisez n'entre pas en conflit avec d'autres adresses IP sur votre réseau.
Pour cet exemple, j'ai modifié la ligne de code pour qu'elle soit :
**IPAddress ip(10, 0, 0, 2);**
- Changez le DNS dans la ligne 40 pour qu'il soit 8.8.8.8 (c'est le DNS public de Google et c'est juste quelque chose que je préfère, vous pouvez utiliser un DNS que vous préférez).
Pour cet exemple, j'ai modifié la ligne de code pour qu'elle soit :
**IPAddress myDns(8, 8, 8, 8);**
- Changez l'URL dans la ligne 45 pour qu'elle corresponde à l'URL de votre serveur web. Si vous souhaitez utiliser une adresse IP à la place, alors commentez la ligne 45 et décommentez la ligne 46. Puisque j'utilise un serveur web que j'héberge localement, pour cet exemple, j'utiliserai une adresse IP.
Pour cet exemple, j'ai modifié la ligne de code pour qu'elle soit :
//char server[] = "[www.arduino.cc](http://www.arduino.cc)";IPAddress server(127,0,0,1);
Notez que le port ou le chemin ici n'est pas encore important. Seule l'adresse IP est nécessaire. Si vous souhaitez changer le port utilisé pour la requête GET, vous pouvez le modifier à la ligne 94.
Pour cet exemple, j'ai hébergé mon serveur web local sur le port 3000. Ainsi, je vais modifier le code à la ligne 94 pour qu'il ressemble à ceci :
if (client.connect(server, 3000)) {
- Modifiez la requête GET qui est pré-écrite aux lignes 97 - 100 pour suivre ce modèle :
client.println("GET /path_to_url HTTP/1.1");client.println("Host: 127.0.0.1");client.println("Connection: close");client.println();
- Nous pouvons maintenant commencer à programmer le comportement de la LED en fonction du statut et de la réponse du serveur web. Pour ce faire, nous devons d'abord déclarer la broche que nous utilisons pour la LED sur notre bouclier Ethernet.
Ajoutez la ligne de code suivante après les deux premières déclarations include du programme :
int LED = 2;
- Ajoutez les lignes de code suivantes au début de la fonction setup().
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW); // le programme commence avec la LED éteinte
- Ajoutez la ligne de code suivante après la ligne de requête GET que nous avons précédemment modifiée :
digitalWrite(LED, LOW);
- Enfin, ajoutez cette ligne de code au début de l'instruction else de la même condition :
digitalWrite(LED, HIGH);
Et voilà, vous avez terminé !
Téléchargez le programme sur votre Arduino. Ouvrez le moniteur série depuis la partie supérieure droite de l'IDE et observez la réponse. Si votre serveur ne répond pas, la LED s'allume, sinon, la LED reste éteinte :)
Vous pouvez consulter mon code final ici.
Vérification de la réponse
Si vous souhaitez également valider la réponse que vous recevez de votre serveur web, vous pouvez les ajouter à l'intérieur de la condition suivante du programme.
if (client.available()) {char c = client.read();Serial.write(c);}
La variable c est l'endroit où la réponse est stockée. Vous pourriez la vérifier comme ceci :
if (client.available()) {
char c = client.read();if(c == "arduino est génial"){
digitalWrite(LED, LOW); // réponse correcte}else{digitalWrite(LED, HIGH); // mauvaise réponse}Serial.write(c);}
Notez que, si vous essayez de faire cela, il est préférable de supprimer l'instruction digitalWrite après la requête GET. Selon votre réponse, vous devrez peut-être analyser des valeurs JSON. Il existe plusieurs façons de faire cela et de nombreux tutoriels/articles à ce sujet ! Assurez-vous de les consulter !
Amusez-vous bien ! N'hésitez pas à m'envoyer un email à harshita (at) harshitaapps.com pour toute question, commentaire ou idée !
Assurez-vous de consulter l'application Crypto Price Tracker si vous êtes intéressé/investi dans les cryptomonnaies ! :)