Steenderen.NET

Domoticz Speedtest – Versie 1.1

Status: Dit is de laatste versie van dit script.

Beschrijving

Script voor het automatisch controleren van je internet-aansluiting op de ping-, download- en upload-snelheid, en het weergeven hiervan in Domoticz.

Update

Verbeterde versie van versie 1.0 van dit script. De update van mijn Raspberry Pi naar de laatste versie van Raspbian zorgde ervoor dat diverse onderdelen van het script niet meer werkte. Deze versie zorgt dat alles weer werkt.

Setup variabelen aangepast zodat deze logischer en leesbaarder qua naamgeving zijn.

Code volledig opgeschoond, gestructureerd en verbeterd.

Tijdelijk bestand wordt aangemaakt op standaard tijdelijke locatie en aan het einde van het script voortaan ook opgeruimd.

Meer details in logging naar Domoticz toegevoegd.

LET OP! Onderstaand script gaat nu uit van speedtest-cli geïnstalleerd via PIP, aangezien de installatie via apt-get een verouderde versie installeert, waarbij de test-resultaten niet meer correct zijn. Zie installatie-instructie onderaan voor meer details.

Code

#!/bin/bash

# Setup variables.
DOMOTICZ_SERVER="x.x.x.x:yy"     # IP-adres:Poort van je Domoticz server
IDX_PING=1                       # IDX voor ping-snelheid
IDX_DOWNLOAD=2                   # IDX voor download-snelheid
IDX_UPLOAD=3                     # IDX voor upload-snelheid

# No need to edit below here.
echo "Start running speedtest script."

# Create temp-directory if it does not already exists.
TEMP_DIR="/home/pi/temp"

if [ -d $TEMP_DIR ] ; then
    echo "- Temp-directory already exists, no need to create it."
else
    echo "- Temp-directory does not exists, creating it now."
    /bin/mkdir $TEMP_DIR
fi

TEMP_FILE=$TEMP_DIR/speedtest.txt

# Perform speedtest.
echo "- Performing speedtest."
/home/pi/.local/bin/speedtest-cli --simple > $TEMP_FILE

