Prędkość złącza – analiza okresowa

Zainspirowany skryptem znalezionym w necie postanowiłem uruchomić proces mierzący czas pinga, prędkość downloadu i uploadu mojego dostawcy internetu.

Konfiguracja w DOMOTICZ sprowadza się do zdefiniowana wirtualnych sensorów poprzez:

  1. KONFIGURACJA>SPRZĘT>DODAJ

  2. Na dodanym sprzęcie klikamy UTWÓRZ WIRTUALNE CZUJNIKI
  3. Dodajemy odpowiednio czujniki dla PING, DOWNLOAD, UPLOAD, wybierając typ czujnika CUSTOM SENSOR  a w etykiecie AXIS wprowadzamy jednostkę w której chcemy wykonywać pomiary – u mnie odpowiednio ms dla PING, i Mbit/s dla DOWNLOAD i UPLOAD

  4. Następnie z pozycji KONFIGURACJA>URZĄDZENIA odczytujemy IDXy naszych czujników – będą potrzebne do konfiguracji skryptu.

Do pomiaru prędkości złącza wykorzystamy pakiet speedtest. Jego instalacja sprowadza się do uruchomienia poniższej komendy.

sudo apt-get install speedtest-cli

Uruchomienie standardowe poprzez komendę speedtest zwraca komplet potrzebnych informacji.
Uruchomienie go z parametrem –simple ograniczy ilość zwracanych danych, co pozwoli nam łatwiej je obrobić.
Do obróbki wykorzystałem linuxowy program sed

Kompletny skrypt zamieszczam poniżej:

#!/bin/bash

#setup
pingidx=47
downloadidx=45
uploadidx=46
</pre>
#pobieranie danych
speedtest --source 192.168.1.101 --simple > speedtest.dat
ping=$(sed -n -E '1s/Ping: | ms//gp' speedtest.dat)
download=$(sed -n -E '2s/Download: | Mbit\/s//gp' speedtest.dat)
upload=$(sed -n -E '3s/Upload: | Mbit\/s//gp' speedtest.dat)

echo $ping
echo $download
echo $upload

curl -s -i -H "Accept: application/json" "http://$user:$password@$host:$port/json.htm?type=command&param=udevice&idx=$pingidx&svalue=$ping"
curl -s -i -H "Accept: application/json" "http://$user:$password@$host:$port/json.htm?type=command&param=udevice&idx=$downloadidx&svalue=$download"
curl -s -i -H "Accept: application/json" "http://$user:$password@$host:$port/json.htm?type=command&param=udevice&idx=$uploadidx&svalue=$upload"

sed w dużym skrócie potrafi odpowiednio manipulować tekstami, w naszym przypadku wyciąga potrzebne dane z rezultatu zwracanego przez speedtest. Spreparowane dane  następnie przysyłamy do systemu DOMOTICZ w wykorzystaniem jego API. Oczywiście powyższy skrypt musicie zmodyfikować poprzez wprowadzenie własnych IDXów i adresu DOMOTICZ.

Aby uruchomić skrypt musimy mu jeszcze nadać odpowiednie uprawnienia poprzez wydanie komendy:

chmod +x speedtest.sh

(mój plik nazywa się speedtest.sh)

Na koniec aby to okresowo sprawdzać prędkość złącza musimy włączyć harmonogram odpalania skryptu.

Realizujemy to poprzez wrzucenie odpowiedniego wpisu do crontaba. Tak więc:

1. Uruchamiamy crontaba:

crontab -e

2. Dodajemy nowy wpis:

0 * * * * /home/pi/domoticz/scripts/shell/speedtest.sh

Czyli w moim przypadku skrypt będzie uruchamiany w każdej zerowej minucie godziny – czyli co godzine;-).

Więcej o harmonogramie w crontabie możecie znaleźć TU

Efekt końcowy na obrazkach poniżej:-)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *