Comment effectuer une requête HTTP en MicroPython avec un Pico W ?

MicroPython
Dec. 24, 2023
photo_elie
Auteur
Elie Terrien
Utiliez les requêtes HTTP pour transmettre des données avec votre Pico W

Dans cet article, nous allons voir comment effectuer une requête HTTP en MicroPython avec un Pico W. Nous allons utiliser le module urequests qui permet d'effectuer des requêtes HTTP en MicroPython.

Prérequis avant de commencer à utiliser le Pico W

Pour pouvoir utiliser le Pico W, vous devez avoir installé le firmware MicroPython sur votre Pico W.

Vous pouvez suivre le tutoriel suivant pour installer le firmware MicroPython sur votre Pico W : Installer MicroPython sur un Pico W.

Pour transférer des fichiers sur le Pico W, vous pouvez utiliser le logiciel Thonny ou bien PyCharm avec le plugin MicroPython installé.

Connecter votre Raspberry Pi Pico W à internet via le Wi-Fi

Pour pouvoir effectuer une requête HTTP, vous devez connecter votre Pico W à internet via le Wi-Fi. Nous allons utiliser le module network de la bibliothèque standard MicroPython pour connecter le Pico W à internet.

import network
from time import sleep

ssid = SSID
password = PASSWORD

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)

sta_if.connect(ssid, password)
while not sta_if.isconnected():
    sleep(1)
print('Connection successful')
print(sta_if.ifconfig())

Dans ce code, nous commençons par importer le module network de la bibliothèque standard MicroPython. Ensuite, nous définissons le nom du réseau Wi-Fi et le mot de passe dans les variables ssid et password. Enfin, nous créons une instance de la classe WLAN et nous nous connectons au réseau Wi-Fi.

La boucle while permet d'attendre que la connexion au réseau Wi-Fi soit établie. Une fois la connexion établie, nous affichons l'adresse IP du Pico W.

Cette boucle est importante, car sans elle, le code suivant sera exécuté avant que la connexion au réseau Wi-Fi soit établie.

Pour en savoir plus sur le module network, vous pouvez consulter la documentation officielle : network — network configuration.

Installation du module urequests sur le Pico W

# Vérifier si le module urequests est déjà présent
try:
    import urequests
except ImportError:
    # Si le module n'est pas présent, installer micropython-urequests via upip
    import upip
    upip.install('micropython-urequests')

    # Importer à nouveau le module urequests après l'installation
    import urequests

Dans ce code, nous utilisons une structure try-except pour vérifier si le module urequests est déjà présent. Si l'importation génère une erreur (ImportError), cela signifie que le module n'est pas installé. Dans ce cas, nous utilisons le module upip pour installer micropython-urequests. Ensuite, nous importons à nouveau le module urequests pour pouvoir l'utiliser dans le reste du code.

Réaliser une Requête HTTP en MicroPython avec un Pico W

Voici un exemple de code démontrant comment effectuer une requête HTTP en MicroPython avec un Pico W. L'objectif est d'envoyer une valeur à une série temporelle en utilisant une requête HTTP POST.

La fonction post du module urequests est employée pour effectuer la requête HTTP. Elle nécessite l'URL de la requête, les données à transmettre, ainsi que les en-têtes de la requête.

Les données à envoyer doivent être au format JSON, pour ce faire, le module ujson de la bibliothèque standard MicroPython est utilisé. Il permet de transformer un dictionnaire Python en format JSON. Les en-têtes de la requête précisent que les données sont au format JSON.

import urequests
import ujson

# Remplacez "token_authentification" par le token de votre device
data = {"value": 1.0, "token": "token_authentification"}
url = "https://rutilusdata.fr/api/timeseries/"
headers = {'content-type': 'application/json'}

# Effectuer la requête HTTP POST
response = urequests.post(url, data=ujson.dumps(data), headers=headers)

# Obtenir la réponse au format JSON
json_response = response.json()

# Afficher la réponse
print(json_response)

Pour interpréter la réponse de la requête, nous faisons appel à la fonction json du module urequests. Cette fonction convertit la réponse de la requête en un dictionnaire MicroPython.

L'intégralité du code source est accessible sur GitHub.

Return to blog

Recevez notre newsletter