Bot Telegram com a Beaglebone Black 4

BeagleBone Black tem inúmeras utilidades para projetos. Com ela é possível fazer praticamente qualquer projeto envolvendo rede, internet ou até alguns que funcionem isoladamente. Independente do projeto a ser realizado, deve existir alguma interface com o usuário (seja por teclado, display, socket, etc.). Neste post vamos montar um Bot Telegram com Beaglebone Black, um sistema de monitoramento por imagens de webcam que utiliza o serviço de mensagens instantâneas Telegram.

Bot Telegram com Beaglebone Black

Este projeto foi baseado neste excelente projeto do André Curvello.

Materiais necessários

Para a realização deste projeto você vai precisar de:

O que é o Telegram

O Telegram é um serviço de mensagens instantâneas multi-plataforma totalmente grátis (e open-source!). Isso significa que pode ser usado no Windows Desktop, iOS, Android, Windows Phone, Linux e por aí vai. É um dos concorrentes do famoso WhatsApp.

Telegram

Em relação ao seu rival WhatsApp, o Telegram possui como principal vantagem disponibilizar APIs para integração. Ou seja, é possível facilmente um desenvolvedor integrar sua aplicação com o Telegram, aumentando assim o potencial de suas soluções.

O site oficial do Telegram é: https://telegram.org/

Fazendo uma webcam funcionar na BeagleBone Black

Uma vez  que a BeagleBone Black tem acesso à Internet, é necessário instalar o programa fswebcam. Para isto, utilize o seguinte comando no terminal da BeagleBone Black:

apt-get install fswebcam

Com o fswebcam instalado, coloque a webcam na porta USB da BeagleBone Black e execute os seguintes comandos no terminal:

cd /dev
ls

Irá aparecer uma listagem de todos os devices presentes / possíveis detectados pelo Linux da BeagleBone Black. Se a sua webcam for compatível com o Linux, o device video0 irá aparecer na listagem, conforme ilustra a imagem a seguir:

Lista Devices

Uma vez comprovado que sua webcam é compatível com Linux, é chegada a hora de testar o programa fswebcam. Para isso, execute os seguintes comandos:

cd ~
fswebcam Teste.jpg

A mensagem da figura a seguir irá surgir e um arquivo chamado Teste.jpg contendo a foto da webcam será criado na pasta home.

Teste fswebcam

Se tudo funcionou como descrito, a sua webcam está funcionando perfeitamente para tirar fotos no Linux da BeagleBone Black!

Bot Telegram – como fazer?

Para fazer um bot Telegram é preciso, primeiramente, baixar o Telegram em seu dispositivo móvel (ou utilizar sua versão web, caso estiver utilizando um PC).

