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&param=udevice&idx=$idxdl&svalue=$download" >/dev/null 2>&1
wget -q --delete-after "http://$host:$port/json.htm?type=command&param=udevice&idx=$idxul&svalue=$upload" >/dev/null 2>&1
wget -q --delete-after "http://$host:$port/json.htm?type=command&param=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.

* */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.

Dodaj komentarz