Monitor de Internet frambuesa Pi (25 / 25 paso)

Paso 25: Cómo los programas de Python funcionan

Hay dos cliente programas Python utilizados en este instructable para crear al Raspberry Pi Internet Monitor.

RPI-internet-monitor.py

El primer programa de "rpi-internet-monitor.py" se inicia con el comando:

en el archivo de sistema "/ etc/network/interfaces". Se ejecuta el comando "después en" cuando las interfaces de red están funcionando.
Listados 1 a 5 muestran el código fuente del programa rpi-internet-monitor.py:

Líneas 3-17 (Listado 1) las bibliotecas de importación necesitada y definir constantes que se utilizarán en el programa.

  • Líneas 3-6 importar las bibliotecas que se requiere para emitir comandos del sistema, obtener el tiempo y permitir el programa de lectura y escritura de los pines GPIO.
  • Línea 8 define el pin GPIO decía si se presionó el botón del interruptor de apagado.
  • Línea 9 definir el pin GPIO usado para controlar la iluminación de la luz en el interruptor de apagado.
  • Líneas 10-12 define los pines GPIO usados para controlar la iluminación de los LEDs en la luz de la torre.
  • Línea 14 establece el número de segundos de espera entre el comando "ping".
  • Línea 15 establece el número de segundos de espera entre la emisión de las pruebas de qué tan bien está funcionando la conexión a internet.
  • Línea 17 enumera los sitios que son un ping para ver qué tan bien está funcionando la conexión a internet. Google siempre es una buena opción. Elegí a Comcast por ser mi proveedor de internet. Estos pueden cambiarse por lo que usted desee y puede otros sitios a la lista así.

Líneas 19-22 (Listado 1) definir la función de "debug_message". Esta función se utiliza para imprimir mensajes que ayudan a depurar el programa de Python "rpi-internet-monitor.py" si no funciona correctamente. Depuración se activa ejecutando el programa con el debug switch - como sigue:

  • Líneas 21-22 Compruebe ver si la variable de entrada "debug_indicator" se establece en "True" y si es así, imprimir el mensaje especificado "output_message", caso contrario no hay mensajes se imprimen.

Líneas 24-34 (Listado 2) definen la función "ping". La función de ping emite el comando "ping" del sistema para determinar si el sitio especificado por "sitio" es accesible. Esta función devuelve un cero si el ping no fue exitoso y uno si el ping fue exitoso.

  • Línea 26 construye el comando de Linux para hacer el ping.
  • Línea 28 emite el comando mediante la función "check_output" de la biblioteca "subproceso".
  • Línea 29 dice el python del programa para ejecutar las líneas 30 y 31 si falla el comando (por ejemplo, el sitio no es accesible).
  • Línea 30 imprime un mensaje de depuración que indica que el sitio no es accesible.
  • Línea 31 devuelve un cero a la función que se llama "ping".
  • Línea 32 es donde continúa la ejecución si el ping fue exitoso.
  • Línea 33 imprime un mensaje de depuración que indica que el sitio es accesible.
  • Línea 34 devuelve uno a la función que se llama "ping".

Líneas de 36-46 (Listado 2) definir la función de "ping_sites". El "ping_sites" función pings cada uno de los sitios especifican en "site_list" el número de veces especificado por "tiempos" con un retraso en segundos entre los pings especificados por "wait_time".

  • Línea 39 establece el número de pings éxito a cero.
  • Línea 40 establece el número de pings que se intentará multiplicando el número de intentos especificado por "tiempos" por el número de los sitios enumerados en "site_list".
  • Línea 41 crea un bucle que se ejecuta el número de veces especificado por "times".
  • Línea 42 crea otro bucle que se ejecutará para cada sitio en "site_list".
  • Línea 43 llama ping y agrega el valor devuelto por "ping" (cero si no se consigue, uno si tiene éxito) para el número de pings de éxito.
  • Línea 44 llama a la función del sistema "time.sleep" a esperar a que el número de segundos especificado por "wait_time".
  • Línea 45 se ejecuta después de han completado todos los lazos y grabados que se trató de un mensaje de depuración que indica qué porcentaje de los pings fueron exitosos.
  • Línea 46 devuelve el porcentaje de pings que tuvieron éxito a la función que se llama "ping_sites".

