indeed, mais il faut pas penser que le Pi(4) n’est pas costaud et qu’il ne tiens pas la charge…
Merci WarC0zes pour ce tuto, je n’avais pas vu que sur ma page système, les valeurs de speed test ne s’affichaient plus.
Message recu d’orange c’est aprem qui fait plaisir « Vous êtes élligible a la fibre » .
2Gbits / 800mbits contre actuellement 9mbits / 1mbits
Le RPi va plus suivre avec speedtest
En même temps 2Gb, c’est quand même vachement marketing…
Mais ça va clairement te changer la vie
Salut tout le monde,
Je vais me permettre d’y aller avec ma méthode
En préambule je tiens à préciser que mon HA tourne dans un container « podman » et qu’il est posé sur une machine avec une carte ethernet 1Gb/s.
A côté de ça je dispose d’un serveur proxmox qui lui possède une carte en 2.5Gb/s.
Enfin je suis fibré par free en 8Gb/s (#marketing)
Bref je voulais que le test se fasse depuis proxmox.
- Pour ça j’ai installé speedtest-cli dans un container lxc (debian 11).
sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest
- Maintenant le script.
Prérequis avoir la possibilité de faire du « scp » entre proxmox et la machine hébergeant le container HA.
#!/bin/bash
#set -x
cmd='/usr/bin/speedtest -s 45446 -f json' # la commande speedtest avec l'id du serveur de test que j'ai sélectionné
file='/var/log/speedtest.json' # le chemin du fichier que le test va nous générer
dest='/xxxxx/config/custom_things/speedtest' # le chemin de la conf sur le host HA
key='/home/xxxxxx/.ssh/id_ed25519' # la clé ssh qui va bien
port='xxxx' # le port ssh personnalisé de ma config ssh sur le host HA
toto='xxxxx@192.168.x.xx' # Un bout de la commande scp avec user@ip_host_ha
lxc-attach -n 108 -- $cmd > $file # La commande qui permet d'exécuter des commande depuis le Host proxmox dans le CT lxc
# 108 l'id du CT lxc où est installé speedtest-cli
ping -c 4 192.168.x.xx # là je fais un ping du host HA pour être certain qu'il est up
rping=$?
if [ $rping == 0 ]
then
scp -i $key -P $port $file $toto:$dest # le scp qui va envoyer le fichier généré lors du test sur le host HA
else
echo "toto indisponible"
fi
Le script se lance en crontab toutes les 4 heures :
0 */4 * * * /le_chemin_du_script/speedtest_to_ha.sh >/dev/null 2>&1
- Les sensors HA :
### speedtest
- platform: file
name: Speedtest Down Speed
file_path: /config/custom_things/speedtest/speedtest.json
value_template: '{{ (value_json.download.bandwidth * 8 / 1000 / 1000) | round(2) }}'
unit_of_measurement: "Mbit/s"
- platform: file
name: Speedtest Up Speed
file_path: /config/custom_things/speedtest/speedtest.json
value_template: '{{ (value_json.upload.bandwidth * 8 / 1000 / 1000) | round(2) }}'
unit_of_measurement: "Mbit/s"
- platform: file
name: Speedtest Ping
file_path: /config/custom_things/speedtest/speedtest.json
value_template: '{{ value_json.ping.latency | round(2) }}'
unit_of_measurement: "ms"
- Et enfin l’aperçu côté dashboard :
C’est en prod depuis hier, j’ai encore à améliorer le script pour la gestion des erreurs et éventuellement mettre en place des logs.
Mais sur le principe ça roule
Merci à @WarC0zes pour avoir mis ce sujet en avant !!!
Juste une question de curiosité pourquoi lxc pour le container speedtest et podman pour HA ?
Et pourquoi faire du scp et pas juste monter le fichier json dans le container ?
Le container lxc est sur mon promox/serveur principal.
Et podman sur une autre machine parce que :
- Au travail une partie de notre infra va migrer sous kubernetes/podman et c’était un peu histoire de prendre un peu d’avance et surtout la curiosité d’apprendre.
- Et toute ma domotique (HA et ses connexes) sont sur cette machine physique dédiée.
Comme il s’agit de 2 serveurs différents et que l’un (proxmox) est équipé d’une carte 2.5Gb j’ai décidé de faire le test sur le serveur principal.
Par conséquent il fallait trouver un moyen d’expédier le fichier vers la machine où tourne HA d’où le scp.
Et là je le dépose dans le dossier /config que je monte dans le container HA.
J’espère avoir répondu à tes questions, si tu en as d’autre ou que je n’ai pas été assez clair n’hésites pas à me le dire
Merci j’avais loupé ce point ! Ca devient d’un coup plus logique !
Effectivement c’était une info importante
Là où ma mécanique est un peu bizarre c’est que j’aurait pu côté proxmox, tout internaliser dans le container lxc.
Mais j’ai pris l’habitude de désactiver le ssh interne aux containers lxc, et par conséquent le ssh n’est dispo que depuis le host proxmox.
Bonjour WarC0zes,
Je viens de suivre votre guide d’installation, même sans compétence informatique, ça fonctionne parfaitement.
je trouve la carte plutôt sympathique, pouvez vous nous donner les infos pour la réaliser.
Merci d’avance
Voici le code de la carte. Adapter a vos besoin. Il vous faudras installer les cartes bar-card, mini-graph-card, stack-in-card et card-mod.
type: custom:stack-in-card
mode: vertical
keep:
box_shadow: true
margin: true
border_radius: true
background: true
outer_padding: false
cards:
- type: custom:bar-card
entities:
- entity: sensor.speedtest_cli_download
name: Orange Speed Download
icon: fas:download
color: '#336600'
positions:
icon: inside
minmax: inside
animation:
state: 'on'
speed: '1'
min: '0'
max: '9'
height: 27px
- entity: sensor.speedtest_cli_upload
direction: right
name: Orange Speed Upload
icon: fas:upload
color: rgb(250, 0, 1)
positions:
icon: inside
minmax: inside
animation:
state: 'on'
speed: '1'
min: '0'
height: 27px
max: '0.9'
decimal: '2'
animation:
state: 'on'
speed: '3'
style: |
ha-card {
font-size: 15px;
}
ha-card {
--bar-card-border-radius: 0px;
}
positions:
indicator: 'off'
entity_row: true
- type: custom:mini-graph-card
decimals: 0
hour24: true
height: 40
hours_to_show: 24
points_per_hour: 2
line_width: 2
entities:
- entity: sensor.speedtest_cli_ping
name: Orange Ping
show:
fill: true
graph: line
icon: true
name: true
state: true
labels: false
extrema: false
average: false
icon_adaptive_color: true
align_icon: right
align_state: left
font_size: 55
animate: true
color_thresholds:
- value: 30
color: '#336600'
- value: 50
color: '#f39c12'
- value: 70
color: '#d35400'
- value: 90
color: '#c0392b'
style: |
ha-card .header.flex .name.flex {
color: #44739e;
font-size: 14px;
}
.header.flex .icon {
--mdc-icon-size: 28px;
}
:host {
--card-mod-icon-color: #44739e;
}
.fill {
fill: white;
opacity: 1 !important;
}
Je viens de mettre en place vos recommandations, tout est opérationnel.
Merci beaucoup!
Bonsoir,
enfin passer a la fibre j’ai dessuite voulu tester speedtest sur mon rpi3 B.
Voile le resultat . En théorie je devrais fait du 100/100mbits mais j’ai la moitié en dl.
Il y a t’il des réglages sur le rpi pour optimiser la vitesse réseau ?
Edit:
peu être mon câble réseau qui est pas bon, je vérifierais demain.
Edit 2:
Avec un autre câble réseau j’ai gagner du débits. 70 / 88 mbits
Hello
De mémoire le RPI est au max a 300 Mbps
Ca depend du Pi
Tu peut atteindre ces niveau (pas fait par moi et via iperf ) :
- 3B: 94.8 Mbps
- 3B+: 224 Mbps
- 4B: 933 Mbps
Moi l’iperf avec le Pi4 en réseau local me donne 939 Mbits/sec
Ok, merci @roumano pour ces précisions.
Bonjour, est ce qu’il y aurait moyen de reprendre le nom du serveur ?
(server_name ou isp )
J’ai ajouté ceci :
- name: Speedtest ISP
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).isp) }}"
- name: Speedtest Server Name
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).server_name) }}"
Mais ne fonctionne pas, une idée ?
Hello
As tu essayé comme ceci
- name: Speedtest ISP
state: '{{ state_attr("sensor.speedtest_ping", "isp") }}'
- name: Speedtest Server Name
state: '{{ state_attr("sensor.speedtest_ping", "server_name") }}'
Ne fonctionne pas non plus et même quand je change avec le nom de mon sensor.
Salut,
Il faut aussi mettre à jour le value_template
du sensor command_line
pour qu’il contienne les champs que tu souhaites.
Pour l’instant, le sensor renvoie un JSON ne contenant que ping
, download
et upload
.