Introductie tot datastromen

IoT-gegevens analyseren in Python

Matthias Voppichler

IT Developer

Wat is een datastream

  • Continue stroom data
  • Voorbeelden
    • Twitter-berichten
    • Online nieuwsartikelen
    • Videostreams
    • Sensorgegevens (IoT)
    • Marktorders (financieel)
IoT-gegevens analyseren in Python

Wat is een datastream

  • Continue stroom data
  • Voorbeelden
    • Twitter-berichten
    • Online nieuwsartikelen
    • Videostreams
    • Sensorgegevens (IoT)
    • Marktorders (financieel)
IoT-gegevens analyseren in Python

MQTT

  • Berichtprotocol
  • Publish/subscribe
  • Kleine footprint

Server -> fungeert als message broker

Client:

  • Verbindt met een broker
  • Publiceert data
  • Abonneert op topics

Message Queuing Telemetry Transport

MQTT-gegevensstroom - Van producer -> naar broker -> naar consumers

IoT-gegevens analyseren in Python

Python-bibliotheek

Eclipse Paho™ MQTT Python-client

# Import MQTT library
import paho.mqtt

Meer info en documentatie op GitHub https://github.com/eclipse/paho.mqtt.python

IoT-gegevens analyseren in Python

Eén bericht

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

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

Uitvoer:

paho/test/simple, {"time": 1549481572, "humidity": 77, "temp": 21}
IoT-gegevens analyseren in Python

Callback

def on_message(client, userdata, message):

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

Argumenten

  • client - clientinstance
  • userdata - privégebruikersdata
  • message - instantie van MQTTMessage
IoT-gegevens analyseren in Python

Callback

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
IoT-gegevens analyseren in Python

MQTT abonneren

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}'
IoT-gegevens analyseren in Python

Laten we oefenen!

IoT-gegevens analyseren in Python

Preparing Video For Download...