Obtener su proyecto Raspberry Pi en línea ahora es más barato y más fácil gracias al Raspberry Pi Pico W de $6. Solo se necesitan cinco líneas de código para conectar su Raspberry Pi Pico W al mundo, pero compartir su código puede dejarlo abierto a algunas medidas de seguridad. preocupaciones.
Su código MicroPython ahora contiene su contraseña Wi-Fi, claves API y URL personalizadas. Entonces, ¿cómo mitigamos el riesgo mientras mantenemos nuestros datos portátiles?
Crear un módulo MicroPython es la mejor manera de mantener sus secretos fuera del código de su proyecto. Podemos importar el módulo como cualquier otro módulo y hacer referencia a su contenido de la misma manera.
En este instructivo, crearemos un módulo de secretos y lo usaremos, junto con Open Weather, para obtener los detalles del clima actual para la ubicación de nuestra casa. El código del proyecto se puede compartir fácilmente con otros, sin temor a incluir información personal.
Para este proyecto necesitarás
Creación de un archivo de secretos para credenciales
El módulo de secretos es realmente un archivo MicroPython estándar que contiene objetos que hacen referencia a nuestro punto de acceso Wi-Fi, contraseña de Wi-Fi y nuestra clave API Open Weather.
1. Siga esta guía para configurar su Raspberry Pi Pico W. Siga los pasos hasta «Cómo hacer parpadear un LED».
2. Cree un nuevo archivo en blanco.
3. Cree un objeto SSID y asígnele el nombre de su punto de acceso Wi-Fi. El signo igual asignará el valor a la derecha, dentro del objeto.
SSID = “YOUR WI-FI AP NAME”
4. Cree una CONTRASEÑA de objeto y asígnele la contraseña de su punto de acceso Wi-Fi.
PASSWORD = “YOUR WI-FI PASSWORD”
5. Cree un objeto, owm_api y asígnele su clave API Open Weather. Puede obtener una clave de API gratuita al registrarse en tiempo abierto.
6. Guarde el archivo en su Raspberry Pi Pico W como secrets.py.
7. En el caparazón de Python (parte inferior de la ventana de Thonny) importe el archivo de secretos y luego imprima el SSID de su punto de acceso Wi-Fi. Básicamente, acabamos de crear un módulo de Python que contiene todos los detalles que deseamos mantener seguros.
import secrets
print(secrets.SSID)
Uso de secretos en un proyecto
El propósito del archivo de secretos es mantener el código de nuestro proyecto principal libre de cualquier archivo que pueda contener información personal/segura. Al mantener el código del proyecto libre de información confidencial, podemos compartirlo fácilmente con otros. En esta parte del procedimiento, importaremos el módulo de secretos y lo usaremos con Open Weather API para obtener el clima de nuestra ubicación.
1. En Thonny crea un nuevo archivo en blanco.
2. Importe tres módulos de código. Network permite que nuestro Pico W se conecte a Wi-Fi, Secrets es nuestro archivo lleno de información secreta, urequests es un módulo que nos permite realizar solicitudes a dispositivos remotos, en este caso la API de Open Weather. Usamos el mismo módulo para obtener datos sobre los astronautas a bordo de la Estación Espacial Internacional.
import network
import secrets
import urequests
3. Cree un objeto, wlan, y utilícelo para crear una conexión desde nuestro código al chip Wi-Fi en el Pico W, luego encienda el chip Wi-Fi.
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
4. Usando el módulo de secretos, use los objetos SSID y CONTRASEÑA para conectarse a su punto de acceso Wi-Fi.
wlan.connect(secrets.SSID,secrets.PASSWORD)
5. Cree un objeto, clima, para almacenar los datos devueltos por la API de Open Weather. Use secrets.owm_api para insertar su clave API en la URL. Esta URL especialmente creada envía una solicitud a Open Weather para nuestra ubicación q=Blackpool, Reino Unido, que se puede cambiar a su propia ubicación. También podemos especificar las unidades utilizadas &units=metric (que se puede cambiar a imperial).
weather = urequests.get("http://api.openweathermap.org/data/2.5/weather?q=Blackpool,UK&units=metric&appid="+(secrets.owm_api)).json()
6. Almacena la temperatura actual en un objeto, temperatura. Los datos devueltos están en formato JSON, que es casi idéntico al tipo de datos del diccionario de Python. Los diccionarios utilizan un formato de clave y valor para almacenar datos. Las llaves [«main»][‘temp’] nos llevará a la sección principal de datos, y luego el valor de temperatura se guarda en nuestro objeto de temperatura recién creado.
temperature = weather["main"]['temp']
7. Guarde la humedad actual en un objeto correspondiente.
humidity = weather["main"]['humidity']
8. Almacene la condición meteorológica general actual en el objeto meteorológico. Estos datos están enterrados un poco más profundo en el objeto JSON. Es un diccionario, luego una lista, luego un objeto de diccionario. La lista [0]identifica que estamos usando el primer elemento de la lista, ya que Python comienza a contar desde cero.
weather = weather["weather"][0]["main"]
9. Imprimir los datos devueltos usando formato de cadena que colocará los datos correspondientes en la oración.
print("The weather today is with a temperature of degrees Celsius and a humidity of %".format(weather, temperature, humidity))
10 Guarde el código en Raspberry Pi Pico W como weather.py. Haga clic en ejecutar para iniciar el código. El código usará la API Open Weather, descargará el clima más reciente para su ubicación y luego imprimirá una oración que contenga la información en Python Shell.
Listado completo de códigos
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))