Cómo configurar una estación meteorológica Raspberry Pi usando el Sense HAT

Aquí en The Pi, le mostramos cómo hacer un montón de proyectos de software geniales. Le mostramos cómo configurar un servidor Raspberry Pi Plex, cómo ver Netflix en Raspberry Pi y mucho más. Pero, hasta ahora, no hemos hecho mucho con el hardware adicional. Cambiemos eso. Hoy, vamos a hacer algo más orientado al hardware: le mostraremos cómo configurar una estación meteorológica Raspberry Pi a la que se pueda acceder a través de Internet.

Para esto, necesitamos el Sense HAT, una placa complementaria de Raspberry Pi que se hizo especialmente para la misión Astro Pi. La misión Astro Pi envió dos Raspberry Pis (cada uno equipado con un Sense HAT y algunas otras mejoras) a la Estación Espacial Internacional, donde se unieron al astronauta británico Tim Peake y ayudaron a registrar información sobre las condiciones ambientales en la nave espacial.

No lanzaremos nuestra Raspberry Pis al espacio para este proyecto (lamentablemente), pero podemos aprovechar las capacidades de Sense HAT para hacer cosas interesantes aquí en la Tierra. Para registrar toda esa información ambiental, el Sense HAT fue diseñado con una serie de sensores que pueden detectar cosas como la temperatura.

Probablemente tengas un termómetro en casa, por lo que no necesitas un Sense HAT para saber la temperatura cuando estás allí. Pero con Raspberry Pi y Sense HAT trabajando juntos, podemos poner esta información en línea, dándole a su hogar una nueva función inteligente.

Cómo configurar una estación meteorológica Raspberry Pi usando el Sense HAT

Ya hablamos del Sense HAT, y probablemente descubrió que necesitará una Raspberry Pi (y los periféricos típicos). Todo lo que necesitamos además de estas cosas es un servidor web simple, para que se pueda acceder a nuestra estación meteorológica Raspberry Pi a través de Internet. Vamos a utilizar Flask, un microframework de Python que se puede utilizar para construir servidores web y crear aplicaciones web. Empecemos.

Paso 1: instala Raspbian y busca actualizaciones

Como muchos proyectos, este comienza con Raspbian. Aprenda a instalarlo aquí. Como siempre, lo primero que debemos hacer es asegurarnos de que nuestra Raspberry Pi esté actualizada:

sudo apt-get update
 sudo apt-get upgrade
 

Paso 2: instale los paquetes necesarios

En realidad, los paquetes que necesitamos deberían instalarse de forma predeterminada, pero no está de más ejecutar estos comandos y asegurarse.

sudo apt-get install python3-flask
 sudo apt-get install sense-hat
 

Probablemente recibirá un mensaje como este después del primer comando:

python3-flask is already the newest version.
 

Y, de manera similar, después del segundo:

sense-hat is already the newest version.
 

Si es así, genial, significa que estamos listos para comenzar.

Paso 3: cree una aplicación web y un servidor web

En este paso, estamos creando una aplicación web con tecnología Python y un servidor web con tecnología Python usando Flask. Esto puede parecer un poco arduo, pero en realidad es muy fácil.

Primero, creemos un nuevo archivo Python y agreguemos algunas líneas en él. Este comando crea el archivo:

nano weather.py
 

Estarás en tu nuevo archivo ahora. Pero todavía no hay nada, por supuesto. Rellénelo con el siguiente texto:

from flask import Flask, render_template
 from sense_hat import SenseHat
 
 app = Flask(__name__)
 
 @app.route("https://revhardware.com/")
 
 def index():
     sense = SenseHat()
 
     celcius = round(sense.get_temperature(), 1)
     fahrenheit = round(1.8 * celcius + 32, 1)
 
     return render_template('weather.html', celcius=celcius, fahrenheit=fahrenheit)
 
 if __name__ == '__main__':
     app.run(debug=True, host="0.0.0.0")
 

Presione Ctrl + X para salir del archivo, presione Y para aceptar guardarlo y presione Enter para mantener el mismo nombre de archivo que acaba de darle.

Ahora, necesitamos crear una plantilla HTML simple para el archivo Python que creamos. Creemos una carpeta y luego un nuevo archivo .html.

mkdir templates
 nano templates/weather.html
 

