Étape 3: Écriture d’un script Python pour afficher l’écran de la bande passante
Vous aurez besoin d’un programme appelé git pour télécharger le script Python pour exécuter cet.
Si vous n’avez pas git installé vous pouvez l’installer sur la facture pro forma avec « sudo apt-get install git »
Aller dans un répertoire où vous souhaitez installer ce script. J’ai utilisé /home/osmc/python/bandwidth / - vous pouvez le mettre où que vous voulez.
Tapez dans "git clone https://github.com/DarrenBeck/rpi-oled-bandwidth « de cloner le projet dans votre répertoire.
Vous devriez avoir un fichier dans votre répertoire appelé « net.py ». C’est le script Python qui, si tout va bien, affichera votre bande passante réseau sur l’écran. Vous devrez probablement changer au moins l’adresse ip du routeur, les taux de données maximal et éventuellement l’oid est utilisé pour extraire les données de la bande passante du routeur.
Pour modifier le fichier utiliser « nano net.py ». Utilisez Ctrl-x pour quitter l’éditeur.
Pour exécuter le fichier utiliser « sudo python net.py ». Le programme affichera la largeur de bande sur la ligne de commande et si elle travaille tout aussi montrer la bande passante graphique sur l’écran OLED.
Pour expliquer un peu comment fonctionne le programme... Ce fichier a été modifié de l’exemple de Adafruit code OLED. La plupart de la première page est juste entrée en vigueur pour l’écran et la mémoire tampon d’image.
Viennent ensuite un certain nombre de fonctions telles que getSnmpInt et timon qui sont des aides pour le programme. Notez que getSnmpInt convertit le texte comme réponse snmp en entier, nous pouvons utiliser. Il le fait à l’aide de data.split() qui, par défaut, le texte sur chaque espace fractionne une liste. Data.pop() retourne le dernier élément de la liste qui a été créée par scission, et c’est finalement retourné comme un type int.
Viennent ensuite certaines définit (il n’y a aucune une telle chose comme une définition en Python donc nous utilisons simplement les variables).
Ensuite, il obtient le nombre total d’octets envoyés par l’intermédiaire de chaque interface. Elle le fait au début pour que lorsqu’il obtient un nouveau total il peut fonctionner sur combien d’octets ont été envoyées ou reçues depuis la dernière fois que celles-ci ont été lues. Il obtient également le temps afin qu’elle puisse travailler sur combien de temps s’est écoulé entre chaque lecture et convertir les totaux dans les débits de données tels que Kbits/s ou Mbit/s.
maxRateIn et maxRateOut sont définit qui sont spécifiques à notre connexion au réseau et qui devra probablement être adapté pour votre connexion réseau. Je l’ai fait en exécutant le programme depuis la ligne de commande et voir quels sont les taux les plus élevés pour dedans et dehors le trafic que le LAN port volonté jamais faire. Ceux-ci sont importants car ils définir la valeur maximale qui peut atteindre les graphiques à barres. Si celles-ci ne sont pas définies juste vos graphiques à barres sera soit trop court ou s’étendre hors de l’écran. J’ai pris des chiffres légèrement plus élevé que le maximum que j’ai jamais vu.
Le code Adafruit pour dessiner un rectangle m’a laissé bouche bée pendant un certain temps. Je suis habitué à une fonction de tirage au sort du rectangle comme draw.rectangle (x, y, largeur, hauteur), mais celui-ci utilise draw.rectangle (x, y, fin x, y de fin).
Enfin, il y a un infini tout en boucle qui va calculer les débits de données et les afficher à l’écran chaque fois. Il y a un délai d’une demi-seconde dans chaque boucle, mais il faut aussi un peu tandis que pour le programme envoyer la nouvelle mémoire tampon d’écran sur le bus i2c chaque fois le programme finit par mettre à jour une fois une seconde environ. Peu importe combien de temps il faut puisque nous sommes également chronométrer la boucle.
Idéalement j’aurais aimé utiliser cron pour lancer ce programme lorsque commence la Pi, mais jusqu'à maintenant à l’aide de concours, il ne fonctionne pas. Cependant, j’ai une autre solution qui fonctionne presque aussi bien et l’astuce est d’utiliser un programme appelé écran.
J’ai utiliser l’écran tout le temps quand ssh'ing dans des dispositifs. Il convient de la petite quantité de temps qu’il faut apprendre à l’utiliser. Vous pouvez l’installer avec 'sudo apt-get install écran'. Fondamentalement écran vous permet d’exécuter un certain nombre d’écrans de connexion d’un écran de terminal. Ce qui est important est vous permet également d’exécuter une session Terminal Server sur la PI et puis s’en détacher et il continuera à fonctionner sur la facture pro forma après que vous avez fermé votre terminal de connexion.
Les instructions de base pour l’écran sont: « écran » à l’écran de démarrage. « ctl-a c » pour créer un nouvel écran. « ctl-a l’espace » pour basculer entre les écrans. 'ctl-a d' de se détacher de tous vos écrans et « écran - r » aux écrans de CV vous avez précédemment détaché de.
Écran peut également être utilisé pour communiquer via un flux série ou usb, mais ce serait une tout autre instructable.
Pour exécuter ce script et faire fonctionner les étapes sont donc ;
écran
(naviguez jusqu’au dossier où script) sudo python net.py
CTL-a d (pour détacher - le script continuera à fonctionner)
Cela devrait être tout ce que vous devez obtenir un moniteur de bande passante peu utile en cours d’exécution. J’espère que cela fonctionne pour vous et attendons avec impatience vos commentaires:)
Cette instructable pourrait être également adaptée pour afficher les données de bande passante par d’autres moyens. Deux rangées de LED ou un type d’écran différent pourrait être une option si un écran plus large est nécessaire.