Faça uma luz de notificação do Gmail Raspberry Pi

Neste rápido e fácil projeto Raspberry Pi, você aprenderá a fazer uma luz de notificação por e-mail do Gmail. Se você tiver algum e-mail não lido, um script Python ligará o LED.

Neste rápido e fácil projeto Raspberry Pi, você aprenderá a fazer uma luz de notificação por e-mail do Gmail.  Se você tiver algum e-mail não lido, um script Python ligará o LED.
Propaganda

Neste rápido e fácil projeto Raspberry Pi, você aprenderá a fazer uma luz de notificação por e-mail do Gmail. Se você tiver algum e-mail não lido, um script Python ligará o LED. Este projeto requer muito poucas peças e pode ser concluído em menos de uma hora! É claro que você pode vestir o seu LED da maneira que quiser, como um bloco de pedra vermelha do MineCraft ou outro objeto 3D impresso em plástico transparente. Aqui está o resultado final:

O que você precisa

  • 1 x Raspberry Pi
  • 1 x tábua de pão
  • Resistor de 1 x 220 ohm
  • 1 x 5mm LED
  • 1 x conta do Gmail
  • Macho para fêmea ligar fios

Qualquer Raspberry Pi funcionará para este projeto - até mesmo o Pi Zero! Apenas um pino GPIO é necessário e não é particularmente intensivo da CPU. Se você tem um kit de iniciação Pi, você tem peças mais do que suficientes para completar isso.

Plano de construção

LED de notificação do Gmail
Este é um projeto realmente simples. Um diodo emissor de luz (LED) é conectado a um pino GPIO (General Purpose Input Output) do Pi. Um script Python muito simples será executado regularmente para verificar e-mails não lidos e ativar ou desativar o LED de acordo.

O hardware

Circuito de Notificação do Gmail
Conecte o ânodo positivo (long leg) do LED ao resistor e depois ao GPIO pino 14. Você pode usar qualquer pino GPIO, mas olhe primeiro para a pinagem, pois eles variam um pouco entre os modelos. Conecte o cátodo negativo (perna curta com borda plana) ao terra.

Configuração Pi

