Acionar um LED pelo Twitter
Hoje irei demonstrar pra vocês uma brincadeira que fiz usando o Raspberry.
Estava em casa, sábado de madrugada sem sono, resolvi brincar com o Raspberry até pegar no sono. Resultado disso foi que além de não ter pego no sono, fiquei cada vez mais entusiasmado.
Mas enfim vamos ao que interessa!!!
Iremos utilizar o diagrama e a conexão do LED do primeiro posto sobre como ligar o LED aqui.
Primeiro passo é ir no site do Twitter (https://twitter.com/apps). Se já estiver logado irá abrir igual abaixo, caso não, faça o login no seu Twitter (clique nas imagens para abrir maior)
Clicando no “Create New App”, irá abrir uma tela que você irá digitar o nome do seu aplicativo, descrição e um site (esse site é obrigatório, mas para o nosso caso não é importante, pode digitar igual a imagem abaixo.
Após a confirmação dos termos, clique no botão para criar o APP. Se tudo der certo ele irá entrar em uma tela com 4 abas, clique na “Keys and Access Tokens”
Clique em “Create my access token”
Se tudo deu certo você terá as informações do seu token corretamente:
Feito tudo isso, iremos em nosso Raspberry. e a primeira coisa que iremos fazer é a instalação do Tweepy, que é a biblioteca que utilizaremos para a comunicação com o Twitter no Python.
Faremos o seguinte:
Abra o lxterminal:
sudo apt-get update && sudo apt-get install python-setuptools sudo easy_install tweepy
No meu Raspberry a instalação do tweetpy pelo easy_install não funcionou. Caso no seu não funcione faça o seguinte comando:
sudo easy_install pip sudo pip install tweepy
Assim que terminar a instalação você já poderá utilizar a biblioteca Tweetpy no seu Python.
Como disse acima, utilizaremos o nosso LED no GPIO18 para piscar.
Fiz um script que a hashtag que será pesquisada é passada por parâmetro, para ficar mais simples o uso:
Irei gravar um arquivo texto contendo a data do último Tweet, pois assim não entrará em um loop infinito com somente uma hashtag, então gravamos e comparamos se o Tweet atual tem data diferente da que temos conosco:
import RPi.GPIO as GPIO import sys, time, tweepy , os GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(18, GPIO.OUT) if not (os.path.isfile('tweets.txt')): f = open('tweets.txt','w'); f.write('0'); f.close(); # == Informações para autenticar no OAUTH == consumer_key= 'MINHACHAVECUSTOMER_TWITTER' consumer_secret= 'SENHA SECRET' access_token= 'TOKEN DE ACESSO' access_token_secret= 'SENHA' print "Procurando por: "+sys.argv[1] while True: auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) for x in range(1,6): api = tweepy.API(auth) searchValue = '%23'+sys.argv[1]; public_tweets = api.search(searchValue) if (public_tweets): tweet = public_tweets[0] ultimaPublicacao = str(tweet.created_at); print "Ultima Publicacao em : " + ultimaPublicacao f = open('tweets.txt','r'); data = f.read() f.close(); if(ultimaPublicacao != data): print ultimaPublicacao+ " -- " + data print "NOVO TWEEETTTT!!!!!!!!!!!!!" GPIO.output(18, GPIO.HIGH) time.sleep(0.2); GPIO.output(18, GPIO.LOW) time.sleep(0.2); GPIO.output(18, GPIO.HIGH) time.sleep(0.2); GPIO.output(18, GPIO.LOW) time.sleep(0.2); GPIO.output(18, GPIO.HIGH) time.sleep(0.2); GPIO.output(18, GPIO.LOW) time.sleep(0.2); GPIO.output(18, GPIO.HIGH) time.sleep(0.2); GPIO.output(18, GPIO.LOW) time.sleep(0.2); f = open('tweets.txt','w'); f.write(ultimaPublicacao); f.close(); time.sleep(60); else: print "Nada novo encontrado"; time.sleep(60);
Coloquei um sleep de 60 segundos pois o Twitter tem uma série de restrições com relação a várias buscas com curto espaço de tempo então o comando será testado a cada 1 minuto. Também coloquei um for x in range dentro do While True, pois também o Twitter expira a chave de conexão a cada X minutos, então a cada 5 pesquisas eu refaço a autenticação, assim evita que a conexão seja espirada.
Salvamos o arquivo em alguma pasta da nossa escolha e colocamos permissão de escrita nela (eu costumo fazer chmod 777 NOMEDAPASTA)
feito isso podemos executar :
sudo python seuarquivo.py SUAHASHTAG , porém a SUAHASHTAG será sem o #.
Feito isso pode postar no seu Twitter ou qualquer pessoa qualquer mensagem com a hashtag escolhida que o LED irá piscar.
Espero que tenham gostado.