Telegram Bot com Raspberry Pi 3 8

A Raspberry Pi tem diversas utilidades, como por exemplo desenvolver projetos envolvendo IoT. Neste post vamos montar um Telegram Bot com Raspberry Pi 3, um sistema que permite envio de comandos através de mensagens instantâneas do software Telegram. Com este software é possível realizar o acionamento de relés, LEDs e monitorar ambientes, em qualquer lugar do mundo a qualquer hora.

Telegram

O projeto funcionará da seguinte maneira: ao enviarmos comandos através de mensagens instantâneas do software Telegram, a Raspberry Pi processará qual comando foi enviado e poderá acionar algum pino da GPIO ou acionar a câmera e enviar as fotos tiradas para seu dispositivo (Mobile ou PC).

Material necessário para o Telegram Bot com Raspberry Pi 3

Para este projeto, vamos 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, Linux e por aí vai. É um dos concorrentes do famoso WhatsApp.

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

Configurando o Telegram Bot no celular

Primeiramente, baixe o Telegram em seu celular.

Através da Lupa no canto superior direito da tela procure por, “BotFather”.

Telegram Bot com Raspberry Pi

Ao abrir a tela do BotFather, digite “/start”.

Telegram Bot com Raspberry Pi

Para criar um novo Bot, use o comando “/newbot”:

Agora, para criar nome de usuário digite “username” e “username_bot”.

Telegram Bot com Raspberry Pi

Guarde o código do “token to acess”, você vai precisar desse número nas próximas etapas.

Telegram Bot com Raspberry Pi

Para acessar a página de comandos criada digite “t.me/username_bot.”

Para próxima etapa, vamos precisar do Chat ID, que é um código da sua conta no Telegram. Este número é privado e irá proteger você de receber SPAM.

Através da lupa no canto superior direito da tela procure por “get_id_bot”.

Telegram Bot com Raspberry Pi

Ao abrir a tela, digite “/start”.

Telegram Bot com Raspberry Pi

Guarde o código do “Chat_ID”, você vai precisar desse número nas próximas etapas.

Configurando a sua Raspberry Pi

Agora iremos configurar a Raspberry Pi e o acesso será feito via SSH. Para saber como fazer essa configuração, acesse o post Raspberry Pi Zero W: configuração rápida para Rede e SSH.

Agora, com a Raspberry Pi configurado para o acesso via SSH, é possível acessar o terminal através do software PuTTY e, assim, instalarmos os programas necessários para executar o software “Telegram_bot”.

Abra o PuTTY e conecte sua Raspberry Pi.

Instale os seguintes pacotes Python abaixo:

sudo apt-get install python3-pip
sudo apt-get install python3
python3 -m pip install --upgrade pip

Instale o “telepot”, conforme comando abaixo:

sudo pip3 install telepot
git clone https://github.com/nickoala/telepot.git

Preparação – Câmera Raspberry Pi

Antes de prosseguir com o projeto, é preciso preparar a Raspberry Pi para se comunicar com a câmera. Para isso, siga este nosso tutorial.

Instale o pacote Python abaixo:

pip install "picamera[array]"==1.10

Transformando a Raspberry Pi em um Telegram Bot

O esquemático do projeto Telegram Bot com Raspberry Pi 3 pode ser visto na figura abaixo:

Esquemático Telegram Bot

Agora vamos criar o nosso programa executável. Para criar o arquivo, digite o seguinte comando dentro do terminal:

sudo nano telegram_bot.py

Agora, cole o código abaixo diretamente no terminal:

import sys
import time
import random
import datetime
import telepot
import RPi.GPIO as GPIO
import picamera

GPIO.setwarnings(False)

#LED
def On(pin):
GPIO.output(pin,GPIO.HIGH)
return
def Off(pin):
GPIO.output(pin,GPIO.LOW)
return
# Numero dos pinos da Raspberry PI configurada no modo BOARD.
GPIO.setmode(GPIO.BOARD)
# Define pino 13 como saída
GPIO.setup(13, GPIO.OUT)

# Comandos que vem do software Telegram e sao processados pela Raspberry PI

def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
print ('got command: %s' % command)

if command == 'On':
bot.sendMessage(chat_id, On(13))
if command =='Off':
bot.sendMessage(chat_id, Off(13))
if command =='Foto':
# Chave do chatID
chat_id = Cole aqui seu Chat_ID

