Usando SMTP na IoT

O controle de dispositivos IoT requer aplicativos e configurações específicas. Mas você também pode controlá-los usando e-mails, já que o envio por e-mail é possível usando SMTP (Simple Mail Transfer Protocol), que está na pilha TCP/IP. Portanto, os dispositivos que suportam pilha TCP/IP podem usar e-mails como comando e controle.

Portanto, para fins de aplicação, faremos um dispositivo que detectará a presença de qualquer objeto em um determinado alcance e clicará em uma imagem quando alguém estiver no alcance de detecção do dispositivo. Por fim, enviará um e-mail com a imagem em anexo.

Componentes necessários

  1. Raspberry Pi
  2. Módulo de câmera Raspberry Pi
  3. Sensor ultrassônico (HC-SR04)
  4. Noções básicas de Python
  5. 1kΩ, 2kΩ Resistor, fios de jumper

Esquema e conexão

Figura 1. Diagrama de conexão

  1. Conecte VCC do HC-SR04 a 5V de Pi e GND ao terra
  2. Conecte TRIG Pi ao GPIO23
  3. Para o pino ECHO, o GPIO do Raspberry Pi não suporta um sinal de 5 V diretamente, então usaremos um divisor de tensão para conectar o pino ECHO ao GPIO24 e fazer um sinal de 5 V 3,3 V.

Compreender a funcionalidade básica

  1. Estaremos usando um script Python para controlar a entrada e saída do nosso módulo de sensor e dos módulos de câmera conectados ao Pi para detecção e detecção.
  2. O sensor enviará ondas ultrassônicas e detectará as ondas refletidas no pino ECHO; assim, podemos calcular a distância em que o objeto é colocado do sensor. Então, faremos uma área de distância onde poderemos receber um sinal de ECHO caso um objeto seja colocado ali.
  3. O sinal de eco funcionará como um botão de clique para nosso módulo de câmera, e assim obteremos uma imagem toda vez que alguém entrar na área de detecção.
  4. Depois de tirar a foto, usaremos SMTP para transferir a imagem capturada para nossa caixa de correio.

Implementação

Usaremos Python 2.7 para implementar a funcionalidade completa, incluindo muitas tarefas multithreading e paralelas; portanto, é necessário um entendimento básico de Python. A parte de implementação pode ser dividida em três partes.

  1. Importando bibliotecas importantes
  2. Detecção de objeto
  3. Clicando na imagem do objeto
  4. Enviando a imagem por e-mail para a caixa de correio

Configuração e importação de bibliotecas importantes: Para executar funções GPIO e de câmera no Raspberry Pi precisaremos de algumas bibliotecas Python. Também os importaremos para controlar nosso módulo de câmera.
Para a câmera, precisamos instalar a biblioteca usando o seguinte comando no terminal.
$ sudo apt-get install python-picamera

Após a instalação, importaremos o tema em nosso script principal. Importaremos nossas bibliotecas em cima disso.
importar RPi.GPIO como GPIO
importar picamera

Também temos que importar outras bibliotecas necessárias para multithreading.

Precisamos importar algumas bibliotecas como base64, MIME (para anexos como imagem) e SMPT, para emails.
importar imaplib
de base64 importar b64decode
de smtplib importar SMTP
de email.MIMEMultipart importar MIMEMultipart
de email.MIMEBase importar MIMEBase
de email.MIMEText importar MIMEText
de e-mail importar codificadores

Agora você precisa alterar as variáveis ​​que armazenam o valor de email e senha.
gmail_user = '(e-mail protegido)'
gmail_pwd = 'gmail_senha'
servidor = 'smtp.gmail.com'
porta_servidor = 587

Detecção de objeto: Criaremos uma função que continuará acionando o sensor ultrassônico para enviar ondas ultrassônicas e detectar se algo estiver no alcance.
enquanto GPIO.input(ECHO)==1:
Na detecção, esta função chamará uma função para clicar em uma imagem do objeto. Como esta é uma tarefa contínua, ela estará em nosso loop principal.
se distância
captura_imagem

Clicando na imagem do objeto: Para clicar na imagem do objeto, criaremos uma função que clicará ao chamar e armazenar a imagem no armazenamento local.
câmera.capture (caminho do arquivo)
Após clicar, ele chamará uma função que estará redigindo um e-mail com a imagem em anexo.
download('Imagem', caminho do arquivo)

Enviando a imagem por e-mail para a caixa de correio:
Usando a biblioteca SMTP e seus métodos, esta função pega parâmetros como nome da imagem e seu caminho, hora do clique e e-mail para a caixa de correio. É uma tarefa paralela, pois o upload pode levar tempo de acordo com a velocidade da conexão. Não queremos parar outra tarefa nesse período.
sendEmail(agora mesmo, self.jobid, (self.filepath))

Então, é assim que podemos usar e-mails para nos comunicar com nossos dispositivos IoT.

Código:

Vídeo

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.