Hello,
Comme vous, j’ai noté que le plugin Speedtest donne des résultats plutôt discutables. La cause étant l’utilisation d’une version totalement obsolète de speedtest-cli.
J’ai commencé par vouloir adapter le plugin à la version fournie par Ookla mais ça n’a pas été une réussite.
J’ai donc adapté un script Domoticz pour venir peupler un virtuel avec les résultats.
Avant toute chose si vous utilisez le plugin speedtest, il vaut mieux le supprimer (ou au moins le désactiver), puis désinstaller la commande speedtest-cli de la façon suivante:
sudo pip3 uninstall speedtest-cli
1 Installer la version de speedtest en ligne de commande comme indiqué sur cette page:
2 Créer un virtuel avec les 4 infos numériques suivantes:
Relevez bien les ID des commandes, ainsi que la clé API du plugin virtuel (Système / configuration / API)
3 Installer « jq » qui va servir à parser le résultat de la commande speedtest
sudo apt install jq
4 Créer le script suivant en oubliant pas de renseigner les ID des lignes 9, 10, 11 et 12 ainsi que la clé API en ligne 15.
#!/bin/bash
# define jeedom host & port
host=127.0.0.1
port=80
# define IDs for jeedom virtual commands
# Download ID, Upload ID, Ping ID, Jitter ID
idxdl=10461
idxul=10462
idxpng=10463
idxjit=10464
# Virtual plugin APIKEY
apikey="xxxxxxxxxxxxx"
# define location for file
file=~/ookla.json
# execute the speedtest and store result.
sudo /usr/bin/speedtest --accept-license --accept-gdpr -f json-pretty > $file
downraw=$(jq -r '.download.bandwidth' $file)
download=$(printf %.2f\\n "$((downraw * 8))e-6")
upraw=$(jq -r '.upload.bandwidth' $file)
upload=$(printf %.2f\\n "$((upraw * 8))e-6")
png=$(jq -r '.ping.latency' $file)
jit=$(jq -r '.ping.jitter' $file)
#output (debug - command line)
echo "download = $download Mbps"
echo "upload = $upload Mbps"
echo "ping = $png ms"
echo "jitter = $jit ms"
# upload result to jeedom
curl "http://$host:$port/core/api/jeeApi.php?apikey=$apikey&type=virtual&id=$idxdl&value=$download" > /dev/null 2>&1
curl "http://$host:$port/core/api/jeeApi.php?apikey=$apikey&type=virtual&id=$idxul&value=$upload" > /dev/null 2>&1
curl "http://$host:$port/core/api/jeeApi.php?apikey=$apikey&type=virtual&id=$idxpng&value=$png" > /dev/null 2>&1
curl "http://$host:$port/core/api/jeeApi.php?apikey=$apikey&type=virtual&id=$idxjit&value=$jit" > /dev/null 2>&1
Ca devrait donner ça :
Penser à définir un scénario programmé pour le lancement régulier du script. Ne soyez pas trop agressif
Vous devriez obtenir ceci après au moins un lancement.
(sachant que je plafonnais au tiers de ces valeurs avec le plugin)
M