En este rápido y sencillo proyecto Raspberry Pi, aprenderá cómo hacer que las notificaciones de correo electrónico de Gmail se iluminen. Si tiene correos electrónicos no leídos, una secuencia de comandos de Python enciende el LED. ¡Este proyecto requiere muy pocas partes y puede completarse en menos de una hora! Por supuesto, puede vestir su LED como lo 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 placa de prueba
- 1 x resistencia de 220 ohmios
- 1 x 5 mm LED
- 1 x cuenta de Gmail
- Macho a hembra conectar cables
Cualquier Raspberry Pi funcionará para este proyecto, ¡incluso el Pi Zero! Solo se necesita un pin GPIO y no requiere mucha CPU. Si tienes un kit de inicio Pi, tienes más que suficientes piezas para completar esto.
Plan de compilación
Este es un proyecto realmente simple. Un diodo emisor de luz (LED) está conectado a un pin GPIO (salida de entrada de propósito general) en el Pi. Un script de Python muy simple se ejecutará regularmente 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 14 de GPIO. Puede usar cualquier pin GPIO, sin embargo, primero mire la pinout, ya que varían ligeramente entre los modelos. Conecte el cátodo negativo (pata corta con borde plano) a tierra.
Configuración Pi
Siempre que su Pi tenga instalado un sistema operativo (SO) no necesita mucha configuración (no está seguro de lo que necesita) Aprenda cómo instalar uno aquí Cómo instalar un sistema operativo en su Raspberry Pi Cómo instalar un sistema operativo en su frambuesa Pi Aquí le mostramos cómo instalar y ejecutar un nuevo sistema operativo en su Pi, y cómo clonar su configuración perfecta para una recuperación de desastres rápida. Lea más). Abre una nueva terminal ( arriba a la izquierda > menú > Accesorios > Terminal ) en el Pi (selecciona estos atajos para convertirte en ninja de codificación). Ahorra tiempo en la Terminal Linux con estos 20 atajos. Ahorra tiempo en la terminal Linux con estos 20 atajos. Eres un novato terminal o alguien que superó el miedo hace mucho tiempo, aquí hay 20 atajos que te pueden ayudar a superar la torpeza de la línea de comandos. Leer más). Necesita crear una nueva carpeta para almacenar el script de Python. Ingrese el siguiente comando:
pwd
Esto significa "Imprimir Directorio de trabajo", y le mostrará en qué carpeta se encuentra (por defecto, esto es "/ home / pi"). Navegue a la carpeta de documentos y cree un nuevo directorio (carpeta) llamado "gmail_python":
cd Documents/ sudo mkdir gmail_python
El comando "mkdir" 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 hacia el nuevo directorio:
cd gmail_python/
Crea una nueva secuencia de comandos de Python:
sudo nano check_messages.py
Esto creará el script y lo abrirá listo para editar en Nano. Por supuesto, podría utilizar 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 descifrar cómo salir de él.
- Soy Devloper (@iamdevloper) 17 de febrero de 2014
Bromas aparte, compruebe 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 bastante fácil de usar para prácticamente cualquier persona sin tener que usar el terminal, hay algunos de nosotros que lo usamos regularmente o tenemos curiosidad sobre cómo se puede controlar ... Leer más para obtener un desglose completo.
Presione 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 de Gmail Python de Charlie Guo. Descargue la biblioteca de Github y extraiga los contenidos. Dentro debe haber una carpeta llamada "gmail". Copie toda esta carpeta en "/ home / pi / Documents / gmail_python".
Vuelve a la línea de comando y abre el script nuevamente (si presionas la tecla hacia arriba puedes desplazarte 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, se abrirá, de lo contrario se creará. Aquí está el Python:
import gmail, RPi.GPIO as GPIO, time # import modules GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output g = gmail.login('[email protected]', 'YOUR PASSWORD') unread_messages = g.inbox().mail(unread=True) total_messages = 0 for message in unread_messages: total_messages += 1 if total_messages>0: # there are unread emails, turn light on GPIO.output(14, True) else: # there are no unread emails, turn light off GPIO.output(14, False)
Deberá ingresar su nombre de usuario y contraseña para que esto funcione. Puede ver el código fuente completo para el complemento de Gmail si lo desea. Si no te sientes cómodo haciendo esto (o estás usando la 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 introducción.
Desglosemos el código. Primero algunos módulos son importados. 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 descargó anteriormente, y el tiempo es un módulo integrado en Python para proporcionar funciones de temporización. Ahora "GPIO.setmode" y "GPIO.setup" se utilizan para indicar al Pi que el pin 14 es una salida, y que desea usar "Numeración de clavijas Broadcom" (más información sobre BCM).
Esta línea se conecta a su cuenta de Gmail. Crea un objeto llamado "g" y llama al método de inicio de sesión del módulo de Gmail importado previamente. No olvide ingresar su correo electrónico y contraseña de gmail.
g = gmail.login('[email protected]', 'YOUR PASSWORD')
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)
Observe cómo se pasa "unread = True" como 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 mucha más información.
A continuación, se utiliza un bucle for para recorrer cada mensaje:
for message in 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 repasa cada mensaje en unread_messages e incrementa la variable "total_messages".
Finalmente, se usan algunas declaraciones simples "si". Si hay mensajes no leídos, enciéndalo, de lo contrario, apáguelo.
Recuerde que Python distingue entre mayúsculas y minúsculas y utiliza espaciado blanco. Si tiene problemas para ejecutar el código, intente con este sitio web. Pega tu Python y presiona el botón "validar el código de python". Esto debería decirle qué (si hay) errores 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 para no leer el estado y volver a ejecutar el guión: debería ver que el LED se encienda o apague 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 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, precedido de un "#"). Si ya tiene entradas aquí, simplemente ingrese su nuevo comando en una nueva línea:
* * * * * python ~/pi/Documents/gmail_python/check_messages.py
Las cinco "estrellas" ("* * * * *") especifican la frecuencia con la que se ejecuta la tarea (puede ser realmente elegante aquí, por ejemplo, cada segundo miércoles a las 2:00). Estas cinco estrellas especifican que la tarea se debe ejecutar cada minuto. Este es el intervalo más pequeño permitido (aprenda más sobre programación 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í. el usuario puede beneficiarse del sistema de programación y tareas del usuario, gracias a cron, un servicio en segundo plano fácil de usar. Lea más). A continuación, "python" le dice al programador que ejecute el script como un archivo de 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 (aprende a usar filtros aquí 10 Problemas de correo electrónico que puedes resolver con Gmail 10 Problemas de correo electrónico que puedes resolver con filtros de Gmail Una bandeja de entrada desbordante que te vuelve loco ¿Desea utilizar su bandeja de entrada más rápido que nunca? Pruebe algunos de estos filtros de Gmail para ver la diferencia. Lea más), o ejecute un código diferente: tal vez podría crear un bot de Twitter que tuitee basado en correos electrónicos (aprenda más sobre construir un bot de Twitter Pi Cómo construir un Bot de Twitter sobre Raspberry Pi Cómo crear un Twitter Bot de Raspberry Pi Twitter es el mayor repositorio mundial de mensajes cortos de personas sin nada que decir, y ahora tú también puedes contribuir a ese proyecto épico con un robot de Twitter automatizado, impulsado por su Raspberry ... Leer más).
Sin embargo, terminas codificando tu casilla de notificación, ¡me encantaría saber cómo va en los comentarios!