Introduzione ai flussi di dati

Analizzare i dati IoT in Python

Matthias Voppichler

IT Developer

Cos'è un data stream

  • Flusso continuo di dati
  • Esempi
    • Messaggi Twitter
    • Articoli di news online
    • Flussi video
    • Dati da sensori (IoT)
    • Ordini di mercato (finanza)
Analizzare i dati IoT in Python

Cos'è un data stream

  • Flusso continuo di dati
  • Esempi
    • Messaggi Twitter
    • Articoli di news online
    • Flussi video
    • Dati da sensori (IoT)
    • Ordini di mercato (finanza)
Analizzare i dati IoT in Python

MQTT

  • Protocollo di messaggistica
  • Publish/subscribe
  • Ingombro ridotto

Server -> funge da broker di messaggi

Client:

  • Si connette a un broker
  • Pubblica dati
  • Si iscrive a topic

Message Queuing Telemetry Transport

Flusso MQTT - Dal produttore -> al broker -> ai consumer

Analizzare i dati IoT in Python

Libreria Python

Client Python Eclipse Paho™ MQTT

# Importa la libreria MQTT
import paho.mqtt

Altre info e documentazione su GitHub https://github.com/eclipse/paho.mqtt.python

Analizzare i dati IoT in Python

Messaggio singolo

import paho.mqtt.subscribe as subscribe
msg = subscribe.simple("paho/test/simple", 
                       hostname="test.mosquitto.org")

print(f"{msg.topic}, {msg.payload}")

Output:

paho/test/simple, {"time": 1549481572, "humidity": 77, "temp": 21}
Analizzare i dati IoT in Python

Callback

def on_message(client, userdata, message):

print(f"{message.topic} : {message.payload}")

Argomenti

  • client - istanza client
  • userdata - dati utente privati
  • message - istanza di MQTTMessage
Analizzare i dati IoT in Python

Callback

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
Analizzare i dati IoT in Python

MQTT Subscribe

import paho.mqtt.subscribe as subscribe

def on_message(client, userdata, message): print("{} : {}".format(message.topic, message.payload))
subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
datacamp/roomtemp : b'{"time": 1543344857, "hum": 34, "temp": 24}'
datacamp/roomtemp : b'{"time": 1543344858, "hum": 35, "temp": 23}'
datacamp/roomtemp : b'{"time": 1543344860, "hum": 36, "temp": 22}'
datacamp/roomtemp : b'{"time": 1543344946, "hum": 37, "temp": 22}'
datacamp/roomtemp : b'{"time": 1543345010, "hum": 36, "temp": 13}'
Analizzare i dati IoT in Python

Let's practice!

Analizzare i dati IoT in Python

Preparing Video For Download...