Líneas 48-53 (Listado 3) definen la función de "lamp_amber_on". Esta función se llama para encender la lámpara color ámbar para indicar cuando la conexión a internet está funcionando pero no es óptima.

  • Línea 50 imprime un mensaje de depuración que indica que la función fue llamada.
  • La línea 51 utiliza la función "salida" en la biblioteca GPIO para asegurarse de que la lámpara roja está apagada.
  • Línea 52 utiliza la función de "salida" en la biblioteca GPIO para encender la luz ámbar se enciende.
  • Línea 53 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que la lámpara verde está apagada.

Líneas 55-60 (Listado 3) definen la función de "lamp_green_on". Esta función se llama para encender la lámpara verde para indicar cuándo está funcionando la conexión a internet.

  • Línea 57 imprime un mensaje de depuración que indica que la función fue llamada.
  • Línea 58 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que la lámpara roja está apagada.
  • Línea 59 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que se apaga la lámpara color ámbar.
  • Línea 60 utiliza la función "salida" en la biblioteca GPIO para encender la lámpara verde.

Líneas 62-67 (Listado 3) definen la función de "lamp_red_on". Esta función se llama para encender la lámpara roja para indicar cuando no funciona la conexión a internet.

  • Línea 64 imprime un mensaje de depuración que indica que la función fue llamada.
  • Línea 65 utiliza la función de "salida" en la biblioteca GPIO para encender la lámpara roja.
  • Línea 66 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que se apaga la lámpara color ámbar.
  • Línea 67 utiliza la función "salida" en la biblioteca GPIO para asegurarse de que la lámpara verde está apagada.

Líneas 69-74 (listado 4) definir la función de "lamp_all_off". Esta función se llama para apagar todas las lámparas.

  • Línea 71 imprime un mensaje de depuración que indica que la función fue llamada.
  • Línea 72 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que la lámpara roja está apagada.
  • Línea 73 utiliza la función de "salida" en la biblioteca GPIO para asegurarse de que se apaga la lámpara color ámbar.
  • Línea 74 utiliza la función "salida" en la biblioteca GPIO para asegurarse de que la lámpara verde está apagada.

Líneas 76-88 definen la función de "lamp_test". Esta función es consumida durante el arranque del programa para probar las lámparas. La función parpadea todas las lámparas en secuencia cinco veces con un décimo de una demora de segundos entre destellos.

  • Línea 78 imprime un mensaje de depuración que indica que es a partir de la prueba de la lámpara.
  • Línea 79 establece la demora entre destellos a una décima de segundo.
  • Línea 80 crea un bucle que ejecutar ejecutar líneas 81-86 cinco veces.
  • Línea 81 utiliza la función del sistema "time.sleep" a esperar a que un décimo de segundo.
  • Línea 82 llamadas "lamp_red_on" para encender sólo la luz roja.
  • Línea 83 espera una décima de segundo.
  • Línea 84 llamadas "lamp_amber_on" para encender sólo la luz ámbar.
  • Línea 85 espera una décima de segundo.
  • Línea 86 llamadas "lamp_green_on" para encender sólo la luz verde.
  • Línea 87 se ejecuta después de que el bucle termina y llama a la "lamp_all_off" para apagar todas las lámparas.
  • Línea 88 imprime un mensaje de depuración que indica que ha completado la prueba de la lámpara.

Líneas 90-127 (listado 5) es el programa principal.

