Galadan
Novembre 29, 2022, 2:30
102
Bon, du coup j’ai procédé comme ca:
- platform: template
sensors:
speedtest_download:
friendly_name: "SpeedTest Download"
icon_template: mdi:gauge
unit_of_measurement: 'Mbit/s'
value_template: "{{ ((states('sensor.speedtest_data') | from_json).download * 8 / 1000 / 1000) | round(2) }}"
- platform: template
sensors:
speedtest_upload:
friendly_name: "SpeedTest Upload"
icon_template: mdi:gauge
unit_of_measurement: 'Mbit/s'
value_template: "{{ ((states('sensor.speedtest_data') | from_json).upload * 8 / 1000 / 1000) | round(2) }}"
- platform: template
sensors:
speedtest_ping:
friendly_name: "SpeedTest Ping"
icon_template: mdi:gauge
unit_of_measurement: 'ms'
value_template: "{{ (states('sensor.speedtest_data') | from_json).ping | round(2) }}"
- platform: template
sensors:
speedtest_url:
friendly_name: "SpeedTest URL"
icon_template: mdi:link-variant
value_template: "{{ (states('sensor.speedtest_json') | from_json).url }}"
Mais les sensors sont en indisponible…
Dans ton sensor.yaml tu doit mettre que le code:
- platform: command_line
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
}}
la partie template ne va pas dans sensor.yaml.
Soit tu la copie dans ton configuration.yaml:
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) }}"
Soit tu créer un template.yaml , et tu copie le code:
- 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) }}"
Bonjour,
c’est compatible avec les statistiques. Patiente si tu vient de créer l’entité.
Galadan
Novembre 29, 2022, 2:45
105
ça fonctionne, je mettais planté dans le nom du sensor.command_line …
Mais du coup j’ai mis tout en mode - platform: template dans mon fichier sensor.yaml.
Si je passe avec un template.yaml, est-ce que je doit réécrire tous les - platform: template dans ce yaml?
FillR2
Novembre 29, 2022, 2:49
106
Zut, pas chez moi, pourtant j’ai des données:
J’ai mis ça dans configuration.yaml:
sensor:
##Speedtest
- platform: command_line
name: "SpeedTest CLI Data"
unique_id: speedtest_cli_data
# Use the path as configured on your system
command: "/config/3rdparty/speedtest/speedtest --format=json --accept-license --accept-gdpr "
# Every 4 hours, 60 * 60 * 4 = 14400
scan_interval: 3600
command_timeout: 60
# Summarize results to stay below string limit and convert to JSON
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
}
| to_json
}}
- platform: template
sensors:
speedtest_download:
friendly_name: "SpeedTest Download"
icon_template: mdi:gauge
unit_of_measurement: 'Mbit/s'
value_template: "{{ ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) }}"
Je suis en version 2022.11.4, la dernière
Je suis pas trop a l’aise avec les configurations couper. Si ca fonctionne pourquoi changer.
Galadan
Novembre 29, 2022, 2:52
108
En effet, c’était pour compréhension perso
Enfaite @Galadan et @FillR2 vous utiliser l’ancienne méthode Template.
Passer par la nouvelle méthode, qui est expliquer dans le tuto.
1 « J'aime »
tu utilise l’ancienne methode template peu etre c’est ca.
template:
- sensor:
- 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) }}"
FillR2
Novembre 29, 2022, 4:08
111
Merci, j’ai mis la nouvelle syntaxe et surtout ça à mon avis qui manquait:
state_class: measurement
En tout cas, ça fonctionne
Ils ont pas tenu longtemps
Orange et Lafibre.info a Marseille fonctionnent plus, je suis passer par GSL Network en attendant.
si ta 5 min tu pourrais refaire la même manip, pour me monter la nouvelle liste des serveurs vers marseille.
Merci d’avance
HaHa , la commande qui sert a rien. Super la proximité des serveurs, j’adore
il reste que GLS Network sur marseille, celui que j’utilise finalement. Good job
@WarC0zes
nouveaux serveurs
1 « J'aime »
Cool, Orange et Lafibre.net sur marseille est de retour. Merci pour l’info , je vais rebasculer dessus.
1 « J'aime »
Yoanf26
Décembre 23, 2022, 4:33
117
Hello
Merci pour ce tutoriel.
Cependant, je n’ai pas vu une petite amélioration, enfin de mon point de vue. En effet, pour éviter pour ma part d’avoir du 5540 Mbps par exemple, je préfère voir du 5,54 Gbps.
Voici mes templates :
sensor:
- platform: command_line
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,
"url": value_json.result.url
}
| to_json
}}
- platform: template
sensors:
speedtest_cli_ping:
unique_id: speedtest_cli_ping
friendly_name: 'SpeedTest CLI Ping'
icon_template: mdi:speedometer
unit_of_measurement: ms
value_template: "{{ (states('sensor.speedtest_cli_data') | from_json).ping | round(2) }}"
speedtest_cli_download:
unique_id: speedtest_cli_download
friendly_name: 'SpeedTest CLI Download'
icon_template: mdi:download-network-outline
value_template: >-
{%- set download = ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) -%}
{% if download | float > 1000 %}
{{ (download | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ download | replace('.',',') }} Mb/s
{% endif %}
speedtest_cli_upload:
unique_id: speedtest_cli_upload
friendly_name: 'SpeedTest CLI Upload'
icon_template: mdi:upload-network-outline
value_template: >-
{%- set upload = ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(2) -%}
{% if upload | float > 1000 %}
{{ (upload | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ upload | replace('.',',') }} Mb/s
{% endif %}
speedtest_url:
unique_id: speedtest_url
friendly_name: 'Speedtest Url'
icon_template: mdi:link-variant
value_template: "{{ (states('sensor.speedtest_cli_data') | from_json).url }}"
Bon je remplace aussi le point par une virgule.
Avec cette configuration, si le débit est inférieur à 1000 Mbps, la valeur est affichée en Mbps, si supérieur à 1000 Mbps, la valeur sera convertie en Gbps
Voici le résultat final
à voir si ma « petite » contribution peut vous apporter quelque chose.
1 « J'aime »
Pour un RPi3 et 4 ca ne sert a rien, vu que c’est une carte réseau 100Mbits / 1 Gbits.
J’avais fait ce tuto pour RPI a la base
Ca sera utile pour ceux qui on une grosse config, avec carte réseau 10Gbits
1 « J'aime »
Yoanf26
Décembre 23, 2022, 5:20
119
C’est pas faux
C’est vrai que j’utilise HA sur mon serveur nas custom, donc oui la carte réseau 10 Gbps est utile. Mais c’est vrai que pour la plupart des utilisateurs, cela n’est pas utile. Mais tout de même fonctionnel pour tout le monde
FillR2
Décembre 23, 2022, 10:47
120
C’est un peu hors-sujet, mais je cherche un système qui pourrait me faire l’équivalent de Speedtest, mais entre 2 serveurs HA (2 PI4 sur le même LAN).
Je cherche un truc simple, si vous avez des idées…
Herbs
Décembre 24, 2022, 12:09
121
Peut-être jeter un oeil à iperf ?
1 « J'aime »