Cómo usar una Raspberry Pi para monitorear la velocidad de banda ancha

Una vez que haya configurado lo básico, puede automatizar el monitoreo de su conexión de banda ancha para que dure todo el tiempo que desee.

Se generará un archivo CSV (valores separados por comas) en Google Drive y se actualizará una vez por hora. CSV es un formato de archivo muy simple que se puede abrir en Microsoft Excel o importar a Hojas de cálculo de Google. ¿Suena como algo conveniente? Este artículo asume que tiene Raspbian instalado en su Pi.

Use Raspberry Pi para monitorear las velocidades de banda ancha

Paso 1: Buscar actualizaciones

Como siempre, comience por buscar las últimas actualizaciones. Ejecute los siguientes comandos en la terminal:

sudo apt-get update sudo apt-get upgrade

Paso 2: Instalar speedtest-cli

Existen varios métodos para medir la velocidad de banda ancha. Usaremos speedtest-cli 'interfaz de línea de comandos para verificar el ancho de banda de Internet usando speedtest.net'.

speedtest-cli no está disponible directamente desde el repositorio de Raspbian, pero puede instalarlo desde Python Package Index (PyPI). Esto se hace fácilmente con la ayuda de una herramienta llamada pip, que viene preinstalada en Raspbian Jessie y Stretch. Puedes asegurarte de tener semillas siguiendo este comando:

sudo apt-get install python-pip

Si recibe el mensaje "python-pip es la última versión", significa que está listo para usar.

Luego use pip para instalar speedtest-cli:

sudo pip install speedtest-cli

Con speedtest-cli instalado, puede medir fácilmente la velocidad de su acceso de banda ancha con el siguiente comando:

speedtest-cli

Sin embargo, para los propósitos de este artículo, es más conveniente usar un modo speedtest-cli simple:

speedtest-cli --simple

Debería ver algo como esto:

Ping: 47.943 ms Download: 40.93 Mbit/s Upload: 2.33 Mbit/s

Sin embargo, esta salida no sigue la sintaxis de CSV. Por lo tanto, deberá analizar los datos y corregirlos.

Paso 3: Crea una secuencia de comandos de Python

Vamos a crear un nuevo archivo de Python:

sudo nano speedtest.py

Esto es lo que necesita tener en el archivo (por supuesto, puede copiar y pegar estas líneas):

import os import re import subprocess import time response = subprocess.Popen('speedtest-cli --simple', shell=True, stdout=subprocess.PIPE).stdout.read() ping = re.findall('Ping:s(.*?)s', response, re.MULTILINE) download = re.findall('Download:s(.*?)s', response, re.MULTILINE) upload = re.findall('Upload:s(.*?)s', response, re.MULTILINE) ping[0] = ping[0].replace(',', '.') download[0] = download[0].replace(',', '.') upload[0] = upload[0].replace(',', '.') try: if os.stat('/home/pi/speedtest/speedtest.csv').st_size == 0: print 'Date,Time,Ping (ms),Download (Mbit/s),Upload (Mbit/s)' except: pass print '{},{},{},{},{}'.format(time.strftime('%m/%d/%y'), time.strftime('%H:%M'), ping[0], download[0], upload[0])

