Arduino - Requête HTTP
Arduino peut jouer le rôle de client web pour effectuer des requêtes HTTP sur un serveur web. Le serveur web peut être un site web, une API web ou REST, un service web...
Dans ce tutoriel, nous allons apprendre :
- Connaissances de base du client web et du serveur web
- Comment faire une requête HTTP (GET et POST)
- Comment envoyer des données à un serveur web (un site web, API WEB ou API REST)
- Code Arduino :
- Effectuer une requête HTTP GET/POST en utilisant Arduino Uno/Mega + Ethernet Shield 2
- Effectuer une requête HTTP GET et envoyer des données en utilisant Arduino Uno/Mega + Ethernet Shield 2
- Effectuer une requête HTTP POST et envoyer des données en utilisant Arduino Uno/Mega + Ethernet Shield 2
- Arduino Uno R4 WiFi
- Arduino Uno/Mega avec Ethernet Shield 2
- En-tête de requête HTTP
- (Facultatif) Corps de la requête HTTP
- Adresse Web (URL)
- Méthode de requête (POST ou GET)
- Port HTTP utilisé par le serveur web (la plupart des serveurs web utilisent le port 80 pour HTTP)
- (Facultatif) Données à envoyer au serveur web (chaîne de requête). Dans ce tutoriel, nous supposons que nous envoyons la température et l'humidité à un serveur web avec le format ?temperature={valeur-t}&humidity={valeur-h}.
- Déclarer la méthode de requête, le port HTTP, nom d'hôte, chemin d'accès, chaîne de requête
- Déclarez un objet client web
- Se connecter au serveur web
- Si connecté au serveur, envoyer une requête HTTP.
- Lisez les données de réponse du serveur Web.
- Requête HTTP GET
- Ne peut envoyer des données qu'au format de chaîne de requête.
- Les données sont attachées au chemin d'accès.
- Requête HTTP POST
- Peut envoyer des données NON SEULEMENT au format de chaîne de requête MAIS AUSSI dans tout autre format tel que Json, XML, image ...
- Les données se trouvent dans le corps de la requête HTTP.
- Construire une chaîne de requête
- Modifiez le code pour envoyer des données dans la requête HTTP
- HTTP GET : ajoutez la chaîne de requête au chemin d'accès
- POST HTTP : envoyer chaîne de requête en tant que corps HTTP
- Lisez les données de réponse du serveur web.
- Pour Ethernet Shield 2, vous devez modifier le code Arduino. Voir Arduino Ethernet Shield 2 avec adresse IP statique
Le code pour les autres WiFi ou Shield/Board Ethernet est similaire. La différence réside uniquement dans la bibliothèque.
Le tutoriel fournit le code Arduino pour deux cas :
Préparation du matériel
1 | × | Arduino UNO R4 WiFi | |
1 | × | USB Cable Type-C | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | |
1 | × | (Optional) Transparent Acrylic Enclosure For Arduino Uno |
Alternatively if using Ethernet:
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
Connaissances de base sur le client Web et le serveur Web
Lorsque vous accédez à un site Web depuis votre PC ou smartphone, vous saisissez simplement l'adresse Web (URL) dans un navigateur web, attendez une seconde, puis la page Web s'affiche sur votre PC/smartphone. Vous ne savez pas ce que votre PC/smartphone fait derrière l'écran. Alors, que se passe-t-il derrière l'écran :
i. Votre PC/smartphone (en tant que client web) envoie une requête HTTP à un serveur web
ii. Le serveur web renvoie une réponse HTTP à votre PC/smartphone
iii. Votre PC/smartphone reçoit la réponse HTTP et affiche la réponse HTTP sur votre écran
Dans ce tutoriel, nous allons transformer l'Arduino en un client web pour faire quelque chose de similaire à votre PC/smartphone.
Adresse web (URL)
Une URL comprend deux parties : nom d'hôte et chemin d'accès. Le nom d'hôte peut être remplacé par l'adresse IP du serveur web. Par exemple : example.com/test
Dans une requête HTTP GET, l'URL peut inclure la chaîne de requête. Par exemple : example.com/test?temperature=20&humidity=70.
Chaîne de requête
La chaîne de requête est un ensemble de paires nom-valeur, qui sont incluses dans la requête HTTP pour envoyer des données du client web au serveur web.
Le nom et la valeur sont séparés par le caractère "=". Les paires nom-valeur sont séparées par le caractère "&".
Par exemple : temperature=26&humidity=70&state=2
Requête HTTP
La requête HTTP est composée de :
L'en-tête de requête HTTP et le corps de requête HTTP sont séparés par deux paires de caractères de retour chariot (ASCII 13, ou '\r') et de saut de ligne (ASCII 10, ou '\n').
Il existe de nombreuses méthodes de requête. Parmi elles, deux méthodes populaires : GET et POST.
Habituellement, nous utilisons la méthode GET lorsque nous voulons obtenir des données du serveur web, et la méthode POST pour envoyer des données au serveur web. Cependant, la méthode GET peut être utilisée pour obtenir et envoyer des données de/vers le serveur web.
Prérequis
Nous devons déterminer les valeurs suivantes :
L'adresse web (URL) est divisée en nom d'hôte et chemin d'accès
Comment effectuer une requête HTTP
Cette partie présente uniquement le code lié à HTTP. Le code complet pour chaque bouclier sera présenté dans la dernière partie.
Arduino Ethernet Shield 2 | EthernetClient client; |
Arduino Uno WiFi | WiFiClient client; |
Comment envoyer des données à un serveur Web
Nous pouvons inclure des données dans la requête HTTP. Le format des données dépend de la méthode de requête HTTP :
Nous devons juste modifier le code pour envoyer la requête HTTP :
Code Arduino complet pour effectuer une requête HTTP
Voici le code Arduino complet pour effectuer une requête HTTP GET/POST.
Requête HTTP GET/POST avec Arduino Uno R4 Wifi
Requête HTTP GET/POST avec Arduino Ethernet Shield 2
Code Arduino complet pour effectuer une requête HTTP GET avec des données
Requête HTTP GET avec données en utilisant l'Arduino Uno R4 Wifi
Requête HTTP GET avec données en utilisant Arduino Ethernet Shield 2
Code Arduino complet pour effectuer une requête HTTP POST avec des données
Requête HTTP POST avec des données utilisant Arduino Uno R4 Wifi
Requête POST HTTP Arduino avec des données en utilisant Arduino Ethernet Shield 2
※ NOTE THAT:
Ce tutoriel utilise l'adresse IP dynamique (via DHCP). Si vous souhaitez utiliser l'adresse IP statique :
WARNING
Veuillez noter que ce tutoriel est incomplet. Nous publierons sur notre Page Facebook lorsque le tutoriel sera complet. Aimez-la pour rester informé.