Speedtest

Ondanks dat ik thuis een glasaansluiting met een snelheid van 1 Gb/s heb, heb ik niet altijd het gevoel dat ik waar voor mijn geld krijg. Ik wil eens voor langere tijd mijn verbindingssnelheid meten om te kunnen zien wat de snelheid is die mijn provider levert. 

In deze tutorial laat ik zien hoe je de Raspberry Pi kunt instellen om je internetverbinding te controleren en de gegevens op te slaan. als je wilt volgen hoe je downloadsnelheid, uploadsnelheid en ping in de loop van de tijd worden beïnvloed. Bovendien kan dit u helpen bepalen op welke tijden uw netwerk mogelijk op zijn piekcapaciteit is of dat u last heeft van een slechte internetverbinding.

Om deze internetsnelheidsmonitor te bereiken, laten ik zien hoe je een klein Python-script schrijft dat samenwerkt met een programma genaamd Speedtest CLI van Ookla.

Dit programma werkt door de populaire speedtest.net-service te ondervragen om de ping, downloadsnelheid en uploadsnelheid te verkrijgen.

Daar gaan we…

De Speedtest CLI installeren

1 – Voordat we aan de slag gaan met het instellen van de Raspberry Pi om de internetsnelheid te monitoren, moeten we er eerst voor zorgen dat onze Raspberry Pi up-to-date is. We kunnen de Raspberry Pi updaten door de volgende twee opdrachten in de terminal uit te voeren.

sudo apt-get update

sudo apt-get upgrade

2 – We moeten nu enkele pakketten installeren, zodat we de pakket repository voor de Speedtest CLI-software kunnen toevoegen. Voer de volgende opdracht uit om gnupg1, apt-transport-https, dirmngr en lsb-release op uw Raspberry Pi te installeren.

sudo apt install apt-transport-https gnupg1 dirmngr lsb-release
  • Het apt-transport-https pakket wordt gebruikt om ondersteuning voor het https-protocol toe te voegen aan de apt-pakketbeheerder. Zonder dit zal apt fouten veroorzaken bij het verbinden met de pakket repository van Ookla.
  • Daarnaast installeren we ook gnupg1, dit pakket wordt gebruikt voor veilige communicatie tussen je Raspberry Pi en de Speedtest.net-servers.
  • Vervolgens installeren we het dirmngr-pakket. Dit pakket wordt gebruikt voor het afhandelen van de toevoeging van de pakketrepository aan de bronnenlijst van uw Raspberry Pi.
  • Ten slotte heet het laatste pakket dat we installeren “lsb-release“. We gebruiken dit pakket om de releasenaam van het besturingssysteem te achterhalen.

3 – Nu de pakketten die we nodig hebben geïnstalleerd zijn, kunnen we nu de GPG-sleutel voor Ookla’s Speedtest-repository aan de sleutelhanger toevoegen. We hebben deze sleutelhanger nodig om de speedtest-opdrachtregelinterface naar onze Raspberry Pi te kunnen downloaden.

curl -L https://packagecloud.io/ookla/speedtest-cli/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/speedtestcli-archive-keyring.gpg >/dev/null

4 – Vervolgens moeten we de Ookla-repository aan onze bronnenlijst toevoegen. Zonder het toevoegen van de repository kunnen we de Speedtest CLI niet op onze Raspberry Pi installeren.

Je kunt deze repository toevoegen door de volgende opdracht uit te voeren.

echo "deb [signed-by=/usr/share/keyrings/speedtestcli-archive-keyring.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ $(lsb_release -cs) main" | sudo tee  /etc/apt/sources.list.d/speedtest.list

Binnen deze opdracht zal je merken dat we “$(lsb_release -cs)“ gebruiken. Met dit stukje tekst kunnen we de releasenaam voor onze installatie van Raspberry Pi OS rechtstreeks in de opdracht invoegen.

