Mon blog

Requête HTTP sous ESP32

Date: []
Tags: [Bitcoin], [esp32], [microcontrôleur], [arduino], [HTTPClient], [WiFi], [Json]

Cet article a pour objectif de montrer comment faire une requêtes HTTP à partir de la plateforme ESP32 et, bonus, récupérer l'information sous format Json. Un exemple simple consiste à interroger l'API de Kraken pour obtenir le prix du Bitcoin. Cet exemple pourra être étendu à d'autres utilisations

Le cour du Bitcoin est disponible via l'API de Kraken (notamment) à l'adresse suivante: https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR. La doc nous aide à lire ces informations et l'on déduit que la valeur qui nous intéresse, c'est Last trade closed disponible par le chemin result -> XXBTZEUR -> c -> 0.

Cette information est sous le format JSON, on va donc utiliser la bibliothèque AdruinoJson qu'il faudra importer dans Arduino-API via le menu Stetch → Include libraries → Manage Libraries → Recherche par mot clef → Install. Concernant ce format, l'assistant sur le site de la lib est très sympa, ca permet de comprendre la structure JSON et il nous explique même comment récupérer les donner.

Avant cela, il faut aller chercher cette information à travers internet et la rapatrier sur le microcontrôleur. Et donc, on doit se connecter au Wifi (par exemple). Mais, bien entendu, avant tout, on a envie que le microcontrôleur puisse nous envoyer des messages pour voir que tout va bien. Et on veut l'info toutes les 5 sec, ce serait pas drôle.

On se mets en route:

Dans tous les exemples disponibles sur l'interface Arduino API, j'ai pas trouvé d'exemple simple de requête HTTP via le Wifi. J'ai alors mixé plusieurs codes. Voici mon résultat:

Le Wifi

Le Wifi est géré par la lib WiFi. Une session démarre avec Wifi.begin("your SSID", "p4sswOrd");. La fonction WiFi.status() == WL_CONNECTED permet de vérifier la connexion. La ligne while (Wifi.status() != WL_CONNECTED) delay(500); attend que la connexion soit effective. La plateforme s'est connectée en DHCP; la fonction WiFi.localIP() permet de connaître l'IP.

La requête HTTP

Pour la requête HTTP, on a besoin de la lib HTTPClient. Dès lors que la connexion est établie, on crée une instance HTTPClient qu'on fait démarrer avec la méthode begin("URL"). La méthode GET() renvoie le code HTTP qui, si égal à HTTP_CODE_OK, soit 200, annonce que tout va bien. La méthode getString() renvoie la réponse du serveur. Celle-ci est dans la plupart des cas une page Html, ou du texte, ou des données sous format Json. Si le code HTTP n'est pas 200, on a une erreur. Ne pas oublier de fermer l'objet http.

Add a comment

Thank you for writing your comment!