Líneas 92-99 verificar se deben imprimir las opciones pasadas al programa para determinar si los mensajes de depuración.

  • Línea 93 establece "debug" en False, que indica que si el comando no tiene la opción de depuración especificados que mensajes de depuración no se deben imprimir.
  • Línea 94 utiliza la variable de sistema "sys.argv" para ver si las opciones que fueron especificadas en la línea de comandos. Si fueran, se ejecutarán las líneas 95-99.
  • Línea 95 comprueba si "-debug" fue especificado.
  • 96 de línea se ejecuta si "-debug" fue especificado y establece el valor de "debug" True indicando que se deben imprimir los mensajes de depuración.
  • Línea 97 hace líneas 98 y 99 si algo distinto "-debug" fue especificado.
  • Línea 98 imprime un mensaje de error que indica que se ha especificado una opción desconocida y lo que era.
  • Línea 99 se detiene el programa con un código de error de 1 debido a la opción desconocida.

Líneas 101-105 configuración de los pines GPIO utilizados el programa para el control de las lámparas.

  • Línea 102 utiliza la función "setmode" de la biblioteca GPIO para establecer el esquema de numeración que se utilizará el programa para los pines GPIO
  • Línea 103 utiliza la función "setup" de la biblioteca GPIO para configurar el pin utilizado para el control de la luz verde a un pin de salida.
  • Línea 104 utiliza la función de "configuración" de la biblioteca GPIO para fijar el perno usado para controlar la lámpara ámbar a un pin de salida.
  • Línea 105 utiliza la función "setup" de la biblioteca GPIO para configurar el pin utilizado para el control de la luz roja a un pin de salida.

Líneas 107-111 flash las luces para indicar que el programa es a partir y dejar la lámpara ámbar en hasta que el programa inicia las pruebas del estado de la conexión de internet.

  • Línea 108 utiliza la función "turn_all_off" para apagar todas las lámparas.
  • Línea 109 utiliza la función "lamp_test" a parpadear las luces en secuencia cinco veces.
  • Línea 110 espera medio segundo.
  • Línea 111 utiliza la función "lamp_amber_on" para encender la lámpara color ámbar.

Líneas 113-126 es el bucle principal que hace ping a sitios, enciende la lámpara adecuada en base a las repeticiones, los pings y esperas hasta que se pulsa el interruptor de apagado o se apaga.

  • Línea 114 establece el número de pruebas a cero.
  • Línea 115 crea un bucle que se ejecutará hasta que el interruptor de apagado se presiona o se apaga.
  • Línea 116 agrega un número de pruebas de funcionamiento.
  • Línea 117 imprime un mensaje de depuración que indica que es a partir de una prueba.
  • Línea 118 llama a la función de "ping_sites" especificando la lista de sitios para probar, el retraso entre pings y el número de pings que hacer.
  • Líneas 119 y 120 Compruebe para ver si el porcentaje de pruebas acertados fueron cero y, si es así, utilizan la función "lamp_red_on" para encender la lámpara roja.
  • Líneas 121 y 122 Compruebe para ver si el porcentaje de pruebas fue menor o igual al 50% y, si es así, utilizan la función "lamp_amber_on" para encender la lámpara color ámbar.
  • Líneas 123 y 124 se ejecutan si el porcentaje de pruebas acertados fueron entre 51% y 100% y utilizan el "lamp_green_on" para encender la lámpara verde.
  • Línea 125 imprime un mensaje de depuración que indica que el programa esperará el número especificado de segundos antes de ejecutar la siguiente prueba.
  • Línea 126 utiliza la función del sistema "time.sleep" para esperar el número de segundos especificado. Después de la demora, el programa vuelve a la línea 116.

RPI-alto-btn.py

El segundo programa "rpi-fin-btn.py" se inicia durante el proceso de arranque mediante el comando

en el archivo de sistema "/ etc/rc.local". El "&" al final del comando hacen que el programa ejecute como un proceso separado que sigue funcionando hasta que salga el programa.
El listado 6 muestra el código fuente del programa rpi-alto-btn.py:

Las líneas 2-13 inicializan el programa.

  • Líneas 2-3 importar las librerías necesarias para controlar los dispositivos conectados a los pines GPIO, comandos de edición del sistema, permite al programa dormir.
  • Líneas 6 y 7 definen el pin que supervisará el interruptor de apagado y el pin que controla la iluminación del LED en el interruptor.
  • Línea 8 utiliza la función "setmode" de la biblioteca GPIO para establecer qué esquema de numeración el programa utilizará para los pines GPIO.
  • Línea 9 utiliza la función "setup" de la biblioteca GPIO para configurar el pin GPIO para controlar el LED en el interruptor para ser un pin de salida.
  • Línea 10 utiliza la función "setup" de la biblioteca GPIO para configurar el pin GPIO para monitorear el interruptor para prensas a un pin de entrada.
  • Línea 11 utiliza la función de "salida" de la biblioteca GPIO para iluminar el LED en el interruptor por el valor del pin en true.
  • Línea 13 imprime un mensaje que indica que el interruptor ahora se está controlando.

Línea 18 utiliza la función "wait_for_edge" de la biblioteca GPIO para causar el programa esperar el cambio a ser presionado.

Líneas 19-21 se utilizan para la depuración. Se ejecutará cuando el programa se ejecuta desde la línea de comandos y pulse Ctrl/C estas líneas.

  • Línea 20 a imprimir un mensaje que indica que el usuario detiene el programa.
  • Línea 21 utiliza la función de "limpieza" de la biblioteca GPIO para detener la supervisión de los pines GPIO.

Líneas 22-26 se ejecutan presionando el interruptor de apagado.

  • Línea 23-25 causa el LED en el interruptor para apagar brevemente para proporcionar información al usuario que se presionó el interruptor.

    • Línea 22 imprimirá un mensaje que indica que se oprimió el interruptor de apagado.
    • Línea 23 utiliza la función de "salida" de la biblioteca GPIO para apagar el LED.
    • Línea 24 hace que el programa a dormir durante medio segundo.
    • Línea 25 nuevamente enciende el LED.
  • La línea 26 utiliza la función "subprocess.call" para ejecutar el comando "sudo halt" que hará que el Pi de frambuesa para apagar.

Cuando el Raspberry Pi ha apagado el LED en el interruptor de apagado apaga indicando que es seguro desconectar la cámara de la toma de corriente.

Artículos Relacionados

Con un Kindle Fire como monitor para su frambuesa pi

Con un Kindle Fire como monitor para su frambuesa pi

En esta insuperable mostraré cómo utilizar un incendio kindle como un monitor para una frambuesa pi. Tenía un viejo fuego kindle que me dieron hace unos años que ya no utilizo y pensé, ¿por qué no usarlo como monitor para mi frambuesa pi? Así, nació
Roberts 747 - DIY internet frambuesa Pi radio/streamer

Roberts 747 - DIY internet frambuesa Pi radio/streamer

747 de Roberts, gran radio de 1990. Totalmente trabajando en muy buen estado. Lo encontró en venta antiguo después de una larga cacería de algo como esto.Tengo un modelo Frambuesa Pi repuesto B V1 como un repuesto y sólo fue cogiendo polvo desde hace
Monitor para mascotas frambuesa Pi

Monitor para mascotas frambuesa Pi

Este Instructable le guiará a través de la configuración de un monitor del animal doméstico de frambuesa Pi base (sobre todo) sin cabeza. Este monitor para mascotas le avisará cada vez que tu mascota se convierte en ruido enviando una notificación Pu
Radio por Internet con un Evo T20 Thin Client que necesitan sin monitor teclado o ratón para ejecutar!

Radio por Internet con un Evo T20 Thin Client que necesitan sin monitor teclado o ratón para ejecutar!

