Raspberry Pi Internet Monitor (25 / 25 étapes)

Etape 25 : Comment fonctionnent les programmes Python

Il y a deux client programmes Python utilisées dans cette instructable pour créer le Raspberry Pi Internet Monitor.

RPI-internet-monitor.py

Le premier programme « rpi-internet-monitor.py » est démarré par la commande :

dans le système de fichier « / etc/network/interfaces ». La commande « post-vers le haut » est exécutée lorsque les interfaces réseau sont en cours d’exécution.
Annonces 1 à 5 indiquent le code source pour le programme de rpi-internet-monitor.py :

Lignes 3-17 (cotation 1) les bibliothèques d’importation nécessaire et définir des constantes qui seront utilisés au sein du programme.

  • Lignes 3-6 les bibliothèques d’importation nécessite d’émettre des commandes du système, le temps et permettent au programme lire et écrire les broches GPIO.
  • Ligne 8 définit la broche GPIO permet d’indiquer si la touche sur l’interrupteur d’arrêt a été enfoncée.
  • Ligne 9 définissent la broche GPIO utilisée pour contrôler l’éclairage de la lumière sur l’interrupteur d’arrêt.
  • Lignes 10-12 définit les broches GPIO utilisées pour l’éclairage des LED dans le feu de la tour de contrôle.
  • Ligne 14 définit le nombre de secondes d’attente entre la commande « ping ».
  • Ligne 15 définit le nombre de secondes d’attente entre l’émission des essais de la façon dont la connexion internet fonctionne.
  • Ligne 17 répertorie les sites qui sont ping pour voir comment fonctionne la connexion internet. Google est toujours un bon choix. J’ai choisi Comcast parce qu’ils sont mon fournisseur de services internet. Ceux-ci peuvent être modifiés à tout ce que vous voulez et vous pouvez des sites supplémentaires à la liste aussi bien.

Lignes 19-22 (cotation 1) définition de la fonction « debug_message ». Cette fonction est utilisée pour imprimer des messages qui aident à déboguer le programme Python « rpi-internet-monitor.py » si elle ne fonctionne pas correctement. Le débogage est activé en exécutant le programme avec le commutateur de débogage comme suit :

  • Lignes 21 et 22 vérifier pour voir si la variable d’entrée « debug_indicator » est définie sur « True » et dans l’affirmative, imprimer le message spécifié « output_message », sinon qu'aucun message n’est imprimées.

Lignes 24-34 (Listing 2) définissent la fonction de « ping ». La fonction ping envoie la commande de système de « ping » pour déterminer si le site indiqué par « site » est accessible. Cette fonction retourne un zéro si la commande ping échoue et un si le ping a réussi.

  • Ligne 26 construit la commande Linux pour faire le ping.
  • Ligne 28 émet une commande à l’aide de la fonction « check_output » de la bibliothèque « sous-processus ».
  • Ligne 29 indique le python du programme à exécuter des lignes 30 et 31 si la commande échoue (par exemple, le site n’est pas accessible).
  • Ligne 30 imprime un message de débogage indiquant que le site n’est pas accessible.
  • Ligne 31 retourne un zéro à la fonction qui a appelé le « ping ».
  • Ligne 32 est où l’exécution se poursuit si le ping a réussi.
  • Ligne 33 imprime un message de débogage indiquant que le site est accessible.
  • Une ligne 34 renvoie à la fonction qui a appelé le « ping ».

Lignes 36 à 46 (cotation 2) définition de la fonction « ping_sites ». Les « ping_sites » fonction pings chacun des sites spécifiant dans « site_list » le nombre de fois spécifié par le « times » avec un délai en secondes entre les pings spécifiés par "temps_attente".

  • Ligne 39 définit le nombre de pings réussies à zéro.
  • Ligne 40 définit le nombre de pings qui va être tentée en multipliant le nombre de tente spécifié par le « times » par le nombre de sites répertoriés dans « site_list ».
  • Ligne 41 crée une boucle qui sera exécuté le nombre de fois spécifié par le « times ».
  • Ligne 42 crée une autre boucle qui va être exécutée pour chaque site dans « site_list ».
  • Ligne 43 appelle ping et ajoute la valeur retournée par "ping" (zéro en cas d’échec, un en cas de succès) pour le nombre de pings réussies.
  • Ligne 44 appelle la fonction de système de « time.sleep » d’attendre le nombre de secondes spécifié par « temps_attente ».
  • Ligne 45 est exécuté après ont terminé toutes les boucles et imprime un message de débogage indiquant quel est le pourcentage du pings essayé ont réussi.
  • Ligne 46 retourne le pourcentage de pings qui avaient réussi à la fonction qui a appelé « ping_sites ».

Lignes 48-53 (cotation 3) définition de la fonction « lamp_amber_on ». Cette fonction est appelée pour allumer la lampe orange pour indiquer quand la connexion internet fonctionne mais n’est pas optimale.

  • Ligne 50 affiche un message de débogage indiquant que la fonction a été appelée.
  • Ligne 51 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant rouge est éteint.
  • Ligne 52 brassées la fonction « sortie » dans la bibliothèque GPIO pour activer le voyant orange est allumée.
  • Ligne 53 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant vert est éteint.

Lignes 55-60 (cotation 3) définition de la fonction « lamp_green_on ». Cette fonction est appelée pour allumer le voyant vert pour indiquer quand la connexion internet fonctionne.

  • Ligne 57 imprime un message de débogage indiquant que la fonction a été appelée.
  • Ligne 58 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant rouge est éteint.
  • Ligne 59 utilise la fonction « sortie » dans la bibliothèque GPIO pour s’assurer que le feu orange est éteint.
  • Ligne 60 utilise la fonction de « sortie » dans la bibliothèque GPIO pour allumer le voyant vert.

Les lignes 62-67 (cotation 3) définition de la fonction « lamp_red_on ». Cette fonction est appelée pour allumer la lampe rouge pour indiquer quand la connexion internet ne fonctionne pas.

  • Ligne 64 affiche un message de débogage indiquant que la fonction a été appelée.
  • Ligne 65 utilise la fonction de « sortie » dans la bibliothèque GPIO pour allumer la lampe rouge.
  • Ligne 66 utilise la fonction « sortie » dans la bibliothèque GPIO pour s’assurer que le feu orange est éteint.
  • Ligne 67 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant vert est éteint.

Lignes 69-74 (cotation 4) définition de la fonction « lamp_all_off ». Cette fonction est appelée pour éteindre tous les feux.

  • Ligne 71 imprime un message de débogage indiquant que la fonction a été appelée.
  • Ligne 72 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant rouge est éteint.
  • Ligne 73 utilise la fonction « sortie » dans la bibliothèque GPIO pour s’assurer que le feu orange est éteint.
  • Ligne 74 utilise la fonction de « sortie » dans la bibliothèque GPIO pour s’assurer que le voyant vert est éteint.

Lignes 76-88 définissent la fonction « lamp_test ». Cette fonction est épuisée lors du démarrage du programme pour tester les lampes. La fonction clignote toutes les lampes dans l’ordre cinq fois avec un dixième d’un deuxième délai entre bouffées de chaleur.

  • Ligne 78 imprime un message de débogage indiquant que commence le test de la lampe.
  • Ligne 79 définit le délai entre les bouffées de chaleur à un dixième de seconde.
  • Ligne 80 crée une boucle que run exécutera les lignes 81-86 cinq fois.
  • Ligne 81 utilise la fonction système « time.sleep » pour attendre un dixième de seconde.
  • Ligne 82 appels « lamp_red_on » pour juste le voyant rouge s’allume.
  • Ligne 83 attend un dixième de seconde.
  • Ligne 84 appels « lamp_amber_on » pour juste le voyant orange s’allume.
  • Ligne 85 attend un dixième de seconde.
  • Ligne 86 appels « lamp_green_on » pour que le voyant vert s’allume.
  • Ligne 87 est exécuté après que la boucle se termine et appelle les « lamp_all_off » pour éteindre tous les feux.
  • Ligne 88 imprime un message de débogage indiquant que le test de la lampe est terminée.

Lignes 90-127 (liste 5) est le programme principal.

Lignes 92-99 cocher les options passées au programme afin de déterminer si les messages de débogage doivent être imprimé.

  • Ligne 93 définit « debug » False indiquant que si la commande n’a pas l’option de débogage spécifié que les messages de débogage ne doit pas être imprimé.
  • Ligne 94 utilise la variable système « sys.argv » pour voir si des options sont spécifiées sur la ligne de commande. S’il s’agissait, lignes 95-99 seront exécutés.
  • Ligne 95 vérifie si "-debug" a été spécifié.
  • Ligne 96 est exécuté si "-debug" a été spécifiée et définit la valeur de « debug » True, ce qui indique des messages de débogage doivent être imprimés.
  • Ligne 97 rend les lignes 98 et 99, si quelque chose autre que "-debug" a été spécifié.
  • Ligne 98 imprime un message d’erreur indiquant qu’une option inconnue a été spécifiée et ce qu’elle était.
  • Ligne 99 s’arrête le programme avec un code d’erreur de 1 à cause de l’option inconnue.

Les broches GPIO utilisées par le programme pour contrôler les lampes d’installation lignes 101-105.

  • Ligne 102 utilise la fonction « setmode » de la bibliothèque GPIO pour définir le schéma de numérotation que le programme utilisera pour les broches GPIO
  • Ligne 103 utilise la fonction « setup » de la bibliothèque GPIO pour définir l’axe utilisé pour contrôler la lampe verte sur une broche de sortie.
  • Ligne 104 utilise la fonction « setup » de la bibliothèque GPIO pour définir l’axe utilisé pour contrôler la lampe orange sur une broche de sortie.
  • Ligne 105 utilise la fonction « setup » de la bibliothèque GPIO pour définir l’axe utilisé pour contrôler la lampe rouge sur une broche de sortie.

Lignes 107-111 clignoter les feux pour indiquer le programme démarre et laisser l’ampoule ambre sur jusqu'à ce que le programme commence à tester l’état de la connexion internet.

  • Ligne 108 utilise la fonction « turn_all_off » pour éteindre tous les feux.
  • Ligne 109 utilise la fonction « lamp_test » à clignoter les feux de suite cinq fois.
  • Ligne 110 attend pendant une demi-seconde.
  • Ligne 111 utilise la fonction « lamp_amber_on » pour allumer la lampe jaune.

Les lignes 113-126 est la boucle principale qui pings sites, allume la lampe appropriée selon les pings, attend et les répétitions jusqu'à ce que vous appuyez sur l’interrupteur d’arrêt ou de mise hors tension.

  • Ligne 114 définit le nombre de tests exécutés à zéro.
  • Ligne 115 crée une boucle qui s’exécute jusqu'à ce que vous appuyez sur l’interrupteur d’arrêt ou de mise hors tension.
  • Ligne 116 ajoute un certain nombre de tests exécutés.
  • Ligne 117 imprime un message de débogage indiquant qu’un test commence.
  • Ligne 118 appelle la fonction « ping_sites » spécifie la liste des sites à tester, le délai entre les pings et le nombre de pings à faire.
  • Les lignes 119 et 120 vérifier pour voir si le pourcentage de tests réussis était nuls et, dans l’affirmative, utilisent la fonction « lamp_red_on » pour allumer la lampe rouge.
  • Lignes 121 et 122 aller pour voir si le pourcentage de tests réussis était inférieur ou égal à 50 % et, dans l’affirmative, utilisent la fonction « lamp_amber_on » pour allumer la lampe jaune.
  • Les lignes 123 et 124 sont exécutés si le pourcentage de tests réussis avait entre 51 et 100 % et utilisent le « lamp_green_on » pour allumer le voyant vert.
  • Ligne 125 affiche un message de débogage indiquant que le programme attendra pour le nombre spécifié de secondes avant d’exécuter le test suivant.
  • Ligne 126 utilise la fonction de système de « time.sleep » pour attendre un nombre spécifié de secondes. Après la fin de ce retard, le programme remonte à la ligne 116.

RPI-halt-btn.py

Le deuxième programme « rpi-halt-btn.py » est démarré au cours du processus de démarrage par la commande

