Raspberry Pi se ha convertido en un dispositivo ampliamente utilizado no solo para prototipos y fines educativos, sino también para proyectos de producción industrial dentro de las empresas. Además del tamaño del Pi, su bajo costo y su sistema operativo Linux completamente operativo, también puede interactuar con otros periféricos a través de pines GPIO (General Purpose Input/Output Pins), lo que te permite codificar aplicaciones de hardware bastante robustas sin necesidad de ser un experto en electrónica embebida.
Siguiendo este artículo, aprenderás cómo medir la velocidad de tu internet utilizando un Raspberry Pi y enviar los parámetros a la nube de Ubidots para crear alertas que monitoreen la conexión de tu Internet a lo largo del día!
Requisitos
Para completar este tutorial, necesitarás:
Un Raspberry Pi conectado a Internet
Cuenta de Ubidots
Configuración
Esta guía asume que tu Raspberry Pi ha sido configurada y ya está conectada a Internet. Si no, por favor consulta esta guía de inicio rápido de la Fundación Raspberry Pi.
NOTA: Si estás utilizando un dongle WiFi, te sugerimos usar Wicd para gestionar tu conexión WiFi.
Conectando el Raspberry Pi a Ubidots usando Python
Con tu Raspberry Pi conectada a Internet, verifica la dirección IP asignada a la placa accediendo mediante ssh en el terminal de tu computadora:
ssh pi@{IP_Address_assigned}
Nombre de Usuario: pi
Contraseña: raspberry
Como puedes ver en la imagen a continuación, tu acceso fue exitoso, y el usuario ahora es pi@raspberrypi
:
Ahora vamos a actualizar algunos paquetes e instalar pip, el gestor de paquetes de Python:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip python-dev build-essential
Instala las siguientes bibliotecas:
requests: para hacer solicitudes HTTP desde Python a Ubidots
speedtest-cli: para medir la velocidad de Internet desde Python
pip install requests speedtest-cli
Consejo Profesional: Preguntas Frecuentes y Solución de Problemas - Si obtienes un problema de permisos al instalar los paquetes requeridos, cambia el modo de usuario a root usando el siguiente comando:
sudo su
¡Ahora es tiempo de codificar!
Crea un script de Python en el terminal de tu computadora:
nano ubi_speed_tester.py
Y copia este código en él:
#!/usr/bin/pythonimport speedtestimport requeststry: st = speedtest.Speedtest() st.get_best_server() payload = {'Download': round(st.download() / 1000000, 2) , 'Upload': round(st.upload() / 1000000, 2), 'Ping': round(st.results.ping, 2)} r = requests.post('http://industrial.api.ubidots.com/api/v1.6/devices/raspberry-pi/?token=YOUR-UBIDOTS-TOKEN-HERE', data=payload) # Imprimir la respuesta del servidor Descomenta la siguiente línea para propósitos de depuración #print(r.content)except Exception as identifier: print(identifier)
Asegúrate de reemplazar tu token de cuenta de Ubidots en la URL de la solicitud. Si no sabes cómo obtener tu Token de Ubidots, por favor consulta el artículo a continuación:
Ahora probemos el script:
python ubi_speed_tester.py
Si funciona correctamente, verás un nuevo dispositivo en tu cuenta de Ubidots con tres variables: Download, Upload, y Ping:
Pasos Opcionales: Renombrar el Dispositivo y las Variables
Los nombres de las variables creadas son los mismos que las etiquetas de la API. Sin embargo, esto no significa que sus nombres no puedan ser cambiados, así que recomiendo cambiar los nombres de los dispositivos y variables para hacerlos más amigables. Por favor consulta el artículo a continuación para aprender cómo renombrar tus variables.
Además, puedes agregar las unidades a cada variable:
Crea un Crontab para ejecutar el script cada N minutos
Ahora que hemos probado el script, podemos configurarlo para que se ejecute automáticamente cada N minutos. Para este propósito, utilizaremos la herramienta Cron de Linux para mayor eficiencia.
1. Haz el archivo ejecutable en el terminal de tu computadora:
chmod a+x ubi_speed_tester.py
2. Crea un crontab:
Por alguna razón, el comando “crontab -e” no funciona de inmediato, así que la solución es instalar cron manualmente con los siguientes comandos:
sudo apt-get install cron
Luego escribe:
crontab -e
y agrega la línea
* * * * * python /home/pi/ubi_speed_tester.py
para ejecutar el script cada minuto.
3- Reinicia y Verifica tus Datos en Ubidots
Para reiniciar el Raspberry Pi debes usar como root
, para esto escribe:
sudo su
Luego, escribe el siguiente comando para reiniciar el Raspberry Pi:
reboot
Espera un minuto y luego ve a Ubidots para comenzar a ver los resultados actualizándose cada minuto:
Ahora que tus datos están en Ubidots, puedes crear paneles y eventos utilizando tus datos. Aquí hay un ejemplo:
Para más información sobre Paneles, consulta Crear Paneles y Widgets.
Notificaciones de conexión lenta/sin Internet
Para monitorear la velocidad de tu Internet cuando estés fuera, puedes crear eventos para notificar a un usuario: si el Internet es lento o si no hay Internet.
Para ver más sobre los Eventos de Ubidots, consulta este artículo del Centro de Ayuda para más detalles.
Conclusión
En solo unos minutos has construido un fácil Tester de Velocidad de Internet DIY. Ahora coloca tu Raspberry Pi en un lugar seguro detrás de tu router y nunca más te preguntes sobre la velocidad de tu Internet. ¡Feliz hacking :)
Otros usuarios también encontraron útil...