Hacer una luz de notificación de Raspberry Pi Gmail

Hacer una luz de notificación de Raspberry Pi Gmail / Bricolaje

En este proyecto Raspberry Pi rápido y fácil, aprenderá cómo hacer que la luz de notificación de correo electrónico de Gmail. Si tiene algún correo electrónico no leído, 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 Raspberry Pi
  • 1 x tablero de pan
  • 1 x resistencia de 220 ohmios
  • 1 x 5mm LED
  • 1 x cuenta de Gmail
  • Macho a hembra enganche los cables

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

Plan de construcción


Este es un proyecto muy simple. Un diodo emisor de luz (LED) está conectado a un pin GPIO (salida de propósito general) en la Pi. Una secuencia de comandos de Python muy simple se ejecutará regularmente para revisar los correos electrónicos no leídos y encender o apagar el LED como corresponde.

El hardware


Conecte el ánodo positivo (pata larga) del LED al resistor 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 (pierna corta con borde plano) al suelo.

Configuración de pi


Si su Pi tiene un sistema operativo (SO) instalado, no se necesita mucha configuración (¿no está seguro de lo que necesita? Aprenda a instalar uno aquí Cómo instalar un sistema operativo en su Raspberry Pi Cómo instalar un sistema operativo en su Raspberry Pi A continuación, le indicamos cómo instalar y ejecutar un nuevo sistema operativo en su Pi, y cómo clonar su configuración perfecta para una rápida recuperación de desastres. Abre una nueva terminal (Arriba a la izquierda > menú > Accesorios > Terminal) en el Pi (compruebe estos accesos directos para convertirlo en un ninja de código Ahorre tiempo en el terminal de Linux con estos 20 accesos rápidos Ahorre tiempo en el terminal de Linux con estos 20 accesos directos Ya sea que sea un novato en el terminal o alguien que superó el temor hace mucho tiempo , aquí hay 20 accesos directos que pueden ayudarlo a superar algunos de los inconvenientes de la línea de comandos. Leer más). Debe crear una nueva carpeta para almacenar el script de Python. Ingrese el siguiente comando:

pwd

Esto significa “Imprimir directorio de trabajo”, y le mostrará la carpeta en la que se encuentra (por defecto, esta “/ home / pi”). Navegue a la carpeta de documentos y cree un nuevo directorio (carpeta) llamado “gmail_python”:

cd Documentos / 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 en el nuevo directorio:

cd gmail_python /

Crear un nuevo script de Python:

sudo nano check_messages.py

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

He estado usando Vim por cerca de 2 años, principalmente porque no puedo entender cómo salir.

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

Dejando de lado las bromas, echa un vistazo a esta comparación entre nano y vim: editores de texto de terminal comparados nano y vim: editor de texto de terminal en comparación Aunque Linux se ha vuelto lo suficientemente fácil para que casi cualquier persona lo use sin tener que usar el terminal, hay algunos de nosotros que lo usamos regularmente o tenemos curiosidad acerca de cómo se puede controlar ... Leer más para un desglose completo.

prensa CTRL + X 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 de Gmail Python de Charlie Guo. Descarga la biblioteca de Github y extrae los contenidos. Dentro debería haber una carpeta llamada “gmail”. Copie toda esta carpeta en “/ home / pi / Documents / gmail_python”.

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

sudo nano check_messages.py

Observe cómo ese es el mismo comando que usó 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, enciende la luz en GPIO.output (14, Verdadero) otra cosa: # no hay correos electrónicos no leídos, apaga la luz GPIO.output (14, Falso)

Deberá ingresar su nombre de usuario y contraseña para que esto funcione. Puede ver el código fuente completo del complemento de gmail si lo desea. Si no te sientes cómodo haciendo esto (o estás usando autenticación de dos factores), necesitarás conectarte a Gmail usando OAuth2. Esto es un poco complicado para este tutorial, sin embargo, Google tiene una excelente guía de inicio.

Vamos a desglosar el código. Primero se importan algunos módulos. Los módulos en Python son pequeños fragmentos 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 descargaste anteriormente y la hora es un módulo integrado en Python para proporcionar funciones de temporización. Ahora “GPIO.setmode” y “GPIO.setup” se utilizan para indicar a Pi que el pin 14 es una salida, y que desea usar “Numeración de pines de Broadcom” (más información sobre BCM).

Esta línea se conecta a tu 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 introducir tu email y contraseña de Gmail..

g = gmail.login ('[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 (unread = True)

Date cuenta cómo “no leído = Verdadero” se pasa como un parámetro: puede cambiarlo 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 mucha más información..

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

para el mensaje en unread_messages: total_messages + = 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 recorre cada mensaje en mensajes no leídos e incrementa el “total_messages” variable.

Finalmente, algunas sencillas. “Si” Se utilizan declaraciones. Si hay mensajes no leídos, encienda el LED, de lo contrario apague 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 pitón y presiona el “validar el código de Python anterior” botón. Esto debería decirte qué errores (si los hay) están presentes en tu 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 sin leer y ejecute el script nuevamente. Debe ver que el LED se enciende o apaga para reflejar su bandeja de entrada..

Configuración cron

Ahora que el script funciona, es hora de automatizarlo. La forma más fácil de hacer esto es a través de un trabajo cron. Los trabajos de Cron se utilizan para programar tareas y scripts, como copias de seguridad automatizadas. 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, precedidos 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 sofisticado 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 (aprenda más acerca de la programación de tareas cronológicas 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 se encuentra aquí. Todos los Linux el usuario puede beneficiarse de la programación del sistema y las tareas del usuario, gracias a cron, un servicio en segundo plano fácil de usar. Leer más). Siguiente, “pitón” le dice al programador que ejecute el script como un archivo python. Finalmente, “~ / pi / Documents / gmail_python / check_messages.py” es la ruta de archivo absoluta a su script - una ruta relativa no funcionará.

¡Ahora debería tener su propia luz de notificación de Gmail! Sería bastante sencillo 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 filtros de Gmail 10 Problemas de correo electrónico que puede resolver con filtros de Gmail Una bandeja de entrada desbordante que lo vuelve loco "¿Desea hacerlo a través de su bandeja de entrada más rápido que nunca? Pruebe algunos de estos brillantes filtros de Gmail para ver la diferencia. Lea más), o ejecute un fragmento de código diferente. Tal vez pueda crear un bot de Twitter que emita tweets basados ​​en correos electrónicos. más sobre la creación de un bot de Pi Pi Twitter Cómo construir una Raspberry Pi Bot de Twitter Cómo construir una Raspberry Pi Twitter Bot es el depósito más grande del mundo de mensajes cortos de personas sin nada que decir, y ahora usted también puede contribuir a ese proyecto épico con un robot automatizado de Twitter, impulsado por tu Raspberry… Leer más).

Sin embargo, terminas codificando tu casilla de notificación, me encantaría saber cómo van los comentarios.!

Explora más sobre Gmail, Raspberry Pi.