dans le fichier système "/ etc/rc.local". Le « & » à la fin de la commande rend le programme exécuté comme un processus distinct qui continue à tourner jusqu'à ce que le programme s’arrête.
6 le Listing montre le code source pour le programme de rpi-halt-btn.py :

Lignes 2-13 initialisent le programme.

  • Lignes 2-3 importer les bibliothèques requises pour contrôler les périphériques connectés aux broches GPIO, émettre des commandes système, permet au programme de dormir.
  • Lignes 6 et 7 définissent la goupille qui surveillera l’interrupteur d’arrêt et la goupille qui contrôlera l’allumage de la LED dans l’interrupteur.
  • Ligne 8 utilise la fonction « setmode » de la bibliothèque GPIO pour définir quel schéma de numérotation le programme utilisera pour les broches GPIO.
  • Ligne 9 utilise la fonction « setup » de la bibliothèque GPIO pour définir la broche GPIO pour contrôler la LED sur l’interrupteur pour être une broche de sortie.
  • Ligne 10 utilise la fonction « setup » de la bibliothèque GPIO pour définir la broche GPIO pour surveiller le commutateur pour presses à une broche d’entrée.
  • Ligne 11 utilise la fonction « sortie » de la bibliothèque GPIO pour illuminer la LED dans l’interrupteur en définissant la valeur de l’axe sur true.
  • Ligne 13 affiche un message indiquant que l’aiguillage est maintenant surveillé.

Ligne 18 utilise la fonction « wait_for_edge » de la bibliothèque GPIO provoque le programme d’attendre pour le commutateur à presser.

Lignes 19 à 21 sont utilisés pour le débogage. Lorsque le programme est exécuté depuis la ligne de commande et appuyé sur Ctrl/C ces lignes seront exécutées.

  • Ligne 20 affichera un message indiquant que l’utilisateur a arrêté le programme.
  • Ligne 21 utilise la fonction « nettoyage » de la bibliothèque GPIO pour arrêter le suivi des broches GPIO.

Lignes 22 à 26 sont exécutés lorsque le commutateur d’arrêt a été enfoncé.

  • Ligne 23-25 cause la LED sur l’interrupteur pour éteindre brièvement pour donner de la rétroaction de l’utilisateur que l’interrupteur est actionné.

    • Ligne 22 affichera un message indiquant que l’interrupteur d’arrêt a été enfoncée.
    • Ligne 23 utilise la fonction « sortie » de la bibliothèque GPIO pour éteindre la LED.
    • Ligne 24, le programme de dormir pendant une demi-seconde.
    • Ligne 25 allume la LED arrière.
  • Ligne 26 utilise la fonction « subprocess.call » pour exécuter la commande « sudo halt » qui provoquera le Pi de framboise à l’arrêt.

Lorsque le Pi de framboise a arrêt la LED sur l’interrupteur d’arrêt s’éteindra indiquant qu’il est prudent de débrancher l’appareil de la prise de courant.

Articles Liés

1979 bang & Olufsen Raspberry Pi Internet Radio

1979 bang & Olufsen Raspberry Pi Internet Radio

il s'agit d'un 1979 Bang & Olufsen Beocord 1500 enregistreur de cassette que j'ai converti en un standalone webradio Raspberry Pi. Les vumètres analogiques sont pilotées par l'IP via un circuit DAC (convertisseur numérique-analogique), à l'heure actu
Arduino / Raspberry Pi Internet Radio

Arduino / Raspberry Pi Internet Radio

Il s'agit d'un projet pour Arduino et Raspberry Pi pour faire une Radio Internet, visant à un niveau intermédiaire. Quelque familiarité avec l'utilisation de Linux va être bénéfique (ou accès à quelqu'un qui peut dépanner si nécessaire).Raspberry Pi
Raspberry Pi, Internet Radio

Raspberry Pi, Internet Radio

Nous avons été le but de faire un hack mini pendant un certain temps à redonner une vie à une vieille radio et laissez-nous radio sont des stations de radio internet préférées.Étape 1: Vous aurez besoin...Selon la radio dans que vous allez installer
Roberts 747 - DIY Raspberry Pi internet radio/streamer

Roberts 747 - DIY Raspberry Pi internet radio/streamer

