Intégrer Speedtest CLI Officielle à Home Assistant

il existe aussi la soluc de l’iframe, simple et rapide
type: iframe
url: https://www.metercustom.net/plugin/
aspect_ratio: 85%

Salut,
Y a t’il une liste des serveurs avec ID?
car avec la commande ./speedtest -L ca me donne que les serveurs a proximité et habitant dans l’aude je n’est que deux serveurs en france ( toulouse ) et le reste en espagne et andorre avec des ping et debit moyen.
J’aimerais avoir un serveur orange 10gbits sur marseille.

Salut @WarC0zes

A priori le mieux qu’on puisse faire en CLI c’est le « -L » :confused:

Par contre en fouinant un peu ce matin j’ai trouvé un serveur sur Marseille qui devrait faire l’affaire pour toi.

LaFibre.info - Marseille (id: 4036)

Tu nous diras si ça le fait :wink: ?

[EDIT] Pas encore complétement réveillé, je viens de voir que tu cherchais un serveur « Orange ». J’ai pas trouvé, mais je peux chercher encore un peu :wink:

1 « J'aime »

Ca l’air bon celui de LaFibre.info - Marseille (id: 4036). J’ai full speed ( du rpi3 B ) en dl et up. je vais modifier la command avec ce ID.
Je vais tester quelque jours celui la. Merci @Herbs
speedtest fibre marseille

Edit:
je suis tomber sur la même liste que ton lien, j’ai essayer sur perpignan un 10Gbits mais ca pas fonctionner alors j’ai pas plus approfondie.

Yep, j’ai testé aussi mais il y a quelques serveurs dans la liste qui semblent « down » :wink:

J’ai tester les plus proches ( dans le sud ) en 10Gbits, ils sont tous down.
LaFibre.info 10Gb/s - Marseille (id: 4036) est stable chez moi, j’aurais pas mieux :grin:
Pour les sudistes passer par ce serveur :wink:

Edit:
@ClassicRed tu pourrais partager le résultat de la command: ./speedtest -L ?
Comme je vois sur ton test de débit (ici) un serveur de nice et que la command ./speedtest -L ne montre que les serveurs a proximité, je pourrais voir les serveurs dispo sur marseille.

Re

J’ai pas de retour avec ta commande
Capture d’écran

Ne connaissant pas ton installation, la commande peu varier. Bizarre que ça fonctionne pas. Merci quand même :wink:

Si tu ne te trouves pas dans la directory où se situe le binaire c’est normal que ça ne fonctionne pas.

Donc soit :

/config/3rdparty/speedtest/speedtest -L

Ou se déplacer dans le directory et lancer la commande :

cd /config/3rdparty/speedtest/
./speedtest -L

@WarC0zes

@Herbs
Merci la commande qui passé est

cd /config/3rdparty/speedtest/
./speedtest -L

je tapé ls ou lieux de cd !! y 'a des jours ou je suis un
ane-animal-totem-esprit-animal-bourrique-ane

1 « J'aime »

Trop bon, les serveurs de Marseille dont un d’orange :grin:
Merci @ClassicRed

@WarC0zes

mais de rien :wink:

C’est quand même dommage de devoir demander a une personne dans c’est zone pour avoir les serveurs disponible avec leur ID. Car impossible de trouver une liste de serveur a jour sur le net.

Au final pour moi, le serveur ORANGE FRANCE (id: 29545) a Marseille est le meilleur pour le ping et LaFibre.info (id: 4036) a Marseille est le meilleur pour le débit dl/up.

1 « J'aime »

Vous avez trouvez un moyen de récupérer l’URL de résultat ?

J’ai testé en ajoutant cette ligne dans le sensor (dernière ligne):

    value_template: >-
      {{ 
        { 
          "ping": value_json.ping.latency, 
          "download": value_json.download.bandwidth, 
          "upload": value_json.upload.bandwidth, 
          "isp": value_json.isp,
          "country": value_json.server.country,
          "location": value_json.server.location,
          "id": value_json.server.id,
          "server_name": value_json.server.name,
          "server_host": value_json.server.host,
          "result": value_json.result.url,
        }
        | to_json 
      }}