#Habilita disparo da camera através da Raspberry PI
camera = picamera.PiCamera()
camera.capture('./Capture.jpg')
camera.close()
# Envia a foto tirada para o software telegram através do Chat_ID
bot.sendPhoto(chat_id=chat_id, photo=open('./Capture.jpg', 'rb'))
# Permite que os comandos digitados no telegram sejam enviados a Raspberry PI
bot = telepot.Bot('Cole aqui o token to acess')
bot.message_loop(handle)
print('Esperando Comando...')

while 1:
time.sleep(10)

No código acima, insira as suas informações dentro do campos “Chat_ID” (linha 36) e “token to acess” (linha 45).

Agora pressione Ctrl+X e depois Y (Inglês) ou S (Português) para sair e salvar o arquivo.

Pronto! O arquivo foi gerado, é possível executa-lo a qualquer momento, utilizando o seguinte comando:

python3 telegram_bot.py

Abra novamente o software Telegram e clique na página de comando criada anteriormente “t.me/username_bot.”

Resultado do Telegram Bot com Raspberry Pi 3

Ao clicar em começar, é só a disparar os comando configurados na sua Raspberry Pi, atenção com os caracteres especiais, acentos, letras maiúsculas e minúsculas pois se algum caractere não estiver de acordo a Raspberry PI não identificará o comando.

Telegram Bot com Raspberry Pi

Telegram Bot com Raspberry Pi

Através do terminal PuTTY é possível ver os comandos enviados do Telegram na Raspberry Pi.

Gostou do projeto Telegram Bot com Raspberry Pi 3? Então deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

8 Comentários

  1. Olá!
    Tentei copiar e colar o código do jeito que foi escrito mas ao executar o arquivo o python solicita que o código seja identado.
    Tem como você enviar o código identado para o meu e-mail, por favor? [email protected]

    1. Olá Sidney.

      Para que possamos entender melhor o seu problema, favor entre em contato conosco no [email protected]

      Att.
      Vitor Mattos.
      Suporte Técnico MakerHero.

  2. Agora o WhatsApp começou a copiar a função do chat secreto, ao implementar a auto destruição de mensagem após 7 dias.

    O melhor do Telegram é que ele permite configurar o tempo para a mensagem ser deletada.

  3. import sys
    import time
    import datetime
    import telepot
    from telepot.loop import MessageLoop
    import RPi.GPIO as GPIO

    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(13, GPIO.OUT)

    #LED
    def On(pin):
    GPIO.output(pin,GPIO.HIGH)
    return
    def Off(pin):
    GPIO.output(pin,GPIO.LOW)
    return

    def action(msg):
    chat_id = msg[‘chat’][‘id’]
    command = msg[‘text’]
    print (‘recebi a msg: %s’ % command)

    if command == ‘On’:
    message = “Ligar led”
    telegram_bot.sendMessage (chat_id, message)
    if command ==’Off’:
    message = “Desligar led”
    telegram_bot.sendMessage (chat_id, message)
    if command ==’Foto’:
    message = “Pegar Foto”
    telegram_bot.sendMessage (chat_id, message)

    telegram_bot = telepot.Bot(‘1055397896:AAHKcSSW6-18wyOiqJ3gl9C8VWCQbGwJ6TY’)
    print (telegram_bot.getMe())
    MessageLoop(telegram_bot, action).run_as_thread()
    print(‘Esperando Comando…’)

    while 1:
    time.sleep(10)

    Espaçamento das linhas de comando fazem a diferença

  4. Aqui esta dando este erro..

    Traceback (most recent call last):
    File “/usr/lib/python3.7/ast.py”, line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
    File “/root/Desktop/telegram_bot.py”, line 13
    GPIO.output(pin,GPIO.HIGH)
    ^
    IndentationError: expected an indented block

    1. Olá Davi,

      Recomendo vou refazer o procedimento “Configurando a sua Raspberry Pi”.

      Abraço!
      Rosana – Equipe MakerHero

  5. Olá Paulo teria ao invés de usar a pi noir teria como usar uma webcam usb

    1. Olá, Guilherme,

      A Raspberry Foundation tem um tutorial sobre como ligar uma webcam usb na Pi: https://www.raspberrypi.org/documentation/usage/webcams/

      Depois disso, teria que fazer uma modificação no código para que, em vez de usar a picamera, a camera usb.

      Abraços!
      Diogo – Equipe MakerHero