Övervaka internet hastighet på Raspberry Pi med speedtest

Artikelns innehåll
  1. Övervaka internet hastighet på Raspberry Pi med Speedtest
  2. Förutsättningar
  3. Installera nödvändiga paket
  4. Hämta och installera Speedtest CLI
  5. Skriva Python-skriptet
  6. Samla in hastighetsdata
  7. Spara data i CSV-fil
  8. Använda InfluxDB och Grafana
    1. Installera InfluxDB
    2. Installera Grafana
    3. Överföra data till InfluxDB
  9. Automatisera skriptet
  10. Ladda upp data till Google Drive
  11. Felsökning
  12. Slutsats

Övervaka internet hastighet på Raspberry Pi med Speedtest

I dagens digitala värld är en stabil och snabb internetanslutning avgörande för våra dagliga aktiviteter, vare sig det handlar om att streama filmer, spela spel eller arbeta hemifrån. Med hjälp av en Raspberry Pi kan du enkelt övervaka och registrera din internetanslutningens hastighet och stabilitet. Genom att använda Speedtest CLI kan du inte bara mäta hastigheten, utan även samla in data över tid för att analysera prestandan på ditt nätverk. Denna guide syftar till att ge en detaljerad översikt av processen för att sätta upp din egen internet hastighetsmonitor, inklusive installationen av nödvändiga verktyg, skripthantering och datalagring.

För att kunna genomföra denna installation behöver du följa några enkla steg. Vi kommer att använda Python för att skriva ett skript som automatiskt kör hastighetsmätningar och samlar in resultaten. Det ger oss möjligheten att skapa en speedtest graph för visuell analys av datan. Genom att lagra resultaten i en CSV-fil eller i en databas som InfluxDB, kommer vi att kunna se förändringar i vår internet hastighet över tid, vilket hjälper till att identifiera eventuella problem med anslutningen. Låt oss dyka in i hur du sätter upp din Raspberry Pi för att övervaka internet hastighet!

Förutsättningar

Innan du börjar med installationen behöver du säkerställa att du har följande förutsättningar på plats:

  • Raspberry Pi - Valfri modell fungerar, men Pi 3 eller senare rekommenderas för bättre prestanda.
  • En fungerande internetuppkoppling.
  • Raspberry Pi OS installerat.
  • Tillgång till terminal eller SSH för att kunna köra kommandon.
  • Grunderna i Python och kommandoradsverktyg.
See also  Hur genomförs ett ljudsensorprojekt med Arduino

Installera nödvändiga paket

För att börja samla in hastighetsdata måste vi installera några nödvändiga paket. Öppna terminalen och kör följande kommandon:

sudo apt update
sudo apt install python3 python3-pip
sudo pip3 install speedtest-cli

Detta kommer att installera Python 3 samt Speedtest CLI som vi behöver för att mäta internet hastigheten. Du kan verifiera installationen genom att köra:

speedtest-cli --version

Det bör returnera versionsnumret av Speedtest CLI om installationen var framgångsrik.

Hämta och installera Speedtest CLI

Om du ville ha senaste versionen av Speedtest CLI kan du ladda ner den direkt från dess officiella GitHub-repo. Kör följande kommando:

sudo apt install speedtest-cli

Detta installeras automatiskt och du kan använda det precis som tidigare. Att använda curl bandwidth test är också en alternativ metod att mäta hastigheten, men vi kommer att hålla oss till Speedtest CLI i denna guide för enkelhetens skull.

Skriva Python-skriptet

Nästa steg är att skriva ett Python-skript som kommer att köra hastighetsmätningarna. Skapa en ny fil med namnet speedtest.py:

nano speedtest.py

Fyll filen med följande kod:

import speedtest
import csv
from datetime import datetime

def run_speedtest():
    st = speedtest.Speedtest()
    st.get_best_server()
    download_speed = st.download() / 1_000_000  # konvertera till Mbps
    upload_speed = st.upload() / 1_000_000  # konvertera till Mbps
    ping = st.results.ping
    return download_speed, upload_speed, ping

def save_to_csv(download, upload, ping):
    with open('speedtest_results.csv', mode='a') as file:
        writer = csv.writer(file)
        writer.writerow([datetime.now(), download, upload, ping])

if __name__ == "__main__":
    download, upload, ping = run_speedtest()
    save_to_csv(download, upload, ping)

Skriptet kommer att köra en hastighetsmätning och spara resultaten i en CSV-fil. Du kan köra skriptet direkt genom att använda:

python3 speedtest.py

Samla in hastighetsdata

För att samla in hastighetsdata regelbundet kan vi använda ett enkelt cron-jobb. Öppna crontab med:

