Ir al contenido principal
Conecta tu NanoPi a Ubidots

Utiliza tu NanoPi para medir la velocidad de tu Internet y reportarla a Ubidots. ¡Asegúrate de que estás recibiendo un servicio de Internet de calidad!

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

El NanoPI Neo es una pequeña computadora Linux de $8 disponible en FriendlyARM.

Con una amplia variedad de accesorios para interactuar con el mundo real, el NanoPi Neo puede ser un dispositivo IoT asequible pero potente.

Configurando tu NanoPi

Puedes consultar las instrucciones de FriendlyARM para configurar tu NanoPi, aunque aquí presento un procedimiento simplificado:

  1. Descarga PiFiller o Win32DiskImager y graba el archivo .img en una tarjeta SD (mínimo 8GB de tamaño)

  2. Inserta la tarjeta SD y arranca el NanoPI con un cable Ethernet conectado a tu router.

  3. Encuentra la dirección IP asignada a tu NanoPI: normalmente uso nmap desde la línea de comandos, pero también puedes intentar mirar la lista de clientes de tu router.

Búsqueda de IP con Nmap:

Búsqueda de IP del router (router Linksys):

Conectando el NanoPi a Ubidots usando Python

Ahora que tenemos la dirección IP, podemos acceder al NanoPi por ssh:

ssh root@10.85.4.193

Nombre de usuario: root
Contraseña: fa

Vamos a actualizar algunos paquetes e instalar pip, el gestor de paquetes de Python:

sudo apt-get update
sudo apt-get install python-pip python-dev build-essential 

Vamos a instalar estas bibliotecas:

  • requests: para hacer solicitudes HTTP desde Python a Ubidots

  • pyspeedtest: para medir la velocidad de Internet desde Python

pip install requests pyspeedtest

¡Listo para codificar!

Crea un script de Python:

nano ubi_speed_tester.py 

Y copia este código en él:

#!/usr/bin/pythonimport pyspeedtestimport requestsst = pyspeedtest.SpeedTest()payload = {'Download': round(st.download()/1000000,2) , 'Upload': round(st.upload()/1000000, 2), 'Ping': round(st.ping(),2)}r = requests.post('http://industrial.api.ubidots.com/api/v1.6/devices/NanoPi/?token=YOUR-UBIDOTS-TOKEN-HERE', data=payload)

Asegúrate de reemplazar tu token de cuenta de Ubidots en la URL de la solicitud.

Vamos a probar el script:

python ubi_speed_tester.py

Deberías ver un nuevo dispositivo en tu cuenta de Ubidots con tres variables: Download, Upload y Ping:

Paso opcional: Renombrar el dispositivo y las variables

Los nombres de las variables creadas son los mismos que las etiquetas de la API, que son los ID utilizados por la API. Esto no significa que sus nombres no puedan ser cambiados, así que recomendaría cambiar los nombres de los dispositivos y variables para que se vean mejor:

  • nanopi --> "Nano Pi Neo"

  • download --> "Velocidad de Descarga"

  • upload --> "Velocidad de Carga"

  • ping --> "Ping"

También puedes agregar las unidades a cada variable:

Crea un Crontab para ejecutar el script cada x minutos

Ahora que probamos el script, podemos configurarlo para que se ejecute automáticamente cada x minutos. Para este propósito, utilizaremos la herramienta Cron de Linux.

1- Haz el archivo ejecutable:

chmod a+x ubi_speed_tester.py 

2- Crea un crontab

Por alguna razón, el comando “crontab -e” no funcionó de inmediato, así que instalé cron manualmente:

sudo apt-get install cron

luego escribe:

“crontab -e”

y agrega la línea

* * * * * python /root/ubi_speed_tester.py

para ejecutar el script cada minuto.

3- Reinicia y verifica tus datos en Ubidots

Reinicia el NanoPI

reboot

espera un minuto y luego ve a Ubidots para comenzar a ver los resultados cada minuto:

Ahora que tus datos están en Ubidots, puedes crear paneles y eventos. Aquí hay un ejemplo:

Widget de gráfico de barras

También creé dos eventos: uno para notificarme si la Internet es lenta, y otro para notificarme si no hay Internet en absoluto!

Evento basado en valor

Evento basado en actividad

Conclusión

Ahora coloca tu NanoPi en un lugar seguro detrás de tu router y nunca te preocupes nuevamente por preguntarte si tu ISP está proporcionando el servicio correcto o no!

¿Ha quedado contestada tu pregunta?