Pplware

Vamos por o Raspberry PI a postar a temperatura no Facebook

Por Bruno Santos da Comunidade Linux Pplware

O Raspberry Pi é um dos mini PCs mais populares e potentes, que tem servido de base a muitos projectos interessantes (pode consultar os projectos na página do projecto aqui). Este mini equipamento, do tamanho de um cartão de crédito é capaz de reproduzir vídeo com qualidade Blu-ray e renderizar gráficos 3D, entre outras tarefas.

No seguimento dos nosso artigos sobre o Raspberry Pi, , e depois de ensinarmos a ter um Sistema de notificação do twitter com LED recorrendo ao PI, hoje vamos ensinar como o PI pode postar a temperatura no Facebook.

Neste pequeno tutorial vamos aprender como e onde ler a temperatura do RaspberryPI e publicar no vosso mural do facebook .

Obter a temperatura no PI

Para começar, arranquem com o vosso RaspberryPI e em seguida acedem à consola e escrevam o seguinte comando

cat /sys/class/thermal/thermal_zone0/temp

Como resultado, no momento em que escrevemos o comando, obtivemos o calor 53533. Esta é a temperatura do RaspberryPI, em milésimas de celcius. Para converter para celcius, basta dividir por 1000, ou seja, a temperatura interna que o raspberryPI estava no momento é 53.533graus.

O SoC do raspberryPI tem um sensor incorporado, que pode ser lido de duas formas:

Usando as ferramentas em /opt/vc:

/opt/vc/bin/vcgencmd measure_temp

O bom de usar o utilitário vcgencmd é que nos devolve a temperatura em celcius. Se quiserem explorar mais o utilitário vcgencmd, basta executar /opt/vc/vcgencmd com o argumento commands e ele devolve todos os comandos disponíveis

Facebook

Para colocar a temperatura no nosso mural, temos que nos tornar programadores do facebook. Para isso basta ir a http://developers.facebook.com . Têm que se registar como developers. Para isso, basta que, façam login com o vosso utilizador nessa página. Assim que tenham efetuado login, basta ir a APPS, no menu

Assim que pressionarem , irá aparecer uma nova janela

Para o nosso pequeno tutorial, basta preencher o nome da aplicação: RaspberryPI termometer e continuar – preencher a captcha de segurança. Depois disto, vão ter a um ecrã com um resumo da aplicação. Para que a aplicação possa publicar no nosso mural, temos que criar o token de acesso e dar as permissões necessárias. Para criar o token de acesso, ir a “Tools” que se encontra na barra de ferramentas no topo:

Depois, no menu do lado esquerdo, escolher a opção Access Token tool.

Uma vez na página dos tokens, é necessário gerar o “user access token” – Pressionar em “need to grant permissions”.

O token é gerado

e já devem ter o token de acesso do utilizador à aplicação.

Guardem este valor, pois vamos precisar dele mais tarde. Agora é necessário fornecer as permissões corretas à aplicação. Para isso, ir novamente a opção de “tools” na barra de ferramentas e escolher a opção “Graph API Explorer”.

Uma vez aí, pressionar escolher a nossa aplicação e posteriormente escolher a opção “Get Access Token”.

Para a nossa aplicação, tudo o que precisamos é a opção de “publish_actions”. Depois, de pressionarem “Get Access Token”, será necessário escolher quem irá ver os nossos posts no mural.

Deixem “Amigos” para que eles também saibam a temperatura do nosso Raspberrypi – Se preferirem que seja apenas visto por vocês, escolham “only me” ! Podem também tornar os posts publico ou pressionar “custom” e personalizar melhor.

A partir deste momento, já temos o nosso token e a aplicação já tem as permissões necessárias para escrever no nosso mural.

Facebook API

Para usarmos o Python para escrever no nosso mural, precisamos de uma API. Para isso, iremos usar as bibliotecas pythonforfacebook . Esta biblioteca usa a API do Facebook GRAPH, que é a forma mais correta de implementar a autenticação do Facebook. Podem ler mais na documentação oficial.

Numa consola no Raspberrypi, descarregar a API: git clone https://github.com/pythonforfacebook/facebook-sdk.git

Vamos efetuar a instalação manualmente, pois se a tentarmos fazer automaticamente, ele vai dar erro. Para instalar a biblioteca facebook.py:

Instalar a biblioteca colorama sudo apt-get install python-colorama Com o vosso editor preferido, vamos começar a criar o codigo para ler a temperatura e colocar no nosso mural.

vi facebookTemperature.py

#Importar bibliotecas necessarias
# facebook
import facebook

# time
import time

# Output em cores
from colorama import init
init()

from colorama import Fore, Back, Style 

# Criar o token para a nossa aplicacao
token = 'CAAFo................................QZDZD'

# Definir a temperatura maxima que desejamos que a partir daqui seja colocado no nosso mural
maxTemp = 56.0

# Definimos uma string vazia - iremos usar para evitar escrever a mesma mensagem
# Facebook da erro (prevenir SPAM) se tentamos escrever a mesma mensagem
# Como esta: facebook.GraphAPIError: (#506) Duplicate status message
oldStatus = ''

# Iniciar autenticacao
graph = facebook.GraphAPI(token)
profile = graph.get_object("me")

while True:
	# Ler a temperatura
	tfile = open ("/sys/class/thermal/thermal_zone0/temp")	# abrir o ficheiro
	tempdata = tfile.read()	# ler para a variavel tempdata
	tfile.close()	# fechar o ficheiro
	temp = float(tempdata)	# converter o resultado para float

	#temperatura vem em milesimas - calcular os graus celcius
	temp = temp / 1000
	# Verificar se a temperatura esta acima do definido
	if (temp >= maxTemp):
		# criar uma variavel com a mensagem a colocar no facebook
		tempstr = str('A temperatura do RaspberryPI : %.1fC' % temp)

		if (oldStatus == tempstr):
			print (Style.BRIGHT + 'Mensagem nao escrita no mural para prevenir SPAM')
			print (Fore.RESET)
		else:
			# Colocar no nosso mural do facebook
			graph.put_object("me","feed",message=tempstr)
			# Colocar string na variavel oldStatus
			oldStatus = tempstr

		# Escrever na linha de comandos
		tempstrCMD = str('A temperatura do RaspberryPI : ' + Fore.RED + '%.1fc' % temp)
		print (tempstrCMD)
	else:
		# Tambem necessario informar - em linha de comandos - se esta tudo ok
		print ('A temperatura do RaspberryPI : ' + Fore.GREEN + '%.1fc ' % temp)

	# reset das definicoes do colorama
	print(Fore.RESET + Back.RESET + Style.RESET_ALL)
	# Voltamos a fazer esta verificacao a cada 60 segundos
	time.sleep(60)

Assim que tiverem o código escrito, basta executarem:

python facebookTemperature.py

E verem o resultado. Consoante o valor que definiram na máxima temperatura, o output pode ser a verde (abaixo da temperatura máxima) ou vermelho se ultrapassar (e neste caso colocado no facebook)

Caso a temperatura ultrapasse o valor (neste caso 56.0):

E se a temperatura não variar no próximo minuto, esta é a mensagem que vai aparecer na consola: Mensagem não escrita no mural para prevenir SPAM

Desta forma, conseguem escrever no mural do facebook usando um PI e um RaspBerryPI. A partir daqui, basta um pouco de imaginação. Com o tutorial anterior (Twitter e Raspberrypi) podem usar o GPIO para ligar e controlar outras coisas – Em vez de usar o sensor interno do SoC, podem ligar um sensor de temperatura externo e ler a temperatura com ele.

Referencias
Exit mobile version