Hacer una luz de notificación de Raspberry Pi Gmail

  • Peter Holmes
  • 0
  • 4129
  • 1048
Anuncio

En este proyecto rápido y fácil de Raspberry Pi, aprenderá cómo hacer que se encienda una notificación de correo electrónico de Gmail. Si tiene correos electrónicos no leídos, un script de Python enciende el LED. ¡Este proyecto requiere muy pocas partes y se puede completar en menos de una hora! Por supuesto, puede vestir su LED de la forma que desee, como un bloque de piedra roja MineCraft u otro objeto impreso en 3D en plástico transparente. Aquí está el resultado final:

Que necesitas

  • 1 x frambuesa pi
  • 1 x tablero
  • 1 x resistencia de 220 ohmios
  • 1 x 5 mm LED
  • 1 x cuenta de Gmail
  • Cables de conexión macho a hembra

Cualquier Raspberry Pi funcionará para este proyecto, ¡incluso el Pi Zero! Solo se necesita un pin GPIO, y no es particularmente intensivo en CPU. Si tiene un kit de inicio de Pi, tiene piezas más que suficientes para completar esto.

Plan de construcción


Este es un proyecto realmente simple. Un diodo emisor de luz (LED) está conectado a un pin GPIO (entrada de salida de propósito general) en el Pi. Se ejecutará regularmente un script Python muy simple para verificar los correos electrónicos no leídos y encender o apagar el LED en consecuencia.

El hardware


Conecte el ánodo positivo (pata larga) del LED a la resistencia y luego al pin GPIO 14. Puede usar cualquier pin GPIO, sin embargo, mire primero el pinout, ya que varían ligeramente entre los modelos. Conecte el cátodo negativo (pata corta con borde plano) a tierra.

Pi Setup


Si su Pi tiene un sistema operativo (SO) instalado, no se necesita mucha configuración (¿no está seguro de lo que necesita? Aprenda cómo instalar uno aquí Cómo instalar un sistema operativo en una Raspberry Pi Cómo instalar un sistema operativo en una Frambuesa) Pi Aquí se explica cómo instalar un sistema operativo en su Raspberry Pi y cómo clonar su configuración perfecta para una recuperación rápida ante desastres). Abrir una nueva terminal (Arriba a la izquierda > menú > Accesorios > Terminal) en el Pi (revisa estos atajos para convertirte en un ninja de codificación Ahorra tiempo en el terminal Linux con estos 20 atajos Ahorra tiempo en el terminal Linux con estos 20 atajos Ya seas un novato en la terminal o alguien que superó el miedo hace mucho tiempo , aquí hay 20 accesos directos que pueden ayudarlo a superar algunas de las dificultades de la línea de comando). Necesita crear una nueva carpeta para almacenar el script de Python. Ingrese el siguiente comando:

pwd

Esto significa “Imprimir directorio de trabajo”, y te mostrará en qué carpeta estás (por defecto esto será “/ inicio / pi”) Navegue a la carpeta de documentos y cree un nuevo directorio (carpeta) llamado “gmail_python”:

Documentos de CD / sudo mkdir gmail_python

los “mkdir” comando significa “Hacer directorio”. Cualquier cosa que siga a esto se usará para el nombre del directorio. Ahora debería poder ver su directorio:

ls

Si cometió un error, puede eliminar fácilmente este directorio:

sudo rm -r gmail_python

Ahora navegue al nuevo directorio:

cd gmail_python /

Cree un nuevo script de Python:

sudo nano check_messages.py

Esto creará el script y lo abrirá listo para editar en Nano. Por supuesto, podría usar otro programa, como Vim, aunque este tweet resume mis sentimientos al respecto:

He estado usando Vim durante aproximadamente 2 años, principalmente porque no puedo encontrar la manera de salir de él..

- I Am Devloper (@iamdevloper) 17 de febrero de 2014

Bromas aparte, mira esta comparación entre los dos nano vs. vim: Editores de texto de terminal comparados nano vs. vim: Editores de texto de terminal comparados Aunque Linux se ha vuelto lo suficientemente fácil para que prácticamente cualquiera pueda usarlo sin tener que usar el Terminal, hay algunos de nosotros que lo usamos regularmente o tenemos curiosidad acerca de cómo se puede controlar ... para un desglose completo.

prensa CTRL + X para salir de Nano y volver a la terminal.

Configuración de Python


Ahora que el Pi está configurado, es hora de escribir el código. Este proyecto requiere la excelente biblioteca Gmail Python de Charlie Guo. Descargue la biblioteca de Github y extraiga los contenidos. Dentro debe haber una carpeta llamada “gmail”. Copie esta carpeta completa en “/ home / pi / Documentos / gmail_python”.

Vuelva a la línea de comando y abra su script nuevamente (si presiona la tecla arriba puede desplazarse por los comandos ingresados ​​anteriormente):

sudo nano check_messages.py

Observe que ese es el mismo comando que utilizó para crear el archivo: si ya existe un archivo, se abrirá; de lo contrario, se creará. Aquí está el Python:

importar gmail, RPi.GPIO como GPIO, tiempo # importar módulos GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) # decirle al Pi qué encabezados usar GPIO.setup (14, GPIO.OUT) # decirle al Pi esto pin es una salida g = gmail.login ('[email protected] ',' YOUR PASSWORD ') unread_messages = g.inbox (). mail (unread = True) total_messages = 0 para el mensaje en unread_messages: total_messages + = 1 if total_messages> 0: # hay correos electrónicos no leídos, encienda GPIO.output (14, True) más: # no hay correos electrónicos no leídos, apague GPIO.output (14, False)

