La mise en ligne de votre projet Raspberry Pi est maintenant moins chère et plus facile grâce au Raspberry Pi Pico W à 6 $. Il ne faut que cinq lignes de code pour connecter votre Raspberry Pi Pico W au monde, mais le partage de votre code peut vous laisser ouvert à quelques sécurité préoccupations.
Votre code MicroPython contient maintenant votre mot de passe Wi-Fi, vos clés API et vos URL personnalisées. Alors, comment atténuer le risque tout en gardant nos données portables ?
La création d’un module MicroPython est le meilleur moyen de garder vos secrets hors du code de votre projet. Nous pouvons importer le module comme n’importe quel autre module et référencer son contenu de la même manière.
Dans ce tutoriel, nous allons créer un module de secrets et l’utiliser, avec Open Weather pour obtenir les détails météorologiques actuels pour notre domicile. Le code du projet peut être facilement partagé avec d’autres, sans crainte d’inclure des informations personnelles.
Pour ce projet, vous aurez besoin
Création d’un fichier de secrets pour les informations d’identification
Le module secrets est en réalité un fichier MicroPython standard qui contient des objets faisant référence à notre point d’accès Wi-Fi, à notre mot de passe Wi-Fi et à notre clé API Open Weather.
1. Suivez ce guide pour configurer votre Raspberry Pi Pico W. Suivez les étapes jusqu’à « Comment faire clignoter une LED ».
2. Créez un nouveau fichier vierge.
3. Créez un objet SSID et attribuez-lui le nom de votre point d’accès Wi-Fi. Le signe égal assignera la valeur à droite, dans l’objet.
SSID = “YOUR WI-FI AP NAME”
4. Créez un objet PASSWORD et attribuez-lui le mot de passe de votre point d’accès Wi-Fi.
PASSWORD = “YOUR WI-FI PASSWORD”
5. Créez un objet, owm_api et attribuez-lui votre clé API Open Weather. Vous pouvez obtenir une clé API gratuite en s’inscrire à Open Weather.
6. Enregistrez le fichier sur votre Raspberry Pi Pico W sous secrets.py.
sept. Dans le shell Python (en bas de la fenêtre de Thonny) importez le fichier secrets puis imprimez le SSID de votre point d’accès Wi-Fi. Essentiellement, nous venons de créer un module Python qui contient tous les détails que nous souhaitons garder en sécurité.
import secrets
print(secrets.SSID)
Utiliser des secrets dans un projet
Le but du fichier secrets est de garder notre code de projet principal exempt de tout fichier pouvant contenir des informations personnelles/sécurisées. En gardant le code du projet exempt d’informations sensibles, nous pouvons facilement le partager avec d’autres. Dans cette partie de la procédure, nous allons importer le module secrets et l’utiliser avec l’API Open Weather pour obtenir la météo de notre emplacement.
1. Dans Thonny, créez un nouveau fichier vierge.
2. Importez trois modules de code. Le réseau permet à notre Pico W de se connecter au Wi-Fi, Secrets est notre fichier plein d’informations secrètes, urequests est un module qui nous permet de faire des requêtes à des appareils distants, dans ce cas l’API d’Open Weather. Nous avons utilisé le même module pour obtenir données sur les astronautes à bord de la Station Spatiale Internationale.
import network
import secrets
import urequests
3. Créez un objet, wlan, et utilisez-le pour créer une connexion entre notre code et la puce Wi-Fi du Pico W, puis activez la puce Wi-Fi.
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
4. A l’aide du module secrets, utilisez les objets SSID et PASSWORD pour vous connecter à votre point d’accès Wi-Fi.
wlan.connect(secrets.SSID,secrets.PASSWORD)
5. Créez un objet, weather, pour stocker les données renvoyées par l’API Open Weather. Utilisez secrets.owm_api pour insérer votre clé API dans l’URL. Cette URL spécialement créée envoie une demande à Open Weather pour notre emplacement q=Blackpool, Royaume-Uni, qui peut être modifié pour votre propre emplacement. Nous pouvons également spécifier les unités utilisées &units=metric (qui peut être changé en impérial).
weather = urequests.get("http://api.openweathermap.org/data/2.5/weather?q=Blackpool,UK&units=metric&appid="+(secrets.owm_api)).json()
6. Enregistre la température actuelle dans un objet, la température. Les données renvoyées sont au format JSON, qui est presque identique au type de données du dictionnaire Python. Les dictionnaires utilisent un format clé-valeur pour stocker les données. Les clés [« main »][‘temp’] nous amènera à la section principale des données, puis la valeur de température est enregistrée dans notre objet de température nouvellement créé.
temperature = weather["main"]['temp']
sept. Enregistrez l’humidité actuelle dans un objet correspondant.
humidity = weather["main"]['humidity']
8. Stocke la condition météo globale actuelle dans l’objet météo. Ces données sont enfouies un peu plus profondément dans l’objet JSON. C’est un dictionnaire, puis une liste, puis un objet dictionnaire. La liste [0]identifie que nous utilisons le premier élément de la liste, car Python commence à compter à partir de zéro.
weather = weather["weather"][0]["main"]
9. Imprimer les données renvoyées en utilisant un formatage de chaîne qui déposera les données correspondantes dans la phrase.
print("The weather today is with a temperature of degrees Celsius and a humidity of %".format(weather, temperature, humidity))
dix. Enregistrez le code sur le Raspberry Pi Pico W sous weather.py. Cliquez sur Exécuter pour lancer le code. Le code utilisera l’API Open Weather, téléchargera la dernière météo pour votre emplacement, puis imprimera une phrase contenant les informations sur Python Shell.
Liste complète des codes
import network
import secrets
import urequests
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(secrets.SSID,secrets.PASSWORD)
weather = urequests.get("http://api.openweathermap.org/data/2.5/weather?q=Blackpool,UK&units=metric&appid="+(secrets.owm_api)).json()
temperature = weather["main"]['temp']
humidity = weather["main"]['humidity']
weather = weather["weather"][0]["main"]
print("The weather today is with a temperature of degrees Celsius and a humidity of %".format(weather, temperature, humidity))