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:
- KONFIGURACJA>SPRZĘT>DODAJ
- Na dodanym sprzęcie klikamy UTWÓRZ WIRTUALNE CZUJNIKI
- 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
- 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