A 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.
Este projeto foi baseado neste excelente projeto do André Curvello.
Materiais necessários
Para a realização deste projeto você vai precisar de:
- Placa BeagleBone Black Rev. C
- Webcam USB (convencional)
- Um ponto cabeado de acesso à Internet
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.
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:
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.
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.
Gostou ? Deixe seu comentário logo abaixo.
Obrigado pelo post! Abs
Top
Cicero, muito obrigado!
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.