Övervaka internet hastighet på Raspberry Pi med speedtest
- Övervaka internet hastighet på Raspberry Pi med Speedtest
- Förutsättningar
- Installera nödvändiga paket
- Hämta och installera Speedtest CLI
- Skriva Python-skriptet
- Samla in hastighetsdata
- Spara data i CSV-fil
- Använda InfluxDB och Grafana
- Automatisera skriptet
- Ladda upp data till Google Drive
- Felsökning
- 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.
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.
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.
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.Tack för att du läser innehållet i Maker Electronics
Leave a Reply
Se mer relaterat innehåll