Introduktion till dataströmmar

Analysera IoT-data i Python

Matthias Voppichler

IT Developer

Vad är en dataström?

  • Konstant dataström
  • Exempel
    • Twitter-meddelanden
    • Nyhetsartiklar online
    • Videoströmmar
    • Sensordata (IoT)
    • Marknadsorder (finans)
Analysera IoT-data i Python

Vad är en dataström?

  • Konstant dataström
  • Exempel
    • Twitter-meddelanden
    • Nyhetsartiklar online
    • Videoströmmar
    • Sensordata (IoT)
    • Marknadsorder (finans)
Analysera IoT-data i Python

MQTT

  • Meddelandeprotokoll
  • Publicera / prenumerera
  • Litet fotavtryck

Server -> Fungerar som en meddelandeförmedlare

Klient:

  • Ansluter till en förmedlare
  • Publicerar data
  • Prenumererar på ämnen

Message Queuing Telemetry Transport

MQTT-dataflöde – från producent till förmedlare till konsumenter

Analysera IoT-data i Python

Python-bibliotek

Eclipse Paho™ MQTT Python Client

# Import MQTT library
import paho.mqtt

Mer information och dokumentation finns på GitHub https://github.com/eclipse/paho.mqtt.python

Analysera IoT-data i Python

Enskilt meddelande

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

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

Utdata:

paho/test/simple, {"time": 1549481572, "humidity": 77, "temp": 21}
Analysera IoT-data i Python

Callback

def on_message(client, userdata, message):

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

Argument

  • client - klientinstans
  • userdata - privat användardata
  • message - instans av MQTTMessage
Analysera IoT-data i Python

Callback

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
Analysera IoT-data i 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}'
Analysera IoT-data i Python

Nu kör vi en övning!

Analysera IoT-data i Python

Preparing Video For Download...