Uma vez baixado / utilizando o Telegram, inicie uma conversa com o BotFather (se estiver utilizando via web no computador, basta acessar este link: https://telegram.me/botfather) e seguir as instruções. É realmente simples!

Ao fim do processo, seu bot está criado e pronto para entrar em ação. O processo resultará também em um Token / código, dado único para cada bot Telegram. Deixe este Token salvo em algum local seguro, você irá precisar dele mais pra frente neste projeto.

Transformando a BeagleBone Black em um bot Telegram

Chegou a hora de transformar a BeagleBone Black em um bot Telegram. Para isto, é preciso que a mesma tenha acesso à Internet e, preferencialmente, que você tenha acesso à BeagleBone Black via SSH. Para isto, recomendo seguir este tutorial do blog MakerHero.

Antes de partir para o programa, execute o comando abaixo que vai carregar o pacote para uso do Telegram dentro do programa em Python:

pip install python-telegram-bot

O bot Telegram BeagleBone em questão tem duas funcionalidades:

  • Servir de interface para o usuário “conversar” com a BeagleBone para solicitar uma foto da webcam
  • Identificar a solicitação do usuário e, quando identificar o pedido de envio de foto, tirar uma foto e enviar.

O código-fonte do projeto pode ser visto a seguir.

#Bot de Telegram com a BeagleBone Black
#Autor: Pedro Bertoleti
#Data: 11/2016
#Importante: Este codigo foi feito com referencia ao artigo
#http://www.embarcados.com.br/bot-com-telegram-na-intel-edison/ , 
#do autor Andre Curvello

#imports necessarios:
import telegram			
import os
from time import sleep 
import urllib2
import json

#imports de bibliotecas para tratar erros de conexao URL.
try:
    from urllib.error import URLError
except ImportError:
    from urllib2 import URLError

#variaveis globais:
TokenBotTelegram = ' '  #coloque aqui o token do seu bot Telegram	


#Funcao: Trata mensagem recebida / interpreta mensagem do usuario
def TrataMensagem(MsgRecebida,chat_id):
   MsgRecebidaLC = MsgRecebida.lower()
   
   if "oi" in MsgRecebida:
       print "[USUARIO]: requisicao de contato"
       bot.sendMessage(chat_id=chat_id, text='Ola! Tudo bem? O que voce deseja?')

   if  "foto" in MsgRecebida:
       print "[USUARIO]: requisicao de foto"
       os.system("fswebcam FotoTelegram.jpg")
       bot.sendMessage(chat_id=chat_id, text='Foto:')
       bot.sendPhoto(chat_id=chat_id, photo=open('FotoTelegram.jpg','r'))   

#Funcao: executa a comunicacao da BeagleBone Black com o Telegram
def ExecutaBeagleBoneBot(bot, update_id):
    for update in bot.getUpdates(offset=update_id, timeout=10):
        
        #o chat_id eh a id do chat de comunicacao Telegram
        #eh necessaria para o bot identificar a conversa.
        chat_id = update.message.chat_id
	
        #atualiza o indice update_id - para ref novas mensagens
        update_id = update.update_id + 1
	
        #captura a mensagem de texto enviada ao bot no dado chat_id
        message = update.message.text

        if message:
            #Se chegou ate aqui, significa que ha uma mensagem para ser tratada. 
            #Portanto, faz o tratamento da mensagem recebida e envia a resposta pelo Telegram
            TrataMensagem(message,chat_id)

    # retorna o ultimo update_id para servir de referencia
    return update_id
	
#------------------	
#Programa principal
#------------------   

#Variavel update_id (usada pelo Telegram)
update_id = None

#Inicializacao do Bot
bot = telegram.Bot(TokenBotTelegram)
print '[BOT] Bot Telegram iniciado. Aguardando comandos.'

while True:
   try:
       try:
           update_id = ExecutaBeagleBoneBot(bot, update_id)
       except telegram.TelegramError as e:
           #Se ocorrer algum problema (como lentidao, por ex):
           if e.message in ("Bad Gateway", "Timed out"):
                sleep(1) 
           else: 
                raise e
       except URLError as e:
           #Ha problemas de rede
           sleep(1)
   except KeyboardInterrupt:
        print "Ctrl+c pressionada. A aplicacao sera encerrada."
        exit(1)

Para colocá-lo na BeagleBone Black, faça o seguinte procedimento:

1 – Copie o código-fonte

2 – Digite o seguinte comando

nano BotTelegramFoto.py

3 – Cole o código-fonte no editor utilizando o botão direito do mouse

4 – Coloque seu Token do bot Telegram no local indicado

5 – Pressione Ctrl + X e responda SIm / Yes para as perguntas do editor

6 – Execute o programa com o seguinte comando:

python BotTelegramFoto.py

Feito isso, basta entrar no Telegram e conversar com seu bot! Para isso, utilize as seguintes mensagens / comandos:

  • oi : Inicia uma conversa com o bot. Este responderá com uma saudação. Este comando serve para verificar se o bot está no ar.
  • foto : Solicita que a BeagleBone Black tire uma foto pela webcam e a envie para você pelo Telegram. Este procedimento demora alguns segundos.

Resultado

As imagens a seguir mostram o resultado da execução (tanto na interface web do Telegram quanto no terminal da BeagleBone Black.

Teste bot Telegram

 

Terminal Telegram BBB

Gostou ? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Obrigado pelo post! Abs

    Top

    1. Cicero, muito obrigado!

  2. Olá,muito bom, queria pedir um favor tem como rsrs? Que vocês trouxessem mais projetos/tutoriais apenas usando o Display TFT 1.8? Como no tutorial do Flappy bird,que apenas só usa o display. Obrigada.

Trackbacks and Pingbacks

  1. […] Assim como outros softwares de bate-papo possuem uma API para criação de Bots, o Telegram também nos dá essa possibilidade. Você já deve ter visto como criar Bots no Telegram utilizando a Beaglebone Black. […]