Quem tem um Raspberry Pi por casa talvez seja uma boa altura de começar a monitorizar o mesmo e até fazer alguns projetos interessantes como por exemplo registar a temperatura ambiente, a humidade, etc.
Depois de ensinarmos a registar do sinal Wi-Fi da placa NodeMCU na plataforma ThingSpeak hoje vamos mostrar como registar a temperatura interna do CPU do RPI na mesma plataforma.
ThingSpeak
Thingspeak é uma plataforma de análise IoT (Internet of Things) que permite agregar, visualizar e analisar streams de dados, de uma forma muito simples. Uma das grandes vantagens da plataforma Thingspeak é que nos permite visualizar os dados enviados pelos nossos dispositivos, em tempo real, mas também a possibilidade de analisar os mesmo recorrendo ao poderoso Matlab. Saber mais aqui.
Criar uma conta na plataforma ThingSpeak
Criar uma conta na plataforma ThingSpeak é algo bastante simples. Para tal basta aceder aqui e preencher com os dados solicitados. Depois é só confirmar o e-mail que é enviado pela própria plataforma (em nome da Mathworks).
Depois basta autenticarem-se na plataforma aqui e aceitar os termos e condições. Depois do processo de autenticação devemos criar um canal carregando em New Channel.
Em seguida devem indicar um nome (ex. CPU Temp) e no Field 1 coloquem, por exemplo, Temp. Por fim carreguem em Save Channel. Depois do canal criado, devem ir ao separador API Key e guardar o Channel ID e a Write API KEY.
Código no Raspberry PI
Dentro do Raspberry PI vamos fazer uso de um scrip temp.py (escrito em python) e devem colocar a vossa Write API KEY na variável key
#!/usr/bin/env python
__author__ = 'munnecke'
# This program logs a Raspberry Pi's CPU temperature to a Thingspeak Channel
# To use, get a Thingspeak.com account, set up a channel, and capture the Channel Key at https://thingspeak.com/docs/tutorials/
# Then paste your channel ID in the code for the value of "key" below.
# Then run as sudo python temp.py (access to the CPU temp requires sudo access)
import httplib, urllib
import time
sleep = 60 # how many seconds to sleep between posts to the channel
key = 'CHAVE AQUI'
#Report Raspberry Pi internal temperature to Thingspeak Channel
def thermometer():
while True:
#Calculate CPU temperature of Raspberry Pi in Degrees C
temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3 # Get Raspberry Pi CPU temp
params = urllib.urlencode({'field1': temp, 'key':key })
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80")
try:
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print temp
print response.status, response.reason
data = response.read()
conn.close()
except:
print "connection failed"
break
#sleep for desired amount of time
if __name__ == "__main__":
while True:
thermometer()
time.sleep(sleep)
Depois de adaptado o script, grave e executem o mesmo usando o comando sudo python temp.py. Se tudo estiver bem configurado, verifiquem os dados a serem registados já na plataforma sudo ThingSpeak.
Como viram é muito simples trabalhar com o Raspberry PI e com a plataforma ThingSpeak. Agora é dar asas à imaginação e monitorizar, de forma simples, o que pretenderem (desde que tenham sensores).