Aula 11: Controle um LED via Telegram

Agora que já fizemos o LED piscar, que tal ir um pouco além e fazer essa luz piscar através de comandos no Telegram?? Então vamos juntar o conhecimento sobre GPIO com o que vimos sobre APIs!

O circuito irá utilizar os mesmos componentes e a mesma montagem da aula anterior, onde acendemos o LED. A fim de realizar a instalação da API do Telegram, vamos seguir o procedimento parecido com o que vimos na API do Twitter.

GIF de funcionamento

Instalando a API

Procedimento similar ao que vimos na aula 8, utilizamos o programa “pip” ao habilitar o uso da API.

sudo pip3 install telepot

Caso dê algum erro, pode ser necessário atualizar o “pip“, basta utilizar o comando abaixo e repetir o procedimento anterior:

python3 -m pip install --upgrade pip

Criando o bot no Telegram

No Telegram existe um bot que auxilia a criar outros bots, basta procurar por “BotFather”, o criador de bots. Para iniciar a conversa com ele, basta mandar a mensagem “/start” e o bot irá informar o que ele é capaz de fazer.

Vamos utilizar a opção “/newbot” na criação de um novo bot, você deve passar um nome (que aparecerá na sua lista de contatos) e um username. Se já tiver algum usuário com esse username você precisará encontrar outro, tenha paciência e criatividade ao criar um nome diferente, não pode ter números e deve terminar com “bot”.

Quando o bot for criado, você irá receber uma mensagem como essa com o token de acesso, vamos precisar utilizá-lo na programação, como fizemos no projeto com twitter.

Programa

Com esse código, você irá se comunicar com a Raspberry Pi através do seu bot do telegram. Dentro do comando “telepot.Bot(token)” você deve colocar o seu token, obtido na etapa anterior. Caso você perca o token, pode mandar “/token” ao “BotFather” que ele reenvia o seu token.

#Bibliotecas utilizadas
import RPi.GPIO as GPIO #Para utilizar os pinos de GPIO
import time #Para usar o time.sleep
import telepot #Para usar a API do telegram

GPIO.setmode(GPIO.BOARD)

pinoLED = 12 #vamos utilizar o pino 12 da placa
GPIO.setwarnings(False) #Desabilitamos avisos de erros da GPIO

# Define o pino do led como saida
GPIO.setup(pinoLED, GPIO.OUT)

#Define o que sera feito se receber alguma mensagem
def faz(msg):
    commando = msg['text']
    print ('Recebi o comando: %s' % commando) #coloca na tela o comando recebido
    if commando == 'liga':
        GPIO.output(pinoLED,1)
    elif commando =='desliga':
        GPIO.output(pinoLED, 0)

#Na linha abaixo precisamos colar o token to access
bot = telepot.Bot('898584132:BBD8YPZD3JiKty5Z_jFVGjdJ1mTMgR8VYmw')
bot.message_loop(faz) #O que fara quando receber uma mensagem esta dentro de "faz"
print ('Aguardando comando')

while (1):
    time.sleep(10) #So espera uma mensagem

A partir do momento que o programa estiver rodando, basta iniciar uma conversa com o seu bot e enviar a mensagem “liga” ou “desliga” para ligar ou desligar o LED.

Experimente mudar a mensagem que ele recebe ou adicionar outros comandos!