Prosty skrypt na bazie speedtest.net. Skrypt testujący download, upload oraz ping. Najszybszy, najprostszy „czujnik” bez hardware na Domoticz.
Co będzie nam potrzebne?
Domoticz zainstalowany na naszym Raspberry Pi, biblioteki speed testa.
Najpierw musimy zalogować się na nasz Domoticz i dodać wirtualne czujniki.
Sprzęt -> konfiguracja -> Nazwa „Wirtualne”, typ: Dummy; Dodajemy.
Następnie na liście pojawi nam się nowe urządzenie klikamy:
Utwórz wirtualne czujniki -> Nazwa: Internet Download; Typ -> Custom Sensor; Etykieta Axis -> Mbp/s
Utwórz wirtualne czujniki -> Nazwa: Internet Upload; Typ -> Custom Sensor; Etykieta Axis -> Mbp/s
Utwórz wirtualne czujniki -> Nazwa: Internet Ping; Typ -> Custom Sensor; Etykieta Axis -> ms
Następnie przechodzimy do urządzeń: Konfiguracja -> Urządzenia, gdzie możemy znaleźć nasze wirtualne czujniki oraz najważniejsze IDX czujników.
Teraz przechodzimy do terminala i logujemy się na nasze Raspberry Pi.
Na początek warto zrobić update:
sudo apt-get update sudo apt-get upgrade
Pobrać biblioteki Speed Test:
sudo apt-get install speedtest-cli
Teraz robimy sobie skrypt w folderze domoticz/scripts/
cd domoticz/scripts/ sudo nano speedtest.sh
Wklejamy kod
#!/bin/bash #setup host='localhost' port='8080' idxdl=1 idxul=2 idxpng=3 # serverst=xxxx speedtest-cli --simple > speedtest.txt download=$(cat speedtest.txt | sed -ne 's/^Download: \([0-9]*\.[0-9]*\).*/\1/p') upload=$(cat speedtest.txt | sed -ne 's/^Upload: \([0-9]*\.[0-9]*\).*/\1/p') png=$(cat speedtest.txt | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p') echo "Download = $download Mbps" echo "Upload = $upload Mbps" echo "Ping = $png ms" wget -q --delete-after "http://$host:$port/json.htm?type=command¶m=udevice&idx=$idxdl&svalue=$download" >/dev/null 2>&1 wget -q --delete-after "http://$host:$port/json.htm?type=command¶m=udevice&idx=$idxul&svalue=$upload" >/dev/null 2>&1 wget -q --delete-after "http://$host:$port/json.htm?type=command¶m=udevice&idx=$idxpng&svalue=$png" >/dev/null 2>&1 # Domoticz logging wget -q --delete-after "http://$host:$port/json.htm?type=addlogmessage&message=speedtest.net-logging" >/dev/null 2>&1
Pod idxdl dajemy IDX naszego czujnika od Downloadu, idxul – czujnik od Uploadu idxpng – czujnik ping.
Jeśli chcemy robić test z jakimś innym serwerem niż domyślny usuwamy # i zamiast xxxx podajemy ID serwera. Lista serwerów znajduje się tutaj.
Zapisujemy ctrl + x, następnie y oraz enter.
Dodajemy do Crona nową instrukcję.
sudo crontab -e
Na dole dodajemy nową instrukcję np. test łącza co 6 godzin.
0 */6 * * * sh /home/pi/domoticz/scripts/speedtest.sh
Teraz co 6 godzin nasza malinka będzie robić test łącza. Skrypt na bazie skryptu ze strony Domoticz.
test będzie co 6h, ale będzie się wykonywał przez całą godzinę
powinno być
0 */6 * * * sh /home/pi/domoticz/scripts/speedtest.sh
Racja. Dzięki za czujność 🙂