Intégrer Speedtest CLI Officielle à Home Assistant

Bonjour a tous,
suite a une problème avec l’intégration Speedtest qui ne fonctionne plus chez moi. J’ai fouiller sur les forums et github pour trouver une solution. Sur github sa sens l’abandon de l’intégration et un utilisateur (Add the official speedtest cli - #40 by Britespark - Feature Requests - Home Assistant Community) a proposer une solution avec la versions CLI de speedtest. La version CLI fonctionnera mieux que l’intégration , elle est plus précise sur les données. Je vais vous expliquer comment l’installer sur un RPi ( ou NUC).

1/ Télécharger speedtest
(aarch64 pour RPi 64bits) https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-aarch64.tgz
(armhf pour RPi 32bits ) https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz merci @mak-dev
(x86_64 pour NUC) https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz merci @Pulpy-Luke
Décompresser le .tgz (Winrar).

2/ A la racine de /Config/ créer un dossier 3rdparty et dedans un dossier speedtest.
copier les 3 fichiers décompresser auparavant dans le dossier speedtest
speedtest

3/ Par le terminal SSH ou putty, aller jusqu’au dossier /Config/3rdparty/speedtest/ et taper la commande: chmod +x speedtest.
ssh

4/Exécuter un test de vitesse et accepter les licences par « yes » en tapant ./speedtest.

Voila l’exécutable est installer et configurer. Maintenant on va créer les sensors.

5/ Dans configuration.yaml copier ces sensors.

command_line:
  - sensor:
      name: "SpeedTest CLI Data"
      unique_id: speedtest_cli_data
      command: "/config/3rdparty/speedtest/speedtest --format=json --accept-license --accept-gdpr"
      #Toutes les 4 heures, 60 * 60 * 4 = 14400  3600 = 1 heure
      scan_interval: 3600
      command_timeout: 60
      value_template: >-
        {{ 
          { 
            "ping": value_json.ping.latency, 
            "download": value_json.download.bandwidth, 
            "upload": value_json.upload.bandwidth 
          }
          | to_json 
        }}
template:
  - sensor:
      - name: 'SpeedTest CLI Ping'
        unique_id: speedtest_cli_ping
        icon: mdi:speedometer
        unit_of_measurement: ms
        state_class: measurement
        state: "{{ (states('sensor.speedtest_cli_data') | from_json).ping | round(2) }}"
      - name: 'SpeedTest CLI Download'
        unique_id: speedtest_cli_download
        icon: mdi:speedometer
        unit_of_measurement: Mbit/s
        state_class: measurement
        state: "{{ ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) }}"
      - name: 'SpeedTest CLI Upload'
        unique_id: speedtest_cli_upload
        icon: mdi:speedometer
        unit_of_measurement: Mbit/s
        state_class: measurement
        state: "{{ ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(2) }}"

Edit 10/11/22:
Si vous voulez avoir plus d’information sur les serveurs utiliser, la location … vous pouvez configurer ca en rajoutant le code fournie par @monaxe ici

On sauvegarde le tout, on verifie que la configuration est valide et on reboot.
Si tout va bien vous aurez 4 nouveaux sensors.

Il vous reste plus cas créer vos propre cartes.
orange speedtest

C’est fini :partying_face:
Si vous avez un problème, n’hésiter pas a demander sur ce post.

MAJ le 09/06/23
Mise a jour du sensor command_line ( depuis le core 2023.6.0 ).

12 « J'aime »

Merci !!!
Attention aarch64 c’est bien pour les PI3/4 mais pas pour les NUC il faut prends x86-64 dans ce cas

Oui @Pulpy-Luke , je vais l’ajouter dans le tutorial. Merci

Bonsoir,
Pourrais-tu stp dire à quoi sert Speedtest sur HA?
Merci
Je viens d’aller sur le lien de @Pulpy-Luke, je ne vois pas l’intérêt de ce ‹ module › dans un système domotique.
Vous commencer à me connaître un peu, je mets l’essentiel et je reste dans les standards mais je reste curieux.
A quoi cela sert-il ?
:thinking:

Au même titre que tu peux vouloir suivre ta production solaire ou la santé de ta piscine, là ça permet d’avoir des informations sur l’efficacité de la connexion internet.

OK, merci, je comprends pour ceux qui rencontrent des problèmes sur ce point, intéressant en tous les cas comme partage :smirk:

Dans mon cas , ca mets utile pour connaitre la fiabilité de ma connexion ADSL. Vivant a la campagne, j’ai une connexion pas stable du tout et qui fait le yoyo toute la journée ( bientot la fibre, c’est en cours dans le village :partying_face:).
Quand je fait la maj du core , c’est 20min si j’ai un bon débit mais peu mettre jusqu’a 1h30 si ca va pas.
Donc avec Speedtest, ca m’évite de lancer une maj qui va durer des heures.

Débit matin
orange speedtest matin

Débit soir ( C’est bien pire encore, 1 Mbits/s en DL + 180ms en ping)
orange speedtest

1 « J'aime »

de façon extrêmement relative ! Déja le speedtest sur du pi ça ne veut pas dire grand chose car la puissance faible du processeur biaise beaucoup le résultat sans compter que de toute façon au delà du gigabit c’est mort !! en plus il faut qu’il soit configurer avec un serveur externe (éviter le réglage par défaut qui est d’utiliser le serveur speedtest du FAI par lequel tu es connecté sinon là aussi utilité à peu près nulle :smiley:
Cela reste surtout valable pour des petites connexions style ADSL :wink:

ça tombe bien, c’est aucune de mes conditions de tests ^^
Dans tous les cas, ça reste relatif, ça sert à rien de faire un test de perf toutes les minutes sauf à cramer la bande passante pour rien.
En tout cas, chez moi la fibre passe d’un truc très efficace 900 up/ 500 down et ping à 5ms à parfois un truc plus que moyen (comparé) 300 up / 150 down et ping > 20ms parfois plus de 100ms

Depuis que je test speedtest avec la version CLI, j’ai ce message toute les heures (je les régler ainsi).

Es ce que dans le sensor command_line de SpeedTest CLI Data, si j’augmente command_timeout: 60 a 120 ca règlerai le soucis ?

Je me permets d’ajouter une autre méthode à base de docker, utile si vous voulez mesurer votre débit depuis un autre point que là où est installé HA, ou bien si vous êtes en Container par exemple (comme moi).

Vous aurez besoin d’avoir un broker MQTT et d’avoir déjà ajouté l’intégration MQTT à HA car on va envoyer les résultats de speedtest-cli via MQTT.

Cette image peut être utilisée assez facilement, en suivant les indications du README.

A noter que si vous voulez faire varier la fréquence de la mesure il faudra modifier la variable d’env CRON qui par défaut est réglé sur toutes les heures.

Et ensuite sous HA, on peut ajouter dans la conf, ces lignes pour ajouter les sensors.

mqtt:
  sensor:
    - name: "speedtest.download"
      state_topic: "speedtest/download"
      unit_of_measurement: Mbit/s
      icon: mdi:speedometer      
      state_class: measurement      
    - name: "speedtest.upload"
      state_topic: "speedtest/upload"
      unit_of_measurement: Mbit/s
      icon: mdi:speedometer      
      state_class: measurement            
    - name: "speedtest.ping"
      state_topic: "speedtest/ping"
      unit_of_measurement: ms      
      icon: mdi:speedometer      
      state_class: measurement            

(Comme c’est la première fois que j’ajoute des sensors comme ça, n’hésitez pas à me dire si j’ai fait un truc de travers…)

1 « J'aime »

Merci pour le tuto, ça marche nickel. Je suis aussi en rase campagne sans fibre (un jour peut-être). Ma connexion passe par la 4G donc j’ai besoin aussi de savoir la qualité de ma connexion avant de lancer certaine tâche…

1 « J'aime »

Déja le speedtest sur du pi ça ne veut pas dire grand chose car la puissance faible du processeur biaise beaucoup le résultat

d’où tu sort ça, tu n’a pas l’air de t’y connaître en info et tu avance des choses sans savoir et sans tester !
Exemple de tester lancer aujourd’hui sur mon Pi :

  • Download Mbps : 299.63
  • Upload Mbps : 298.90

Ma connexion est du 300 Mbps (up and down), et je crois que mon Pi arrive a saturer la bande passante, non ?

Euh…

Certes. Mais, si ta connexion est d’1Gb/s alors le Pi va tousser sévèrement.

Donc, le résumé

est/était un peu hâtif sans contexte. Mais, pour tester une connexion fibre 1Gb/s, le Pi, ça va être très limite.
En plus, ça dépendra de la charge CPU en cours.

J’ai vu que certains dans ce thread avait un accès 4G, dans ce cas, le Pi suffit.

Et c’est pas précisé mais un PI3 c’est justement 300Mb de bande passante. Limite hardware …

J’ai pas de connexion internet gigabit donc je peut tester dans les même conditions mais un iperf sur le l’an donne 941mbps donc mon Pi s’en sort très bien :wink:

Et je peux surement gagné qq % en évitant de passer par la box et mon Switch entre ces deux équipements

Hello @WarC0zes,

Super tuto !
L’intégration speedtest était également en carafe sur mon instal.
Je rajouterais https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz pour les RPi 32-bits :wink:

1 « J'aime »

Techniquement c’est pas une mauvaise idée, c’est juste dommage que ce ne soit pas une image plus officielle. Si par malheur, il décide de changer le contenu de son dockerfile pour ajouter un truc, à moins de suivre ça de très près …

Attention Speedtest n’est en aucun cas de l’iperf, rien à voir au niveau fiabilité des valeurs :smiley:

C’est clair. Après je pense pas qu’on puisse compter sur speedtest pour faire une image Docker. On a déjà de la chance qu’il y ait ce cli…

Ce que je n’aime pas sur cette image c’est que sauf erreur il n’y a pas de tag autre que latest.

Après comme je sais plutôt me servir de Docker je pourrais toujours refaire une image :slight_smile:

1 « J'aime »