(Suponiendo que escriba el guión para / inicio / pi / - de lo contrario, simplemente cambie la ruta aquí: si os.stat ('/ home / pi / speedtest / speedtest.csv'). St_size == 0 🙂 .

Una vez que haya colocado las líneas en el lugar correcto, puede guardar el archivo y salir del editor presionando Control + X, Y y Ingresar .

El script ejecuta speedtest-cli en modo simple, analiza la salida y la envía en formato CSV. Puede ejecutar el script con el siguiente comando:

python speedtest.py

Y si lo hace, debería ver una línea como esta:

10/26/17,10:18,47.943,40.93,2.33

Paso 4: Crea un directorio

Vamos a crear un directorio para el archivo CSV:

mkdir speedtest

Si se pregunta por qué necesita una carpeta para un archivo, es porque va a sincronizar esa carpeta con Google Drive. Una vez sincronizado, todo lo que esté dentro de la carpeta coincidirá con el contenido de la carpeta de Google Drive.

Ahora, si ejecuta su secuencia de comandos de Python de la siguiente manera:

python speedtest.py >> speedtest/speedtest.csv

… Tendrá un archivo CSV con datos de velocidad de banda ancha en la nueva carpeta.

Si comprueba el contenido del archivo (p. prueba de velocidad del gato / prueba de velocidad.csv ), puedes ver líneas como esta:

Date,Time,Ping (ms),Download (Mbit/s),Upload (Mbit/s) 10/26/17,10:18,47.943,40.93,2.33

Paso 5: integra el script con Google Drive

Para integrar el script con Google Drive, puede usar el cliente CLI de GitHub Petter Rasmussen. Descarga su versión Raspberry Pi ejecutando el siguiente comando:

wget -O gdrive https://docs.google.com/uc?id=0B3X9GlR6EmbnVXNLanp4ZFRRbzg&export=download

Luego, especifiquemos los permisos del archivo:

chmod +x gdrive

Debe notificar a Google Drive para permitir que el Cliente CLI de Google Drive se conecte a su cuenta. Es posible hacer esto ejecutando CLI Client en Google Drive con cualquier parámetro. Por ejemplo, este comando enumera el contenido de su cuenta de Google Drive:

./gdrive list

Ahora debería ver una solicitud de autenticación como esta:

Foto 1 de Cómo usar una Raspberry Pi para monitorear la velocidad de banda ancha

Simplemente siga las instrucciones: visite la URL en su navegador, inicie sesión en su cuenta de Google y habilite " GDrive (...) para ver y administrar archivos en su Google Drive. "(GDrive (...) ve y administra sus archivos de Google Drive). Entonces estará listo para ingresar el código de verificación.

Finalmente, gdrive listará su contenido en Google Drive.

Ahora que tiene la carpeta más rápida en su Raspberry Pi, cree el directorio de Google Drive apropiado:

./gdrive mkdir speedtest

El programa devuelve el ID del nuevo directorio Cópielo, ya que lo necesitará más adelante.

Luego, sincronicemos las dos carpetas más rápidas:

./gdrive sync upload speedtest ID

Simplemente reemplace la ID con la ID de directorio más rápida.

Si todo sale como se espera, ahora debería ver una carpeta llamada speedtest en su Google Drive. Hay un archivo creado previamente en el directorio ( pruebavelocidad.csv ):

Imagen 2 de Cómo usar una Raspberry Pi para monitorear la velocidad de banda ancha

Ahora, si vuelve a ejecutar el script de Python, se agregarán nuevos datos de velocidad de banda ancha al final del archivo:

python speedtest.py >> speedtest/speedtest.csv

Y si ejecuta el comando de sincronización nuevamente, puede ver su archivo actualizado en Google Drive:

./gdrive sync upload speedtest ID

(Nuevamente, asegúrese de reemplazar la ID con la ID del directorio más rápido).

Foto 3 de Cómo usar Raspberry Pi para monitorear la velocidad de acceso de banda ancha
Puede ver su archivo actualizado en Google Drive

Paso 6: Automatice todo

Todo lo que queda es hacer que las cosas funcionen automáticamente. Para hacer esto, use cron, que le permite programar comandos para que se ejecuten en momentos específicos, como una vez por hora.

Vamos a crear un script de shell corto que contenga comandos para ejecutarse una vez por hora:

sudo nano speedtest-cron.sh

Agregue los siguientes comandos familiares (suponiendo que haya hecho todo en /inicio/pi/directorio - de lo contrario, simplemente cambie la ruta):

sudo python /home/pi/speedtest.py >> /home/pi/speedtest/speedtest.csv /home/pi/gdrive sync upload speedtest ID

(Nuevamente, asegúrese de reemplazar la ID con la ID del directorio de prueba de velocidad).

Luego guarde y salga con Control + X, Y y Ingresar .

Especifique los permisos para ejecutar el script:

sudo chmod +x speedtest-cron.sh

Ahora está listo para probar el script:

./speedtest-cron.sh

Bien, vamos a crear la tarea cron:

crontab -e

Ingrese la siguiente línea en el editor, guarde y salga presionando Ctrl + X, Y, Entrar :

0 * * * * /home/pi/speedtest-cron.sh

El monitoreo de velocidad de banda ancha ya está disponible. Los resultados de la prueba de velocidad se registrarán una vez por hora. Puede abrir archivos CSV en Google Drive usando Microsoft Excel o Google Sheets. Si prefiere la siguiente opción, deberá importar el archivo ( Archivo > Importar... ).

Imagen 4 de Cómo usar una Raspberry Pi para monitorear la velocidad de banda ancha

Puede abrir archivos CSV en Google Drive usando Microsoft Excel o Google Sheets

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
error: Content is protected !!