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:
Descarga PiFiller o Win32DiskImager y graba el archivo .img en una tarjeta SD (mínimo 8GB de tamaño)
Inserta la tarjeta SD y arranca el NanoPI con un cable Ethernet conectado a tu router.
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!