Comment effectuer une requête HTTP en MicroPython avec un Pico W ?
Auteur
Elie TerrienDans 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.