Internet of Things (IoT): un’esperienza partendo da zero (parte 2)

autore: Marco Picarella

 

Dopo la prima esperienza di Iot con Raspeberry che ho presentato qui, possiamo fare un salto di qualità.

Vi spiego allora come trasmettere ad un apposito canale di Thingspeak i dati acquisiti dai sensori del Sense Hat. Ma di che cosa si tratta?

S ense Hat è una piccola scheda di espansione per il Raspberry su cui è montato un visore a matrice  di LED 8×8 che include diversi sensori: giroscopio, accelerometro, magnetometro, temperatura, pressione, umidità. Si connette al Raspberry tramite l’interfaccia GPIO di quest’ultimo.

Per attività di analisi ambientale ci concentreremo sui parametri temperatura, pressione e umidità, come se il nostro Raspberry fungesse da centralina meteorologica.

Dopo aver creato un apposito canale su Thingspeak, come spiegato nella prima parte, si deve creare un file Python molto simile a quello già fatto. Occorre fare solo qualche piccola correzione, soprattutto per quello che concerne i sensori del Sense Hat.

Qui di seguito è l’intero codice del nuovo file Python:

# ThingSpeak Update Using MQTT
# Copyright 2016, MathWorks, Inc

# This is an example of publishing to multiple fields simultaneously.
# Connections over standard TCP, websocket or SSL are possible by setting
# the parameters below.
#
# CPU and RAM usage is collected every 20 seconds and published to a
# ThingSpeak channel using an MQTT Publish
#
# This example requires the Paho MQTT client package which
# is available at: http://eclipse.org/paho/clients/python

from __future__ import print_function
import paho.mqtt.publish as publish

### Start of user configuration ###

# ThingSpeak Channel Settings

# The ThingSpeak Channel ID
# Replace this with your Channel ID
channelID = “XXXX”

# The Write API Key for the channel
# Replace this with your Write API key
apiKey = “XXXXYYYYXXXXYYYY”

# MQTT Connection Methods

# Set useUnsecuredTCP to True to use the default MQTT port of 1883
# This type of unsecured MQTT connection uses the least amount of system resources.
useUnsecuredTCP = False

# Set useUnsecuredWebSockets to True to use MQTT over an unsecured websocket on port 80.
# Try this if port 1883 is blocked on your network.
useUnsecuredWebsockets = False

# Set useSSLWebsockets to True to use MQTT over a secure websocket on port 443.
# This type of connection will use slightly more system resources, but the connection
# will be secured by SSL.
useSSLWebsockets = True

### End of user configuration ###

# The Hostname of the ThinSpeak MQTT service
mqttHost = “mqtt.thingspeak.com”

# Set up the connection parameters based on the connection type
if useUnsecuredTCP:
tTransport = “tcp”
tPort = 1883
tTLS = None

if useUnsecuredWebsockets:
tTransport = “websockets”
tPort = 80
tTLS = None

if useSSLWebsockets:
import ssl
tTransport = “websockets”
tTLS = {‘ca_certs’:”/etc/ssl/certs/ca-certificates.crt”,’tls_version’:ssl.PROTOCOL_TLSv1}
tPort = 443

# Create the topic string
topic = “channels/” + channelID + “/publish/” + apiKey

# Run a loop which calculates the system performance every
# 20 seconds and published that to a ThingSpeak channel
# using MQTT.

from sense_hat import SenseHat

sense = SenseHat()

while(True):

t = sense.get_temperature()
p = sense.get_pressure()
h = sense.get_umidity()

t = round(t, 1)
p = round(p, 1)
h = round(h, 1)

print (” Temperatura = “, str(t), ”   Pressione =”, str(p), ”    Umidita =”, str(h))

# build the payload string
tPayload = “field1=” + str(t) + “&field2=” + str(p) + “&field3=” + str(h)

# attempt to publish this data to the topic
try:
publish.single(topic, payload=tPayload, hostname=mqttHost, port=tPort, tls=tTLS, transport=tTransport)

except (KeyboardInterrupt):
break

except:
print (“There was an error while publishing the data.”)

 

Questo è quello che succede:

Visualizzazione dei dati di tempratura, pressione ed umidità in tempo reale sul Raspberry

Grafici temporali di temperatura, pressione e umidità mostrati nel canale di Thingspeak

 

Al sito Thingspeak si può accedere, come abbiamo visto nei precedenti esempi, via web. Possiamo però utilizzare anche uno smartphone su cui si deve installare un’apposita app che consente la connessione ad un definito canale di Thingspeak. In realtà ho trovato più di una app per Thingspeak: “ThingView free” e “Thinspeak”.

Questa è una schermata dello smartphone per mostrare cosa permette di visualizzare l’app:

 

Ora siete pronti a spiccare il volo e realizzare ulteriori sperimentazioni.

Potete anche attingere informazioni e idee per i vostri progetti dai numerosi articoli scritti da Alfonso D’Ambrosio che sono disponibili nel sito della Fucina delle Scienze.

Non mi resta quindi che augurarvi una “buona avventura!

 

Vai alla barra degli strumenti