Manual
do
Maker
.
com
Esse não é um simples recurso para reportar status; com um bot Telegram você poderá controlar completamente o Raspberry, dependendo apenas de sua implementação.
Telegram é um mensageiro como o Whatsapp, mas muito melhor, na minha opinião. Primeiro porque ele não fica armazenando todas as mídias que as tias ficam mandando na mensagem, mas tem outros valores. O Telegram permite criar mensagens com auto-destruição, não deixando vestígios. Também é possível fazer grupos com mais de 250 pessoas, enquanto o Whatsapp tem um limite de pessoas por grupo. Mas ele ainda vai além!
Esse é o primeiro passo. Você deverá necessariamente instalá-lo em seu celular. Ele está disponível na Play Store, para quem tem smartphones Android. Também possui versão para iPhone.
Copiar o token do smartphone para o Raspberry não seria uma tarefa muito prática. Para facilitar um pouco, instale a versão para desktop.
O processo é simples e guiado. Abra o Telegram e digite /newbot (começando com barra mesmo) no botFather:
Depois ele pedirá um nome para seu bot, então solicitará um username. Ao final será fornecido um token para acessar a API HTTP. Guarde esse token em segurança!
Podemos fazer uma conexão direta com teclado e mouse no Raspberry ou acessar por outro meio como Teamviewer, DWagent ou ssh. Para instalar o Telepot, abra um terminal do Raspberry e digite:
sudo su
apt-get update
apt-get install python-pip
pip install telepot
Eu gosto de usar o bpython para teste em fluxo. Uma das vantagens é acesso direto à documentação e informação explícita dos construtores dos métodos. Se desejar instalá-lo:
pip install bpython
Se estiver com o sistema atualizado, provavelmente já não terá mais a opção do bpython para a versão 2.7. Veremos isso em outro artigo.
Abra um terminal Python digitando python (ou se o instalou, digite bpython). Nele, digite os comandos:
import telepot
bot = telepot.Bot('seuTokenRecebidoNoApp')
bot.getMe()
Se retornar um dicionário python, então está tudo ok. Pode sair digitando exit() e sigamos. De outro modo, resolva o problema e siga daqui.
Agora podemos receber mensagens e tratá-las como comandos no Raspberry. Também podemos receber alertas a partir de um script que esteja monitorando o sistema, e com isso podemos receber status do Raspberry de onde quer que estejamos!
Eis um script de exemplo. Abra um editor qualquer e escreva ou copie esse código:
import time
import datetime
import telepot
import sys
import os
def handle(msg):
chat_id = msg['chat']['id']
comm = msg['text']
if comm == '/clock':
bot.sendMessage(chat_id, str(datetime.datetime.now()))
if comm == '/temp':
bot.sendMessage(chat_id, str(os.system('vcgencmd measure_temp')))
bot = telepot.Bot('seu token aqui')
bot.message_loop(handle)
print("Started.")
while True:
time.sleep(10)
Inicie o bot no smartphone ou no Telegram desktop e troque mensagens com ele:
Ops. Ele jogou a temperatura para stdout e pegou o código de retorno do comando system. O system é uma maneira porca e preguiçosa de acessar o sistema, mas funciona para acionar comandos. Para pegar informações do sistema e trazer para dentro do programa, será necessário elaborar um pouco mais, mas fiquemos nos conceitos.
Algumas coisas não são possíveis, como mandar mensagens para todos os bots simultaneamente. O limite de mensagem é de 30 por segundo, o que já é um valor bastante alto. Problemas de notificação em massa podem bloquear seu bot, por isso é aconselhável um intervalo de 8 a 12 horas.
Podemos baixar ou enviar arquivos. O bot pode receber e enviar mensagens, pode receber mensagens de chats privados com usuários, e todas as mensagens de canais que ele seja membro. Para ele enviar mensagens de forma autônoma, primeiramente é necessário saber a quem mandar. Já fiz aqui um "workaround" (vulgo "gambiarra") e funcionou bem, a princípio. Mas fica pra outro artigo!
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.