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:
Execute o comando /start
e serão listados vários comandos:
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:
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.
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:
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.