5 – Omdat we een nieuwe pakket repository hebben toegevoegd, moeten we onze pakketlijst bijwerken. Het bijwerken van de pakketlijst is net zo eenvoudig als het uitvoeren van de volgende opdracht.

sudo apt update

6 – Eindelijk kunnen we de officiële Speedtest CLI van Ookla op onze Raspberry Pi installeren. Gebruik de volgende opdracht om het pakket op uw apparaat te installeren.

sudo apt install speedtest

7 – We kunnen nu testen of we de speedtest-software werkt. Voer de volgende opdracht uit om de speedtest te starten.

speedtest

Wanneer je de speedtest-software voor het eerst op de Raspberry Pi uitvoert, wordt je gevraagd akkoord te gaan met enkele algemene voorwaarden. Om verder te gaan met deze melding hoeft u alleen maar “JA” in te typen, gevolgd door de [ENTER]-toets.

Het Speedtest script

1 – Nu we Speedtest CLI op de Raspberry Pi hebben geïnstalleerd, kunnen we nu doorgaan met het schrijven van ons Python-script dat voortdurend onze download- en uploadsnelheden zal controleren.

We beginnen met het maken van ons Python-script voor de Raspberry Pi internetsnelheidsmonitor door de volgende opdracht uit te voeren.

cd ~
nano speedtest.py

2 – Schrijf in dit bestand de onderstaande coderegels. Ik gebruik hiervoor de editor nano.

import os
import re
import subprocess
import time

response = subprocess.Popen('/usr/bin/speedtest --accept-license --accept-gdpr', shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')

ping = re.search('Latency:\s+(.*?)\s', response, re.MULTILINE)
download = re.search('Download:\s+(.*?)\s', response, re.MULTILINE)
upload = re.search('Upload:\s+(.*?)\s', response, re.MULTILINE)
jitter = re.search('Latency:.*?jitter:\s+(.*?)ms', response, re.MULTILINE)

ping = ping.group(1)
download = download.group(1)
upload = upload.group(1)
jitter = jitter.group(1)

try:
    f = open('/home/<USERNAME>/speedtest/speedtest.csv', 'a+')
    if os.stat('/home/<USERNAME>/speedtest/speedtest.csv').st_size == 0:
            f.write('Date,Time,Ping (ms),Jitter (ms),Download (Mbps),Upload (Mbps)\r\n')
except:
    pass

f.write('{},{},{},{},{},{}\r\n'.format(time.strftime('%m/%d/%y'), time.strftime('%H:%M'), ping, jitter, download, upload))

3 – Je kunt het bestand nu opslaan door op CTRL + X en vervolgens op Y te drukken en ten slotte op ENTER te drukken.

4 – Nu het script is geschreven, moeten we een map maken waarin het speedtest.csv-bestand zal worden opgeslagen. Voer de volgende opdracht uit om deze map te maken.

mkdir ~/speedtest

5 – Nu we de vereiste map hebben gemaakt, kunnen we doorgaan en het script testen. We kunnen ons script testen door de volgende opdracht uit te voeren.

python3 ~/speedtest.py

6 – Zodra het script is uitgevoerd, kun je de resultaten bekijken door het nieuw gemaakte speedtest.csv te openen. Laten we dit bestand openen door de volgende opdracht uit te voeren.

nano ~/speedtest/speedtest.csv

7 – Binnen dit bestand zou je zoiets moeten zien als wat we hieronder hebben. De kolomkoppen en enkele rijen met gegevens.

Voorbeeld Speedtest output

Date,Time,Ping (ms),Jitter (ms),Download (Mbps),Upload (Mbps)

04/29/21,06:28,18.32,1.21,23.30,7.78

Bovenstaande tutorial is de basis waarop je speedtest meetgegevens verkrijgt. Je zou het script kunnen uitbreiden met o.a. een lus om meer data beschikbaar te krijgen zodat je kunt zien hoe stabiel jouw internetverbinding is. Veel plezier ermee!

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*