Computer 4 dummy

Informatica facile a portata di tutti

DatabasedatiguidaInstallazioniIoTpythonraspberry pi

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/

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

My Channels
My Channels

Nel menù in alto clikkiamo quindi su My Channels.

Ora possiamo andare ad aggiungere il primo canale cliccando sul pulsante verde New Channel.

New Channel
New Channel

Da qui accediamo alla pagina di configurazione del canale dove inseriamo tutti i dettagli relativi al segnale che vogliamo registrare.

Dettagli del canale
Dettagli del canale

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://thingspeak.com/

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!!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.