Вступ до потоків даних

Аналіз даних IoT у Python

Matthias Voppichler

IT Developer

Що таке потік даних

  • Безперервний потік даних
  • Приклади
    • Повідомлення у Twitter
    • Онлайн-статті новин
    • Відеопотоки
    • Дані сенсорів (IoT)
    • Ринкові ордери (фінанси)
Аналіз даних IoT у Python

Що таке потік даних

  • Безперервний потік даних
  • Приклади
    • Повідомлення у Twitter
    • Онлайн-статті новин
    • Відеопотоки
    • Дані сенсорів (IoT)
    • Ринкові ордери (фінанси)
Аналіз даних IoT у Python

MQTT

  • Протокол повідомлень
  • Публікація / підписка
  • Малий слід/розмір

Сервер -> виконує роль брокера повідомлень

Клієнт:

  • Під'єднується до брокера
  • Публікує дані
  • Підписується на теми

Message Queuing Telemetry Transport

Потік даних MQTT — від виробника -> до брокера -> до споживачів

Аналіз даних IoT у Python

Бібліотека Python

Eclipse Paho™ MQTT клієнт для Python

# Import MQTT library
import paho.mqtt

Більше інформації та документація доступні на GitHub https://github.com/eclipse/paho.mqtt.python

Аналіз даних IoT у Python

Одинарне повідомлення

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

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

Вивід:

paho/test/simple, {"time": 1549481572, "humidity": 77, "temp": 21}
Аналіз даних IoT у Python

Зворотний виклик

def on_message(client, userdata, message):

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

Аргументи

  • client — екземпляр клієнта
  • userdata — приватні дані користувача
  • message — екземпляр MQTTMessage
Аналіз даних IoT у Python

Зворотний виклик

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
Аналіз даних IoT у Python

Підписка MQTT

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 у Python

Давайте потренуємось!

Аналіз даних IoT у Python

Preparing Video For Download...