Auteur Sujet: Partage d'expérience, suivi débit ivia Speedtest (Python, csv et PowerBI)  (Lu 293 fois)

0 Membres et 1 Invité sur ce sujet

OlivierC91

  • Client K-Net
  • *
  • Messages: 28
  • Limours 91
Bonjour,

Je vous propose le petit tuto suivant qui permet le suivi journalier de votre débit internet dans un fichier au format csv et un rendu graphique dans un PowerBI.
Si pas de PowerBI, vous pouvez adapter avec Excel.
Je ne suis pas un développeur et donc les scripts sont certainement très perfectibles :-)

Mon FAI est K-NET et j'utilise mon propre routeur Unifi Security Gateway.
Tous mes équipements réseaux sont en Unifi (Routeur, borne wifi, switch) et donc piloté via un controleur Unifi installé sur un raspberry PI.
L'interface WEB du controleur Unifi inclu un speedtest mais pour ceux qui connaissent, la version de speedtest intégré dans le code est obsèlete et ne gère pas bien les débits d'une
connexion Fibre.
Le besoin est donc assez simple :
Afficher, controler et historiser le débit de ma connexion internet Fibre.

Prérequis :
- Controleur Unifi (Raspberry ou UDM/Pro)
- NAS Synology (ou autre)
- Abonnement Cloud (Azure, Aws ou autre) -> pas obligatoire si vous voulez juste historiser les valeurs journalières sans affichage PowerBI
- CloudSync (ou autre rsync) pour synchroniser le fichier csv d'historique vers votre Cloud Provider -> pas obligatoire
- Python installé sur votre controleur Unifi
- speedtest-cli de ookla installé sur votre controleur Unifi (https://www.speedtest.net/apps/cli)

Fonctionnement :
- deux scripts (debit2csv.py et test-debit.sh) sont installés et utilisés sur le controleur Unifi
- test-debit.sh lance la commande speedtest qui génère un fichier csv de sortie et le script python debit2csv.py effectue le traitement de ce fichier excel

Script test-debit.sh :
#!/bin/sh
speedtest -s 29544 -f csv > /var/tmp/debit.csv
python3 /var/opt/speedtest/debit2csv.py

Quelques explications,
- commande speedtest exécuté vers le serveur Orange de Lille et création du fichier /var/tmp/debit.csv, le résultat dans le fichier est :
"ORANGE FRANCE - Lille","29544","7.483","0.102","0","116735360","117409428","745100256","807501041","https://www.speedte
st.net/result/c/6f1b4b92-c614-4ad5-a1a3-afd3516329c2"


Comme vous le voyez un traitement est nécessaire pour ajouter une colonne de type TimeStamp (date) et convertir en Mbps.

Le script python debit2csv.py va faire le gros du boulot et nous sortir un fichier csv avec les lignes formatées :

0,ORANGE FRANCE - Lille,29544,7.48,0.1,0,933.88,939.28,745100256,807501041,https://www.speedtest.net/result/c/6f1b4b92-c
614-4ad5-a1a3-afd3516329c2,22-03-2021:06:00:19


Le script testdebit.sh est dans la crontab du controleur Unifi et est lancé 3 fois par jour (06h00, 12h00 et 00h00).

Vous pouvez adapter facilement selon votre configuration (Unifi ou pas, Linux ou windows....).
L'important est d'obtenir un fichier csv avec les informations voulues :
- Upload en Mbps, Download en Mbps, Latence en ms.

Le script est ensuite transféré (via CloudSync) de mon Syno vers un stockage Azure en mode blob.
Une petite LogicApp vient checker une MAJ du fichier CSV dans le compte de stockage et mets à jour si nécessaire le rapport PowerBI.

Le rapport est disponible au format deskop ou au format mobile.

Olivier

Je me suis aidé des liens suivants :
https://medium.com/swlh/easily-visualize-your-data-in-microsoft-power-bi-6e95f8abcb07
https://github.com/Ze1598/medium-articles/blob/master/Easily%20visualize%20your%20data%20in%20Microsoft%20Power%20BI/get_internet_speeds.py