Domoticz Speedtest – Versie 1.0

Status: Verouderd, versie 1.1 is beschikbaar.


Meten is weten, en dat geldt dus ook voor de kwaliteit van je internet-aansluiting. Als lichtelijk Speedtest-verslaafde kon ik deze plugin voor Domoticz dus niet laten liggen.

Het originele script + instructies komen van hier, ik heb het script lichtelijk aangepast en eigen instructies hieronder geschreven.

Noodzakelijk vooraf is het installeren van het script speedtest-cli. Dit doe je door een SSH-sessie te openen op je Raspberry Pi (of ander apparaat als je dat gebruikt om Domoticz op te draaien) en het volgende commando te geven; sudo apt-get install speedtest-cli

Kijk ik ben geen Linux expert, maar dit is mij nog wel gelukt 🙂 Maar heb je nou geen idee wat bedoeld wordt met SSH, Google dan even, het is te doen.

En dan het script om Speedtest in Domoticz op te nemen…

#!/bin/bash

#setup
host='localhost'

#idx for download, upload and ping
idxpng=1
idxdl=2
idxul=3

# no need to edit
speedtest-cli --simple > speedtest.txt

png=$(cat speedtest.txt | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p')
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')

# output if you run it manually
echo "Ping =  $png ms"
echo "Download = $download Mbps"
echo "Upload =  $upload Mbps"

# Updating download, upload and ping ..
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxpng&svalue=$png" >/dev/null 2>&1
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxdl&svalue=$download" >/dev/null 2>&1
wget -q --delete-after "http://$host/json.htm?type=command&param=udevice&idx=$idxul&svalue=$upload" >/dev/null 2>&1

# Domoticz logging
wget -q --delete-after "http://$host/json.htm?type=command&param=addlogmessage&message=speedtest.net-logging" >/dev/null 2>&1


Bij mijzelf heb ik dit script opgeslagen op de Raspberry PI waarop Domoticz draait onder /home/pi/domoticz/scripts/speedtest.sh (maar dit mag natuurlijk ook een andere locatie zijn, bij mij wordt deze zo meegenomen in de automatische backup van Domoticz). Vervolgens heb ik het script gescheduled middels cronjob, waarbij het script ieder uur wordt gedraaid.

Belangrijk is het om voorafgaand aan het schedulen eerst in Domoticz drie virtuele sensors aan te maken. Dit doe je door onder Hardware een nieuw item aan te maken van het type Dummy. Bij mij heeft deze eenvoudigweg de naam “Speedtest” gekregen.

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 het scherm “Apparaten” en zoek hierin de zojuist aangemaakte sensoren op. Vul in het script de IDX-waardes in die je hier bij de sensoren hebt staan.

In het script geldt hierbij;
idxpng = de IDX voor Ping (je vervangt dus de 1)
idxdl = de IDX voor Download (je vervangt dus de 2)
idxul = de IDX voor Upload (je vervangt dus de 3)

Als je dit allemaal goed hebt doorlopen, dan moet je binnen het uur de waarden van je eerste metingen in Domoticz gaan terug zien.

Heb je het script inmiddels langer draaien (bij mij draait dit inmiddels al een aantal weken) dan zijn overzichten zoals dit beschikbaar;

Overzicht Speedtest van de afgelopen 3 dagen (klik voor vergroting)

12 reacties

  1. Foutje in script geconstateerd:

    wget … type=command¶m=udevice … >/dev/null 2>&1

    moet zijn:

    wget … type=command&param=udevice&idx … >/dev/null 2>&1

    (3 keer)

    Na gecorrigeerd te hebben werkt het prima, bedankt!

  2. Uiteraard hoeft “host” niet perse localhost te zijn.

    Heb speedtest-cli en je script op de Linux server geïnstalleerd die direct aan internet hangt, en laat de wget commando’s afleveren op mijn domoticz server verderop in mijn lokale netwerk.

    Bovendien gebruik van ‘encrypted’ username en wachtwoord voor de wget connectie toegevoegd.

    Werkt als een trein.

    Thanks

    • Klopt, ik ga er in dit script vanuit dat het script gedraaid wordt vanaf dezelfde server als waarop je Domoticz draait. Hoeft natuurlijk helemaal niet.

      Code van jouw aanpassingen zijn altijd welkom ter informatie en inspiratie natuurlijk 🙂

      • Ik ben er nog mee bezig ….. Ik zat me alleen nog één ander ding af te vragen, zonder dat ik er al diep ingedoken ben: als speedstest-cli faalt om de file speedtest.txt met nieuwe waarden te vullen (bijvoorbeeld vanwege verbroken internet connectie), dan blijven de 3 variabelen leeg (geen waarde), en die worden dan leeg naar Domoticz gestuurd. Eigenlijk geen idee hoe Domoticz daar op gaat reageren.

        Eigenlijk zou ik het misschien zelfs wel netjes vinden om de 3 variabelen op zo’n moment allemaal de waarde 0 mee te geven …. Dat geeft dan ook gelijk aan dat er iets aan de hand is.

        • Hoi Patrick, je kunt daarvoor het script als volgt aanpassen.
          Na de regel
          speedtest-cli –simple > speedtest.txt

          Toevoegen:
          if [ “$?” -ne “0” ]; then
          png=0
          upload=0
          download=0
          else
          png=$(cat speedtest.txt | sed -ne ‘s/^Ping: \([0-9]*\.[0-9]*\).*/\1/p’)
          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’)
          fi

          (Uiteraard de 3 regels die nu in de “else”-tak staan niet nog een keer uitvoeren. Dus weghalen uit het originele script)

  3. Ik heb het script al sinds 2 september 2019 in gebruik maar ergens is er 27-9 wat misgegaan.
    Ik vermoed met de applicatie want ineens geeft mijn speedtest nog maar 4mb upload ipv 40.

    Mijn collega heeft toevallig hetzelfde euvel dus ik ben benieuwd of jullie dit herkennen?

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

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