crontab -e

Och lägg till följande rad för att köra skriptet varje timme:

0 * * * * /usr/bin/python3 /path/to/speedtest.py

Se till att justera sökvägen till där du har sparat ditt skript. Detta kommer att samla in hastighetsdata varje timme och spara det i speedtest_results.csv filen.

Spara data i CSV-fil

CSV-filen som vi har skapat med skriptet kommer att innehålla information om hastigheter och ping i ett lättläst format. Du kan alltid öppna den med valfri kalkylbladsprogramvara för analys.

See also  Livebot: Skapa en Internetstyrd Robot för Spännande Projekt

Använda InfluxDB och Grafana

Om du vill ta din datainsamling ett steg längre kan du överväga att använda InfluxDB för databashantering och Grafana för visualisering av dina hastighetsdata. Här är hur du gör:

Installera InfluxDB

Följande kommando installerar InfluxDB:

sudo apt install influxdb

Installera Grafana

För att installera Grafana,registrera dig först på Grafanas officiella webbplats för en installationsguide som passar ditt operativsystem. Efter installation kan du komma åt Grafana via webbläsaren.

Överföra data till InfluxDB

Uppdatera ditt Python-skript så att det kan skicka data till InfluxDB istället för en CSV-fil. Det kräver att du installerar influxdb-python biblioteket via pip:

sudo pip3 install influxdb

Lägg sedan till följande funktion i ditt skript för att skicka data:

from influxdb import InfluxDBClient

def save_to_influxdb(download, upload, ping):
    client = InfluxDBClient('localhost', 8086, 'user', 'password', 'speedtest_db')
    json_body = [
        {
            "measurement": "internet_speed",
            "tags": {
                "host": "raspberrypi"
            },
            "fields": {
                "download": download,
                "upload": upload,
                "ping": ping
            }
        }
    ]
    client.write_points(json_body)

Glöm inte att uppdatera databasinformationen i koden enligt dina inställningar!

Automatisera skriptet

Med cron-jobbet som vi tidigare har ställt in, kommer ditt skript nu att automatiskt samla in och spara hastighetsdata. Denna process är viktig för att ha pålitliga mått på din internetprestanda.

Ladda upp data till Google Drive

För dem som vill ha en backup av sina hastighetsdata är det möjligt att ladda upp din CSV-fil till Google Drive. För att göra detta kan du använda gdown biblioteket i Python. Installera det först:

sudo pip3 install gdown

Sedan kan du använda följande kod för att ladda upp fil:

import gdown

gdown.upload('speedtest_results.csv', quiet=False)

Felsökning

Om du stöter på problem under installationen, var noga med att kontrollera följande:

  • Att alla paket är korrekt installerade.
  • Att skriptet ligger på rätt sökväg som anges i crontab.
  • Att din Raspberry Pi har tillgång till internet.
  • Kontrollera loggar för både InfluxDB och Grafana för eventuella fel.
See also  Hur gör man en mini-oscilloskop med Arduino

Slutsats

Att övervaka din internet hastighet på en Raspberry Pi med Speedtest är en relativt enkel och givande process. Genom att följa stegen ovan kan du skapa en pålitlig övervakningslösning som ger dig värdefull information om din internetprestanda. Med möjligheten att spara data i en CSV-fil eller i InfluxDB och visualisera det med Grafana, kan du enkelt analysera och identifiera problem med din internetuppkoppling.

Oavsett om du är en nätverksadministratör, gamer, eller bara någon som vill se till att du får de hastigheter du betalar för, är detta projekt en praktisk lösning. Med curl bandwidth test som ett alternativ kan du bygga ut funktionaliteten ännu mer. Så, kör igång och skapa din egen speedtest graph för att hålla koll på din internet hastighet framtid!

Tack för att du läste vår artikel, du kan se alla artiklar i våra webbkartor eller i Sitemaps

Tyckte du att den här artikeln var användbar? Övervaka internet hastighet på Raspberry Pi med speedtest Du kan se mer här NanoPi.

Niklas Andersson

Niklas Andersson

Hej, jag heter Niklas Andersson och är en passionerad student på civilingenjörsprogrammet i elektronik och en entusiastisk bloggare. Redan som liten har jag varit nyfiken på hur elektroniska apparater fungerar och hur tekniken kan förändra våra liv. Denna nyfikenhet ledde till att jag började studera elektronikkonstruktion, där jag varje dag utforskar nya idéer, konstruktioner och innovativa lösningar.

Tack för att du läser innehållet i Maker Electronics

Se mer relaterat innehåll

Leave a Reply

Your email address will not be published. Required fields are marked *

Your score: Useful

Go up