Deberá ingresar su nombre de usuario y contraseña para que esto funcione. Si lo desea, puede ver el código fuente completo del complemento de gmail. Si no se siente cómodo haciendo esto (o está utilizando la autenticación de dos factores), deberá conectarse a Gmail con OAuth2. Esto es un poco complicado para este tutorial, sin embargo, Google tiene una excelente guía de inicio.

Analicemos el código. Primero se importan algunos módulos. Los módulos en Python son pequeños trozos de código escritos para un propósito (similar a las bibliotecas en el IDE de Arduino). RPi.GPIO es un módulo específico de Pi para acceder a GPIO, gmail es el módulo que descargó anteriormente y time es un módulo integrado en Python para proporcionar funciones de temporización. Ahora “GPIO.setmode” y “GPIO.setup” se usan para decirle al Pi que el pin 14 es una salida y que desea usar “Broadcom Pin Numbering” (más información sobre BCM).

Esta línea se conecta a su cuenta de gmail. Crea un objeto llamado “sol”, y llama al método de inicio de sesión del módulo de gmail importado anteriormente. No olvides ingresar tu correo electrónico y contraseña de gmail.

g = gmail.login ('SU CORREO ELECTRÓ[email protected]', 'SU CONTRASEÑA')

Ahora recupere todos los mensajes no leídos y guárdelos en una variable llamada “mensajes no leídos”:

unread_messages = g.inbox (). mail (no leído = True)

Date cuenta cómo “no leído = verdadero” se pasa como un parámetro; puede cambiar esto para recuperar mensajes basados ​​en diferentes parámetros, como el remitente o el asunto. Consulte la documentación de la Interfaz de programación de aplicaciones (API) para obtener más información..

A continuación, se usa un bucle for para recorrer cada mensaje:

para mensaje en mensajes no leídos: mensajes_total + = 1

Para los bucles son muy útiles. Repiten un bloque de código varias veces, a menudo con un valor ligeramente diferente cada vez. Este bucle for pasa sobre cada mensaje en unread_messages e incrementa el “mensajes_total” variable.

Finalmente, algunas simples “Si” Se utilizan declaraciones. Si hay mensajes no leídos, encienda el LED, de lo contrario, apáguelo si está apagado.

Recuerde que Python distingue entre mayúsculas y minúsculas y utiliza espacios en blanco. Si tiene problemas para ejecutar el código, pruebe este sitio web. Pega tu Python y presiona el “validar el código de Python anterior” botón. Esto debería decirle qué errores (si los hay) están presentes en su Python.

Cambie a la Terminal y ejecute su script:

python check_messages.py

Este comando ejecutará su script. Intente cambiar manualmente algunos correos electrónicos en su bandeja de entrada a estado no leído y vuelva a ejecutar el script; debería ver que el LED se enciende o apaga para reflejar su bandeja de entrada.

Configuración de Cron

Ahora que el script funciona, es hora de automatizarlo. La forma más fácil de hacerlo es a través de un trabajo cron. Los trabajos de Cron se utilizan para programar tareas y secuencias de comandos, como copias de seguridad automáticas. Abra el Crontab (lista de tareas programadas):

crontab -e

Si no hay tareas programadas ya configuradas, este archivo estará vacío (puede contener documentación o comentarios, precedido por un “# #”) Si ya tiene entradas aquí, simplemente ingrese su nuevo comando en una nueva línea:

* * * * * python ~ / pi / Documents / gmail_python / check_messages.py

El cinco “estrellas” (“* * * * *”) especifique con qué frecuencia ejecutar la tarea (puede ser realmente elegante aquí, por ejemplo, cada segundo miércoles a las 2.00). Estas cinco estrellas especifican que la tarea debe ejecutarse cada minuto. Este es el intervalo más pequeño permitido (obtenga más información sobre la programación de cronjob Cómo programar tareas en Linux con Cron y Crontab Cómo programar tareas en Linux con Cron y Crontab La capacidad de automatizar tareas es una de esas tecnologías futuristas que ya está aquí. Cada Linux el usuario puede beneficiarse del sistema de programación y las tareas del usuario, gracias a cron, un servicio en segundo plano fácil de usar). próximo, “pitón” le dice al planificador que ejecute el script como un archivo python. Finalmente, “~ / pi / Documents / gmail_python / check_messages.py” es la ruta absoluta del archivo a su script; una ruta relativa no funcionará.

¡Ahora debería tener su propia luz de notificación de Gmail! Sería bastante simple modificar esto para buscar mensajes basados ​​en un requisito o filtro diferente (aprenda cómo usar los filtros aquí. 10 Problemas de correo electrónico que puede resolver con los filtros de Gmail 10 Problemas de correo electrónico que puede resolver con los filtros de Gmail Una bandeja de entrada desbordante que lo vuelve loco ¿Desea ingresar a su bandeja de entrada más rápido que nunca? Pruebe algunos de estos brillantes filtros de Gmail para ver la diferencia), o ejecute un código diferente; tal vez podría crear un bot de Twitter que tuitee en base a correos electrónicos (obtenga más información sobre construir un bot de Twitter Pi Cómo construir un bot de Twitter Raspberry Pi Cómo construir un bot de Twitter Raspberry Pi Twitter es el mayor depósito mundial de mensajes cortos de personas sin nada que decir, y ahora usted también puede contribuir a ese proyecto épico con un automatizado Bot de Twitter, impulsado por tu Raspberry ...).

Sin embargo, terminas codificando tu cuadro de notificación, me encantaría saber cómo va en los comentarios!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.