wtorek, 14 marca 2017

Badanie szybkości łącza internetowego

Dzień dobry!

Ciekawym dodatkiem do naszego Domoticz może być pomiar prędkości łącza internetowego. 

Zrobiłem to na przykładzie zaproponowanym na blogu https://raspberrywpraktyce.wordpress.com

Pierwszym krokiem jest oczywiście standardowe 

sudo apt-get update oraz 
sudo apt-get upgrade

Po tych dwóch komendach możemy zainstalować speedtest

sudo apt-get install speedtest-cli

Zasada jest prosta - wysyłamy wartości speedtest do pliku tekstowego, później przetwarzamy je i ładujemy za pomocą JSON do wartości wirtualnych czujników (dobierając oczywiście odpowiednie ID):

- Hardware




- Devices (typ Custom sensor)







Będąc w folderze gdzie zainstalowany jest Domoticz przechodzimy do scrtips/

sudo nano DomoticzPing.sh

Później (odpowiednio edytując parametry) wpisujemy:

#!/bin/bash
#Tutaj wstawcie wlasne wartosci
host=192.168.1.xxx #Adres IP Raspberry Pi
port=xxx #Numer portu
username=
password=
pingidx=111 #Tu Wasze ID
downloadidx=112 #Tu Wasze ID
uploadidx=113 #Tu Wasze ID

# no need to edit
speedtest-cli --simple > output.txt
ping=$(cat output.txt | sed -ne "s/^Ping: \([0-9]*\.[0-9]*\).*/\1/p")
download=$(cat output.txt | sed -ne "s/^Download: \([0-9]*\.[0-9]*\).*/\1/p")
upload=$(cat output.txt | sed -ne "s/^Upload: \([0-9]*\.[0-9]*\).*/\1/p")

#Ponizsze tylko jezeli uruchamiacie manualnie
#echo "ping = $ping ms"
#echo "download = $download Mbps"
#echo "upload =  $upload Mbps"

#Esencja
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$pingidx&svalue=$ping";
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$downloadidx&svalue=$download";
curl "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$uploadidx&svalue=$upload";

Po zapisaniu:

sudo chmod +x /home/pi/domoticz/scripts/DomoticzPing.sh

Oraz aktualizacja Cron:
crontab -e

Dodajemy
@hourly sudo ~/domoticz/scripts/DomoticzPing.sh


5 komentarzy:

  1. Witam, monitoring łącza internetowego zaimplementowałem kilka miesięcy temu wszystko fajnie śmiga tylko jedno ale : przy zerwaniu połączenia wartości pozostają na niezmienionych poziomach i powoduje to że zerwanie połączenia internetowego na wykresach historycznych jest całkowicie nie widoczne. A w dyskusji z dostawcą internetu fajnie by było mu pokazaćc wykres kiedy łącze nie działało wcale.

    OdpowiedzUsuń
    Odpowiedzi
    1. Ciekawa kwestia. Gdyby tak kasować przed testem output.txt i zapisywać do niego domyślnie Ping: 0 ms, Download: 0 Mbits/s, Upload: 0 Mbits/s? Bo wygląda na to, że jeżeli nie ma komunikacji, plik nie jest aktualizowany.

      Usuń
    2. Jak masz pomysł na korekte skryptu to wklejaj :)

      Usuń
    3. Halo halo, a co to za lenistwo ;) ? Na przykład echo "Ping: 0 ms" > output.txt, w kolejnej linii echo "Download: 0 Mbits/s" >> output.txt i ostatnia echo "Upload: 0 Mbits/s" >> output.txt. Przetestować, dać znać czy działa :)

      Usuń
  2. 27 year-old VP Product Management Florence Noddle, hailing from Windsor enjoys watching movies like Claire Dolan and Swimming. Took a trip to Greater Accra and drives a MR2. Wiecej informacji

    OdpowiedzUsuń