Aquí es cómo utilizar un cliente Evo T20 como un receptor de radio de Internet independiente:Por qué hacerlo bien lo hice por 3 razones1] porque era un desafío2] tener una unidad silencioso de bajo consumo sólo 20 vatios pico en lugar de ejecutar una
Frambuesa Pi online SSH (manera fácil)

Frambuesa Pi online SSH (manera fácil)

Frambuesa pi es un mini ordenador que puede ser llevado fácilmente. Generalmente personas usan frambuesa Pi como una plataforma embedded. Y sobre todo control o desarrollar algo con su Pi frambuesa usando el protocolo SSH. porque es mucho más sencill
Cómo conectar frambuesa pi a pantalla de la laptop

Cómo conectar frambuesa pi a pantalla de la laptop

La razón por qué surgió esta insuperable es que: un día, me junto con mis amigos estuviera luchando por trabajar en la frambuesa pi, ya que no tenemos ninguna muestra de audio/vídeo HDMI. Por lo tanto, se me ocurrió con este tutorial para que serían
Conectar la frambuesa Pi a red mediante UART

Conectar la frambuesa Pi a red mediante UART

En este tutorial te mostrará cómo conectar su frambuesa Pi a Internet sólo mediante el uso de su línea serie accesible en GPIO. Esto puede ser muy útil si no se dispone de ningún otro medio de conexión como ethernet o wifi dongle. El puerto serie UAR
17" marco de fotos hecho de sola pieza madera losa (para marco de Fotos Digital)

17" marco de fotos hecho de sola pieza madera losa (para marco de Fotos Digital)

en este instructable voy a mostrar cómo hice un marco de madera sólida para un marco de foto digital de 17". También se podría crear un marco simplificado para regular imágenes. No todos los pasos se necesitará en ese caso. Sin embargo, se concentrar
LED Rave Solar compras carro triciclo

LED Rave Solar compras carro triciclo

En este instructivo vamos a tomar un carrito de la compra plástico, llenar su cesta controlable LED personalizado impreso PCB, utilizar microcontroladores PIC18F4550 para mostrar texto y sonido los patrones sensibles sobre los LED, soldar mejor rueda
Proyector Vintage Pi

Proyector Vintage Pi

Este proyector de diapositivas classic está equipado con una pantalla LCD en lugar de una diapositiva y un 20w LED como una fuente de luz. Este simple hack se puede hacer con casi cualquier proyector vintage y le dará el poder de usar las paredes en
Monitor de bebé de frambuesa Pi con Splunk

Monitor de bebé de frambuesa Pi con Splunk

Estos pasos le enseñará cómo montar los componentes necesarios para que un monitor de bebé de Raspberry Pi y recoger los datos en Splunk, un lector de registro y herramienta de análisis, programar los datos de una manera significativa. Al final usted
Internet de las cosas con frambuesa Pi - 1

Internet de las cosas con frambuesa Pi - 1

Cuando yo era nuevo en IOT (Internet de las cosas), vi que había apenas cualquier tutoriales que fueron lo suficientemente simples como para un principiante comprender y probar. Había a mucha jerga técnica, o el hardware era demasiado complejo.Ahora
1979 bang & Olufsen frambuesa Pi Radio por Internet

1979 bang & Olufsen frambuesa Pi Radio por Internet

esto es un 1979 Bang & Olufsen Beocord 1500 grabadora que he convertido en una independiente de radio por internet de Raspberry Pi. Los medidores de VU analógicos son conducidos por el Pi a través de un circuito DAC (convertidor analógico Digital), c
ESP8266 + frambuesa Pi Monitor de electricidad

ESP8266 + frambuesa Pi Monitor de electricidad

Yo siempre he estado vigilando mi metros de utilidad en la manera antigua. Primero les escribí en un pequeño libro (sí, soy ese viejo), más tarde escribí una hoja de cálculo y los últimos años estoy utilizando la aplicación para smartphone ACES para