{"id":13475,"date":"2024-11-24T16:36:30","date_gmt":"2024-11-24T15:36:30","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=13475"},"modified":"2025-01-06T14:13:53","modified_gmt":"2025-01-06T13:13:53","slug":"speedtest","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2024\/11\/24\/speedtest\/","title":{"rendered":"Speedtest"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">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. <\/pre>\n\n\n\n<p>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\u00efnvloed. 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.<\/p>\n\n\n\n<p>Om deze internetsnelheidsmonitor te bereiken, laten ik zien hoe je een klein Python-script schrijft dat samenwerkt met een programma genaamd Speedtest CLI van <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"><strong>Ookla<\/strong><\/mark>.<\/p>\n\n\n\n<p>Dit programma werkt door de populaire speedtest.net-service te ondervragen om de ping, downloadsnelheid en uploadsnelheid te verkrijgen.<\/p>\n\n\n\n<p><em>Daar gaan we&#8230;<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>De Speedtest CLI installeren<\/strong><\/h2>\n\n\n\n<p>1 &#8211; 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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\n\nsudo apt-get upgrade<\/code><\/pre>\n\n\n\n<p>2 &#8211; 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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install apt-transport-https gnupg1 dirmngr lsb-release<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Het <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">apt-transport-https<\/mark> 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.<\/li>\n\n\n\n<li>Daarnaast installeren we ook <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">gnupg1<\/mark>, dit pakket wordt gebruikt voor veilige communicatie tussen je Raspberry Pi en de Speedtest.net-servers.<\/li>\n\n\n\n<li>Vervolgens installeren we het <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">dirmngr<\/mark>-pakket. Dit pakket wordt gebruikt voor het afhandelen van de toevoeging van de pakketrepository aan de bronnenlijst van uw Raspberry Pi.<\/li>\n\n\n\n<li>Ten slotte heet het laatste pakket dat we installeren \u201c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">lsb-release<\/mark>\u201c. We gebruiken dit pakket om de releasenaam van het besturingssysteem te achterhalen.<\/li>\n<\/ul>\n\n\n\n<p>3 &#8211; Nu de pakketten die we nodig hebben ge\u00efnstalleerd zijn, kunnen we nu de GPG-sleutel voor Ookla&#8217;s Speedtest-repository aan de sleutelhanger toevoegen. We hebben deze sleutelhanger nodig om de speedtest-opdrachtregelinterface naar onze Raspberry Pi te kunnen downloaden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/packagecloud.io\/ookla\/speedtest-cli\/gpgkey | gpg --dearmor | sudo tee \/usr\/share\/keyrings\/speedtestcli-archive-keyring.gpg &gt;\/dev\/null<\/code><\/pre>\n\n\n\n<p>4 &#8211; 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.<\/p>\n\n\n\n<p>Je kunt deze repository toevoegen door de volgende opdracht uit te voeren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"deb &#91;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<\/code><\/pre>\n\n\n\n<p>Binnen deze opdracht zal je merken dat we \u201c<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">$(lsb_release -cs)<\/mark>\u201c gebruiken. Met dit stukje tekst kunnen we de releasenaam voor onze installatie van Raspberry Pi OS rechtstreeks in de opdracht invoegen.<\/p>\n\n\n\n<p>5 &#8211; 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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update<\/code><\/pre>\n\n\n\n<p>6 &#8211; Eindelijk kunnen we de <a href=\"https:\/\/www.speedtest.net\/apps\/cli\">offici\u00eble Speedtest CLI<\/a> van Ookla op onze Raspberry Pi installeren. Gebruik de volgende opdracht om het pakket op uw apparaat te installeren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install speedtest<\/code><\/pre>\n\n\n\n<p>7 &#8211; We kunnen nu testen of we de speedtest-software werkt. Voer de volgende opdracht uit om de speedtest te starten.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>speedtest<\/code><\/pre>\n\n\n\n<p>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 \u201cJA\u201d in te typen, gevolgd door de [ENTER]-toets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Het Speedtest script<\/strong><\/h2>\n\n\n\n<p>1 &#8211; Nu we <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Speedtest CLI<\/mark> op de Raspberry Pi hebben ge\u00efnstalleerd, kunnen we nu doorgaan met het schrijven van ons Python-script dat voortdurend onze download- en uploadsnelheden zal controleren.<\/p>\n\n\n\n<p>We beginnen met het maken van ons Python-script voor de Raspberry Pi internetsnelheidsmonitor door de volgende opdracht uit te voeren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\nnano speedtest.py\n<\/code><\/pre>\n\n\n\n<p>2 &#8211; Schrijf in dit bestand de onderstaande coderegels. Ik gebruik hiervoor de editor <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">nano<\/mark>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os\nimport re\nimport subprocess\nimport time\n\nresponse = subprocess.Popen('\/usr\/bin\/speedtest --accept-license --accept-gdpr', shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')\n\nping = re.search('Latency:\\s+(.*?)\\s', response, re.MULTILINE)\ndownload = re.search('Download:\\s+(.*?)\\s', response, re.MULTILINE)\nupload = re.search('Upload:\\s+(.*?)\\s', response, re.MULTILINE)\njitter = re.search('Latency:.*?jitter:\\s+(.*?)ms', response, re.MULTILINE)\n\nping = ping.group(1)\ndownload = download.group(1)\nupload = upload.group(1)\njitter = jitter.group(1)\n\ntry:\n    f = open('\/home\/&lt;USERNAME&gt;\/speedtest\/speedtest.csv', 'a+')\n    if os.stat('\/home\/&lt;USERNAME&gt;\/speedtest\/speedtest.csv').st_size == 0:\n            f.write('Date,Time,Ping (ms),Jitter (ms),Download (Mbps),Upload (Mbps)\\r\\n')\nexcept:\n    pass\n\nf.write('{},{},{},{},{},{}\\r\\n'.format(time.strftime('%m\/%d\/%y'), time.strftime('%H:%M'), ping, jitter, download, upload))\n<\/code><\/pre>\n\n\n\n<p>3 &#8211; Je kunt het bestand nu opslaan door op CTRL + X en vervolgens op Y te drukken en ten slotte op ENTER te drukken.<\/p>\n\n\n\n<p>4 &#8211; 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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir ~\/speedtest<\/code><\/pre>\n\n\n\n<p>5 &#8211; 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.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 ~\/speedtest.py<\/code><\/pre>\n\n\n\n<p>6 &#8211; Zodra het script is uitgevoerd, kun je de resultaten bekijken door het nieuw gemaakte <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">speedtest.csv<\/mark> te openen. Laten we dit bestand openen door de volgende opdracht uit te voeren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/speedtest\/speedtest.csv<\/code><\/pre>\n\n\n\n<p>7 &#8211; Binnen dit bestand zou je zoiets moeten zien als wat we hieronder hebben. De kolomkoppen en enkele rijen met gegevens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Voorbeeld Speedtest output<\/strong><\/h3>\n\n\n\n<p>Date,Time,Ping (ms),Jitter (ms),Download (Mbps),Upload (Mbps)<\/p>\n\n\n\n<p>04\/29\/21,06:28,18.32,1.21,23.30,7.78<\/p>\n\n\n\n<p>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!<\/p>\n\n\n\n<p><em>Have A Nice Day!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>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 <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2024\/11\/24\/speedtest\/\" title=\"Speedtest\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":13476,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[725,730],"tags":[],"class_list":["post-13475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-netwerk","category-tooling"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/Speedtest.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/13475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=13475"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/13475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/13476"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=13475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=13475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=13475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}