Francisco Chaves

Francisco Chaves

Software Developer. Entusiasta Linux.

© 2020

Modo escuro

Bot Telegram com Python e Arduino

Cobra e uma placa Arduino UNO ao lado de um robô segurando uma carta

Olá pessoal, hoje vamos criar um bot no Telegram e implementar um código feito na linguagem de programação Python para ligar/desligar um led na placa arduino. Os procedimentos serão realizados no Sistema Operacional Xubuntu 18.04.

Segundo a Wikipédia, Bot é definido como:

Bot, diminutivo de robot, também conhecido como Internet bot ou web robot, é uma aplicação de software concebido para simular ações humanas repetidas vezes de maneira padrão, da mesma forma como faria um robô.

Abra o aplicativo Telegram e inicie uma conversa com o @botfather:

BotFather

Execute o comando /start e serão listados vários comandos:

Iniciando conversa com o BotFather

Execute o comando /newbot, digite o nome de apresentação do bot e após digite o username com sufixo bot, será disponibilizado o token para acessar a API do bot:

Criando bot e atribuindo nome

Abra o terminal com as teclas de atalho CTRL + ALT+ T e instale o telepot, que será utilizado para permitir interagir com o bot do Telegram:

pip install telepot

Instale o pyFirmata, para que seja possível controlar o Arduíno via programação utilizando o protocolo firmata:

pip install pyfirmata

Com o Arduino IDE aberta, selecione File > Examples > Frimata > StardardFirmata e realize o Upload do programa para a placa arduino.

IDE Arduino selecionando o exemplo firmata

Crie um arquivo com o nome bot.py e adicione o conteúdo abaixo:

# -*- coding: utf-8 -*-
import telepot
import os
from pyfirmata import Arduino, util

def handleCommad(content) :
  try:
    chat_id = content['chat']['id']
    command = content['text']

    if command == 'Hi' :
      mensage = 'Hello, how are you?'
      bot.sendMessage(chat_id, mensage)

    if command == '/on' :
      setDigitalPinState(my_board, 13, 1)
      sendMessage(chat_id, 'Led turn on')

    if command == '/off' :
      setDigitalPinState(my_board, 13, 0)
      sendMessage(chat_id,'Led turn off')

  except :
     bot.sendMessage(chat_id, 'There was an error!!!')

def configBoard(port) :
  return Arduino(port)

def setDigitalPinState(board, pin, state) :
  board.digital[pin].write(state)

def sendMessage(chat, mensage) :
  bot.sendMessage(chat, mensage)

token_telegram = os.environ["TELEGRAM_TOKEN"]
my_board = configBoard('/dev/ttyACM0')
bot = telepot.Bot(token_telegram)
bot.message_loop(handleCommad)

try:
  print('press CTRL + C to cancel')

  while True :
    pass

except KeyboardInterrupt :
  print('Bye')

Crie a variável de ambiente TELEGRAM_TOKEN com o valor do seu token utilizando o terminal:

export TELEGRAM_TOKEN="seu-token"

Execute o script python:

python bot.py

Acesse o bot criado anteriormente e execute o comando /on para ligar ou /off para desligar o led na placa arduino:

Ligando e desligando o led com o bot

Valeu pessoal 😃✌️, código fonte do projeto está disponível em https://github.com/franciscojsc/bot-telegram-arduino-python.

Referências

ALVES, G. F. O. Python: Como ler variavel de ambiente. DICAS DE PYTHON. Disponível em: https://dicasdepython.com.br/python-como-ler-variavel-de-ambiente. Acesso em: 7 dez. 2019.

FARIA, W. C. Programando Arduino em Python [PyFirmata]. MEDIUM. 16 mar. 2019. Disponível em: https://medium.com/@wellingtoncfaria/programando-arduino-em-python-pyfirmata-acf77af2240. Acesso em: 7 dez. 2019.

Como criar um bot simples no Telegram. TUDO SOBRE TELEGRAM. 16 set. 2016. Disponível em: http://tudosobretelegram.com.br/2016/09/16/como-criar-um-bot-simples-no-telegram. Acesso em: 7 dez. 2019.

×

Inscreva-se para novas atualizações