Gmail-Notificação-Pi
Fornecendo o seu Pi tem um sistema operacional (OS) instalado não há muita configuração necessária (não tem certeza do que você precisa? Saiba como instalar um aqui Como instalar um sistema operacional para o seu Raspberry Pi Como instalar um sistema operacional para sua framboesa Pi Veja como obter um novo sistema operacional instalado e em execução no seu Pi - e como clonar sua configuração perfeita para recuperação rápida de desastres. Abra um novo terminal (Parte superior esquerda > menu > Acessórios > Terminal ) no Pi (confira esses atalhos para torná-lo um ninja de codificação Economize tempo no terminal Linux com esses 20 atalhos Economize tempo no terminal Linux com esses 20 atalhos, seja você ' Se você é um novato terminal ou alguém que superou o medo há muito tempo, aqui estão 20 atalhos que podem ajudá-lo a superar um pouco do embaraço da linha de comando. Você precisa criar uma nova pasta para armazenar o script Python. Digite o seguinte comando:

pwd 

Isso significa “Print Working Directory”, e mostrará em qual pasta você está (por padrão, isto é “/ home / pi”). Navegue até a pasta de documentos e crie um novo diretório (pasta) chamado “gmail_python”:

 cd Documents/ sudo mkdir gmail_python 

O comando “mkdir” significa “Make Directory”. Qualquer coisa após isso será usado para o nome do diretório. Agora você deve poder ver seu diretório:

 ls 

Se cometeu um erro, você pode facilmente remover este diretório:

 sudo rm -r gmail_python 

Agora navegue até o novo diretório:

 cd gmail_python/ 

Crie um novo script Python:

 sudo nano check_messages.py 

Isso criará o script e o abrirá pronto para edição no Nano. Você poderia, é claro, usar outro programa, como o Vim, embora este tweet seja um resumo de meus sentimentos sobre isso:

Eu uso o Vim há cerca de 2 anos, principalmente porque não consigo descobrir como sair dele.

- Eu sou Devloper (@iamdevloper) 17 de fevereiro de 2014

Brincadeiras à parte, confira essa comparação entre os dois nano vs. vim: Comparadores de texto de terminal Comparado nano vs. vim: Comparadores de texto de terminal comparados Embora o Linux tenha se tornado fácil para praticamente qualquer um usar sem precisar usar o Terminal, existem alguns de nós que o usam regularmente ou estão curiosos sobre como alguém pode controlar ... Leia Mais para um detalhamento completo.

Pressione CTRL + X para sair do Nano e voltar ao terminal.

Configuração do Python

Código de notificação do Gmail
Agora que o Pi está configurado, é hora de escrever o código. Este projeto requer a excelente Biblioteca Python do Gmail, de Charlie Guo. Baixe a biblioteca do Github e extraia o conteúdo. Dentro deve haver uma pasta chamada "gmail". Copie esta pasta inteira em “/ home / pi / Documents / gmail_python”.

Volte para a linha de comando e abra o script novamente (se você pressionar a tecla para cima, você pode rolar pelos comandos inseridos anteriormente):

 sudo nano check_messages.py 

Observe como esse é o mesmo comando que você usou para criar o arquivo - se um arquivo já existir, ele será aberto, caso contrário, ele será criado. Aqui está o 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) 

Você precisará digitar seu nome de usuário e senha para que isso funcione. Você pode ver o código-fonte completo do plugin do Gmail, se quiser. Se você não se sentir à vontade para fazer isso (ou estiver usando a autenticação de dois fatores), será necessário se conectar ao Gmail usando o OAuth2. Isso é um pouco complicado para este tutorial, mas o Google tem um excelente guia de primeiros passos.

Vamos detalhar o código. Primeiro alguns módulos são importados. Módulos em Python são pequenos pedaços de código escritos para um propósito (similar às bibliotecas no Arduino IDE). O RPi.GPIO é um módulo específico do Pi para acessar o GPIO, o gmail é o módulo que você baixou anteriormente e o tempo é um módulo embutido no Python para fornecer funções de temporização. Agora, “GPIO.setmode” e “GPIO.setup” são usados ​​para informar ao Pi que o pino 14 é uma saída e que você deseja usar “Broadcom Pin Numbering” (mais informações sobre o BCM).

Esta linha se conecta à sua conta do Gmail. Ele cria um objeto chamado "g" e chama o método de login do módulo do Gmail, importado anteriormente. Não se esqueça de digitar seu e-mail e senha do Gmail.

 g = gmail.login('[email protected]', 'YOUR PASSWORD') 

Agora, recupere todas as mensagens não lidas e armazene-as em uma variável chamada "mensagens não lidas":

 unread_messages = g.inbox().mail(unread=True) 

Observe como “unread = True” é passado como um parâmetro - você pode alterar isso para recuperar mensagens com base em parâmetros diferentes, como remetente ou assunto. Confira a documentação da API (Application Programming Interface) para obter mais informações.

Em seguida, um loop for é usado para fazer o loop de todas as mensagens:

 for message in unread_messages: total_messages += 1 

For loops são muito úteis. Eles repetem um bloco de código várias vezes, geralmente com um valor ligeiramente diferente a cada vez. Esse loop for repassa toda mensagem em unread_messages e incrementa a variável “total_messages”.

Finalmente, algumas instruções simples “se” são usadas. Se houver mensagens não lidas, ligue o LED, caso contrário, desligue-o.

Lembre-se de que o Python faz distinção entre maiúsculas e minúsculas e usa o espaçamento em branco. Se você está tendo problemas para executar o código, experimente este site. Cole o seu Python e pressione o botão “validate above python code”. Isso deve informar a você quais erros (se houver) estão presentes em seu Python.

Alterne para o Terminal e execute seu script:

 python check_messages.py 

Este comando irá executar o seu script. Tente alterar manualmente alguns e-mails na sua caixa de entrada para o status não lido e executar o script novamente. Você deverá ver o LED ligado ou desligado para refletir sua caixa de entrada.

Configuração Cron

Agora que o script funciona, é hora de automatizá-lo. A maneira mais fácil de fazer isso é através de um cron job. As tarefas Cron são usadas para agendar tarefas e scripts, como backups automatizados. Abra o Crontab (lista de tarefas agendadas):

 crontab -e 

Se não houver tarefas agendadas já configuradas, este arquivo estará vazio (pode conter documentação ou comentários, precedidos por um “#”). Se você já tem entradas aqui, basta digitar seu novo comando em uma nova linha:

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

As cinco “estrelas” (“* * * * *”) especificam com que frequência executar a tarefa (você pode ficar realmente chique aqui, por exemplo, toda segunda quarta-feira às 2:00). Essas cinco estrelas especificam que a tarefa deve ser executada a cada minuto. Este é o menor intervalo permitido (saiba mais sobre o cronjob scheduling Como Agendar Tarefas no Linux com Cron e Crontab Como Agendar Tarefas no Linux com Cron e Crontab A capacidade de automatizar tarefas é uma daquelas tecnologias futuristas que já estão aqui. o usuário pode se beneficiar do agendamento de tarefas do sistema e do usuário, graças ao cron, um serviço em segundo plano fácil de usar. Em seguida, “python” diz ao agendador para executar o script como um arquivo python. Finalmente, “~ / pi / Documents / gmail_python / check_messages.py” é o caminho absoluto do arquivo para o seu script - um caminho relativo não funcionará.

Agora você deve ter sua própria luz de notificação do Gmail! Seria bastante simples modificá-lo para procurar mensagens com base em um requisito ou filtro diferente (saiba como usar filtros aqui) 10 Problemas de e-mail que você pode resolver com os filtros do Gmail 10 Problemas de e-mail que você pode resolver com filtros do Gmail "Você quer acessar sua caixa de entrada mais rápido do que nunca? Experimente alguns desses filtros brilhantes do Gmail para ver a diferença. Leia mais), ou execute um código diferente - talvez você possa criar um bot do Twitter com tweets baseados em e-mails mais sobre como construir um bot Twitter Pi Como construir um bot Raspberry Pi Twitter Como construir um bot Raspberry Pi Twitter é o maior repositório mundial de mensagens curtas de pessoas com nada a dizer - e agora você também pode contribuir para esse projeto épico com um bot automatizado do Twitter, alimentado por seu Raspberry ... Leia mais).

No entanto você acaba de codificar sua caixa de notificação, eu adoraria saber como vai nos comentários!

In this article