Roberts 747, grande radio depuis 1990. Entièrement fonctionnel en très bon état. Trouvé sur antique vente après une longue traque pour quelque chose comme ça.J'ai un rechange Raspberry Pi B V1 maison modèle comme pièce de rechange, et il était juste
Utiliser le bouclier de Lora et IPD pour construire une passerelle LoRaWAN

Utiliser le bouclier de Lora et IPD pour construire une passerelle LoRaWAN

Ici, nous allons utiliser le Lora Shileld, la MEGA2560 et le Raspberry Pi de construire un canal unique passerelle LoRaWAN.LoRa La technologie est une modulation sans fil pour les applications de long-gamme, de faible puissance, de faibles quantités
Météo affichage utilisant Arduino et framboise Pi

Météo affichage utilisant Arduino et framboise Pi

Ce projet est le système d'affichage de temps à l'aide de 16 * 2 lcd, arduino, raspberry pi, internetce projet de construction est très simple nécessité très moins AssembléeC'est d'afficher la météo dans n'importe quel ware dans le monde sur 16 * 2,
Système de jeux/Arcade RetroPie

Système de jeux/Arcade RetroPie

Construction d'un contrôleur de table jeux/arcade système utilisant un Raspberry PI 3 - peut être étendu pour utiliser les autres contrôleurs, NES, SNES et N64 USB avec montée à l'avant des ports USB. Cette version nécessite un coupeur de laser (j'ai
Flight Simulator avec Arduino et Python

Flight Simulator avec Arduino et Python

contrôle l'option de simulateur de vol de Google Earth en utilisant un Arduino et un accéléromètre.Voler pratiquement partout dans le monde ; incliner l'accéléromètre avant, arrière, gauche et droite pour contrôler le Pitching et les opérations banca
Can-sized Satellite 2

Can-sized Satellite 2

Dans le cadre de la coopération avec l'Université espace Engineering Consortium (UNISEC) et française du Caire Université Faculté génie aérospatial, le centre de Science de planétarium (CFP) lancer le programme de formation du Can-Sam une des activit
ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

ITO : Raspberry Pi Robot avec commande à distance caméra Pan/Tilt et de Streamer de la vidéo sur internet

(Si vous aimez ce Instructable, n'oubliez pas de voter là-dessus - au-dessus : drapeau de coin à droite. Il est en concurrence sur l'INTERNET des objets et des concours d'automatisation. Merci beaucoup! ;-)Il s'agit d'une deuxième partie de mon précé
Construisez votre Robot Internet sous contrôle vidéo-Streaming avec Arduino et Raspberry Pi

Construisez votre Robot Internet sous contrôle vidéo-Streaming avec Arduino et Raspberry Pi

< le Instructable et le code sont prêts. Profitez ! Laissez un commentaire avec vous vos commentaires! >Je suis (aka LiquidCrystalDisplay / Itay), un élève de 14 ans d'Israël par l'apprentissage dans l'école secondaire Junior Max Shein avancées des
Comment donner un accès à internet à Raspberry Pi zéro

Comment donner un accès à internet à Raspberry Pi zéro

Aujourd'hui, je vais vous montrer que nous voulons donner un accès internet pour les nouveaux commentaires de notre gamme unique de Raspberry Pi, comme l'appelle Zero Pi!Comme vous pouvez voir qu'il n'y a aucune prise ethernet, ports USB et embarqué
Raspberry Pi température & humidité Network Monitor

Raspberry Pi température & humidité Network Monitor

Veuillez noter qu'il existe un repo Git pour le code à :https://github.com/jervine/RPI-Temp-Humid-MonitorSi vous désirez les derniers correctifs ou aimeriez contribuer. Merci Jonny Ervine !J'ai eu quelques problèmes avec les cartes SD de Kingston, ma
Au coin du feu Internet Radio Player pour les utilisateurs âgés - construit avec Raspberry Pi

Au coin du feu Internet Radio Player pour les utilisateurs âgés - construit avec Raspberry Pi

Introduction :Aujourd'hui, nous avons accès incroyable à grand contenu en streaming : musique, Actualités, météo, histoires, etc.. Pourtant, cet accès est limité à ceux qui peuvent naviguer dans des appareils électroniques d'aujourd'hui. Ce projet re