# Handle results of speedtest.
PING=$(cat $TEMP_FILE | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p')
DOWNLOAD=$(cat $TEMP_FILE | sed -ne 's/^Download: \([0-9]*\.[0-9]*\).*/\1/p')
UPLOAD=$(cat $TEMP_FILE | sed -ne 's/^Upload: \([0-9]*\.[0-9]*\).*/\1/p')

echo "- Results of speedtest:"
echo "  - Ping =  $PING ms"
echo "  - Download = $DOWNLOAD Mbps"
echo "  - Upload =  $UPLOAD Mbps"

# Update download, upload and ping values in Domoticz.
echo "- Updating download, upload and ping values in Domoticz."
wget -q --delete-after "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$IDX_PING&svalue=$PING" >/dev/null 2>&1
wget -q --delete-after "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$IDX_DOWNLOAD&svalue=$DOWNLOAD" >/dev/null 2>&1
wget -q --delete-after "http://$DOMOTICZ_SERVER/json.htm?type=command&param=udevice&idx=$IDX_UPLOAD&svalue=$UPLOAD" >/dev/null 2>&1

# Remove temp file.
echo "- Removing temp file."
/bin/rm $TEMP_FILE

# Domoticz logging.
echo "- Writing log to Domoticz."
wget -q --delete-after "http://$DOMOTICZ_SERVER/json.htm?type=command&param=addlogmessage&message=Speedtest script finished with results: Ping: $PING ms, Download: $DOWNLOAD Mbps, Upload: $UPLOAD Mbps." >/dev/null 2>&1

# Done!
echo "Done running speedtest script."

Installatie-instructies

Oude versie speedtest-cli verwijderen

Deze stap mag worden overgeslagen wanneer je dit script voor het eerst installeert.

Om bovenstaand script goed te laten werken, dient speedtest-cli geïnstalleerd te zijn op je Raspberry Pi. Bij het oude script werd gebruik gemaakt van de versie die werd geïnstalleerd via APT-GET. Mocht je die versie nog geïnstalleerd hebben staan, dan kan je deze het beste eerst deïnstalleren met het volgende commando;

sudo apt-get uninstall speedtest-cli

PIP installeren

PIP is een package manager uit de hoek van Python. Zonder duidelijke reden wordt vanuit PIP wel de nieuwste versie van speedtest-cli geïnstalleerd. Om PIP hiervoor te kunnen gebruiken, dient dit eerst geïnstalleerd te worden via de volgende twee commando’s;

sudo apt-get update
sudo apt-get install python-pip

Nieuwe versie speedtest-cli installeren

Als PIP is geïnstalleerd, dan kan speedtest-cli vervolgens geïnstalleerd worden middels het volgende commando;

pip install speedtest-cli

Rebooten

En na het installeren van de nodige nieuwe packages is het altijd goed om even te rebooten;

sudo reboot

Virtuele sensoren aanmaken in Domoticz

Deze stap mag worden overgeslagen wanneer je de oude versie van dit script al gebruikte.

In Domoticz dienen drie virtuele sensoren aangemaakt te worden. Deze zullen met bovenstaand script worden gevuld met de waardes van de speedtest-resultaten.

Ga in Domoticz naar Instellingen en vervolgens naar Hardware. Maak onder aan de pagina een nieuw item aan met de naam Speedtest van het type Dummy.

Als je deze hebt aangemaakt kan je in hetzelfde scherm vervolgens op de knop Maak virtuele sensoren klikken. Doe dit drie keer en maak sensoren aan het type “Custom”. Geef deze de namen Ping, Download en Upload.

Ga nu naar Instellingen en vervolgens naar Apparaten en zoek in dit scherm de zojuist aangemaakte sensoren op. Deze hebben alle drie een eigen IDX-nummer (eerste kolom in de tabel). Deze IDX-nummers heb je zo nodig om in te vullen in het script.

Script plaatsen en configureren

Inmiddels hanteer ik de standaard om alle script t.b.v. Domoticz te plaatsen in de folder /home/pi/domoticz/scripts. Dus ik adviseer je om hetzelfde te doen met dit script, maar verplicht is het natuurlijk niet. Sla het bestand op onder de naam speedtest.sh.

In het begin van het script zijn er vier variablen die je zelf dient in te vullen;

Bij DOMOTICZ_SERVER vul je op de plaats van x.x.x.x:yy het IP-adres en de gebruikte poort in van Domoticz. Draai je dit script op de Raspberry Pi waarop je ook Domoticz draait en werkt je op de standaard poort van Domoticz, dan kan je hier localhost:8080 invullen.

Bij IDX_PING, IDX_DOWNLOAD en IDX_UPLOAD vul je de IDX-nummers in die je in de vorige stap hebt aangemaakt en opgezocht.

Schedulen van het script

Om het script op gezette tijden te laten draaien en dus met regelmaat je internet-aansluiting te testen, dien je deze als laatste nog te schedulen (dat is goed Nederlands voor inplannen).

Mocht je niet bekend zijn met crontab, dan adviseer ik je hier even op te Googlen. Voor het aanpassen van je cronjobs gebruik je het volgende commando;

crontab -e

Bij mijzelf laat ik het script 1 keer per uur draaien, precies in het midden van elk uur. De regel hiervoor in crontab ziet er alsvolgt uit;

30 * * * * /home/pi/domoticz/scripts/speedtest.sh

Hoe jij dit wilt inplannen moet je uiteraard zelf weten, maar vaker dan 1 keer per uur heeft in ieder geval weinig zin.

Testen en wachten

Als je alle stappen goed hebt uitgevoerd, dan ben je klaar. Binnen een uur zou je de eerste resultaten in Domoticz moeten zien verschijnen. Mocht je nou niet kunnen wachten (kan ik mij zo maar voorstellen), dan kan je met het volgende commando handmatig het script draaien;

bash /home/pi/domoticz/speedtest.sh

Zodra het script klaar is (duurt onveer 30 seconden), zou je de eerste waardes in Domoticz moeten terugzien.

Verder Bericht

Vorige Bericht

Laat een reactie achter

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

© 2020 Steenderen.NET

Thema door Anders Norén