Aquí está el contenido de la plantilla que utilicé:

<!doctype html>
 
 <html>
     <head>
         <title>Raspberry Pi Weather Station</title>
     </head>
 
    <body>
         <h1>Raspberry Pi Weather Station</h1>
 
         <h2>Temperature</h2>
         <p><strong>Celcius:</strong> {{ celcius }}</p>
         <p><strong>Fahrenheit:</strong> {{ fahrenheit }}</p>
     </body>
 </html>
 

Puedes modificar el tuyo para darle un aspecto diferente, por supuesto.

Ahora, podemos iniciar nuestro servidor web y nuestra aplicación escribiendo:

python3 weather.py
 

Ahora que está en funcionamiento, debería poder escribir 127.0.0.1 (la IP del host local) en la barra de direcciones del navegador de su Pi y ver su sitio. Así es como se veía el mío:

Paso 4: agregue humedad y presión de aire

Si está satisfecho con la temperatura, estamos listos aquí. Pero el Sense HAT puede brindarle más información, incluida la humedad y la presión del aire. Modifiquemos nuestra estación meteorológica para mostrarlos también. Sin embargo, primero debemos salir de nuestra aplicación presionando Ctrl + C.

Ahora que estás fuera, escribe:

nano weather.py
 

Este es nuestro archivo Python del Paso 3, por supuesto.

Debajo de la línea fahrenheit = round (1.8 * celcius + 32, 1), agregue las siguientes líneas:

humidity = round(sense.get_humidity(), 1)
 pressure = round(sense.get_pressure(), 1)
 

Luego, edite la línea de retorno de esta manera:

return render_template('weather.html', celcius=celcius, fahrenheit=fahrenheit, humidity=humidity, pressure=pressure)
 

Finalmente, necesitamos modificar nuestra plantilla HTML. Volvamos a ese archivo:

nano templates/weather.html
 

..y haz que se vea así:

<!doctype html>
 
 <html>
     <head>
         <title>Raspberry Pi Weather Station</title>
     </head>
 
     <body>
         <h1>Raspberry Pi Weather Station</h1>
 
         <h2>Temperature</h2>
         <p><strong>Celcius:</strong> {{ celcius }}</p>
         <p><strong>Fahrenheit:</strong> {{ fahrenheit }}</p>
 
         <h2>Humidity</h2>
         <p>{{ humidity }}</p>
 
         <h2>Pressure</h2>
         <p>{{ pressure }}</p>
     </body>
  </html>
 

Nuevamente, siéntase libre de modificar el aspecto de su sitio personal.

¡Ahora coloque 127.0.0.1 en la barra de direcciones en el navegador web de su Raspberry Pi nuevamente y disfrute de su sitio nuevo y mejorado! El mío se ve así:

Paso 5: configurar el reenvío de puertos

Muy bien, la estación meteorológica funciona, pero solo está disponible desde la red doméstica. Por ejemplo, si su teléfono inteligente está conectado a la misma red que su Raspberry Pi, puede buscar la dirección IP de Raspberry Pi seguida de: 5000 (por ejemplo, http://192.168.0.101:5000) y ver la misma página (puede obtener la dirección IP de su Pi escribiendo el nombre de host –I en la Terminal).

Sin embargo, todavía no puede abrir la página desde fuera de su red doméstica. Para poder hacerlo, deberá configurar el reenvío de puertos en la interfaz de administración de su enrutador. Acceda a la interfaz de administración de su enrutador escribiendo la dirección IP de su enrutador e ingresando cualquier información de inicio de sesión necesaria (esta información a menudo está impresa en una etiqueta en su enrutador). Luego configure su configuración de reenvío de puertos así:

Service Port: 80
 Internal Port: 5000
 IP Address: [your Pi's IP address]
 Protocol: TCP
 

El suyo puede presentarse en un formato diferente o en un orden diferente, pero querrá los mismos valores en cada lugar.

Ahora que ha hecho esto, suba a un dispositivo que esté fuera de su red e ingrese la dirección IP pública de su red (puede obtener su dirección IP pública buscando en Google «cuál es mi dirección IP»). Debería ser redirigido al sitio de su estación meteorológica. ¡Felicitaciones, ha configurado una estación meteorológica Raspberry Pi con Sense HAT!