Et ces lignes dans le template :

    - name: 'Speedtest CLI URL'
      unique_id: Speedtest_URL
      state: "{{ (states('sensor.speedtest_cli_data') | from_json).result | round(2) }}"

Je me suis basé sur un test manuel avec export json :

Savez-vous également ou est stocké le json ?

Salut @Guizmos

Ouais :

image

Avec 2 corrections sur ton code ça devrait passer :

Pas certain mais je crois que la virgule sur la ligne « result » est de trop.

value_template: >-
      {{ 
        { 
          "ping": value_json.ping.latency, 
          "download": value_json.download.bandwidth, 
          "upload": value_json.upload.bandwidth, 
          "isp": value_json.isp,
          "country": value_json.server.country,
          "location": value_json.server.location,
          "id": value_json.server.id,
          "server_name": value_json.server.name,
          "server_host": value_json.server.host,
          "result": value_json.result.url
        }
        | to_json 
      }}

et pour le sensor je dirai que le round(2) est de trop également :

- name: 'Speedtest CLI URL'
  unique_id: Speedtest_URL
  state: "{{ (states('sensor.speedtest_cli_data') | from_json).result }}"

Merci pour ta réponse, mais je n’obtiens rien de concluant.

Template:

    - name: 'Speedtest CLI URL'
      unique_id: Speedtest_URL
      state: "{{ (states('sensor.speedtest_cli_data') | from_json).result }}"

Template complet :

template:
  - sensor:
    - name: 'SpeedTest CLI Ping'
      unique_id: speedtest_cli_ping
      icon: mdi:speedometer
      # TIME_MILLISECONDS: Final = "ms"
      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
      # DATA_RATE_MEGABITS_PER_SECOND: Final = "Mbit/s"
      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) }}"
    - name: Speedtest ISP
      unique_id: Speedtest_ISP
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).isp) }}'
    - name: Speedtest Server Name
      unique_id: Speedtest_Server_Name
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).server_name) }}'
    - name: Speedtest Server Host
      unique_id: Speedtest_Server_Host
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).server_host) }}'      
    - name: Speedtest country
      unique_id: Speedtest_country
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).country) }}'
    - name: Speedtest id
      unique_id: Speedtest_id
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).id) }}'
    - name: Speedtest location
      unique_id: Speedtest_location
      state: '{{ ((states("sensor.speedtest_cli_data") | from_json).location) }}'
    - name: 'Speedtest CLI URL'
      unique_id: Speedtest_URL
      state: "{{ (states('sensor.speedtest_cli_data') | from_json).result }}"

Sensor:

    value_template: >-
      {{ 
        { 
          "ping": value_json.ping.latency, 
          "download": value_json.download.bandwidth, 
          "upload": value_json.upload.bandwidth, 
          "isp": value_json.isp,
          "country": value_json.server.country,
          "location": value_json.server.location,
          "id": value_json.server.id,
          "server_name": value_json.server.name,
          "server_host": value_json.server.host,
          "result": value_json.result.url
        }
        | to_json 
      }}

Tous mes sensors passent en unavailable:

Ça donne quoi dans les outils de dev ?

{{ states('sensor.speedtest_cli_data') | from_json }}

le problème vient du sensor.
Si j’ajoute la ligne :

          "result": value_json.result.url

Plus rien ne fonctionne et j’obtiens cette erreur dans l’outil de dev:

error

Bonjour @Guizmos
si tu a un broker MQTT, un utilisateur (Add the official speedtest cli - #48 by adorobis - Feature Requests - Home Assistant Community) a créer une intégration https://github.com/adorobis/speedtest-CLI2mqtt
qui intègre tout sur speedtest, dont l’URL.

Salut @WarC0zes
Je vais tester ça en parallèle.
C’est bizarre car l’URL fonctionne chez @Herbs
Il doit forcément avoir un paramètre quelque part qui me bloque