Come inviare dati su ThingSpeak con Raspberry Pi
ThingSpeak è uno dei più diffusi sistemi di cloud server per sistemi IoT dove poter andare a salvare tutti i dati raccolti dai sensori che possiamo collegare alla Raspberry Pi.
Questo servizio cloud ha molte funzioni molto utili ed avanzate come l’analisi MATLAB, creazioni di grafici “embeddabili” con <iframe>, grafici, azioni e moltissimo altro.
In questo articolo andremo a vedere come creare un account, configurare i canali e salvare dei dati di temperatura e umidità in Python.
Questo servizio è completamente gratuito, gli unici limiti sono i 4 canali da 8 set di dati ciascuno e un massimo di 3’000’000 di valori registrabili e una frequenza massima di registrazione di 15 secondi.
Registrazione
Per prima cosa dobbiamo registrare un account sul sito https://thingspeak.com/
Cliccando sul pulsante Get Started For Free accediamo alla pagina di registrazione dove dovremo andare ad inserire i nostri dati come la mail, nome cognome ecc…
Una volta completata la registrazione ed aver confermato la registrazione possiamo andare a creare il nostro primo canale di registrazione.
I miei canali
Nel menù in alto clikkiamo quindi su My Channels.
Ora possiamo andare ad aggiungere il primo canale cliccando sul pulsante verde New Channel.
Da qui accediamo alla pagina di configurazione del canale dove inseriamo tutti i dettagli relativi al segnale che vogliamo registrare.
Una volta inseriti i dati principali (Es. Name: Test C4D, Field 1: Temperatura) possiamo creare lo script sulla raspberry pi per salvare i dati.
Script in Python
Aggiornamento…
Prima di tutto facciamo un bell’aggiornamento del sistema, a questo link trovate l’articolo su come creare uno script per farlo in automatico in modo completo e veloce.
Come aggiornare la Raspberry pi o altre distribuzioni linux basate su Debian
Creiamo lo script in Python
Ora non ci resta che caricare i dati sui server ThingSpeak con uno script in Python che si connette direttamente ai loro server e salva le informazioni sui canali che abbiamo configurato.
API key
Per ogni canale che andremo a creare potremo generare una chiave (KEY) che ci permette di salvare in modo sicuro i nostri dati.
Allo stesso modo potremo però andare a creare molteplici chiavi in sola lettura per eseguire l’accesso ai dati.
La Api Key in lettura Write API Key e la Read API Key per la lettura si trovano nella sezione Channels selezionando il canale poi nel tab API Keys.
Una volta recuperata la nostra chiave di scrittura scriviamo qualche semplice riga di Python per fare un esempio su come registrare la temperatura della CPU della Raspberry:
import httplib import urllib import time key = "4XXXXXXXXXXXXXXXX" # Scrivi qui la tua API Key di scrittura sleep = 15 #Frequenza di salvataggio dati (NO < 15s) def thermometer(): while True: #Lettura della temperatura CPU in gradi Celsius temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3 params = urllib.urlencode({'field1': temp, 'key':key }) headers = {"Content-typZZe": "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 "Connessione fallita!!!" break if __name__ == "__main__": while True: thermometer() time.sleep(sleep)
Salviamo più valori per canale
Nel caso volessimo salvare più valori in un unico canale utilizzando un unico script possiamo modificare semplicemente la riga 9 aggiungendo i valori per gli altri campi (“Field“) come in questo esempio:
params = urllib.urlencode({'field1': temp, 'field2': val_01, 'field3': val_02, 'key':key })
Ricordandoci però di averli opportunamente configurati ed abilitati in precedenza e di non usare valori della variabile sleep inferiori a 15 secondi, valori inferiori sarebbero inutili dato che possiamo registrare ad intervalli minimi di 15 secondi.
Fonti:
https://opensprinkler.com/forums/topic/python-script-to-log-pi-cpu-temp-to-thingspeak-channel/
Spero che questo articolo vi sia stato utile, se avete avuto problemi oppure volete approfondire meglio qualche funzione particolare di thingspeak scrivetemi un commento e condividete l’articolo con persone che potrebbero trovarlo utile. GRAZIE!!!