データストリーム入門

Python による IoT データの分析

Matthias Voppichler

IT Developer

データストリームとは

  • データの連続的なストリーム
  • 例
    • Twitterのメッセージ
    • オンラインニュース記事
    • 動画ストリーム
    • センサーデータ(IoT)
    • 市場注文(金融)
Python による IoT データの分析

データストリームとは

  • データの連続的なストリーム
  • 例
    • Twitterのメッセージ
    • オンラインニュース記事
    • 動画ストリーム
    • センサーデータ(IoT)
    • 市場注文(金融)
Python による IoT データの分析

MQTT

  • メッセージプロトコル
  • パブリッシュ / サブスクライブ
  • 軽量

サーバー -> メッセージブローカーとして機能

クライアント:

  • ブローカーに接続
  • データを発行
  • トピックを購読

Message Queuing Telemetry Transport

MQTTのデータフロー - プロデューサーからブローカー、そしてコンシューマーへ

Python による IoT データの分析

Pythonライブラリ

Eclipse Paho™ MQTT Python Client

# Import MQTT library
import paho.mqtt

詳細情報とドキュメントはGitHubで入手可能です https://github.com/eclipse/paho.mqtt.python

Python による IoT データの分析

単一メッセージ

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}
Python による IoT データの分析

コールバック

def on_message(client, userdata, message):

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

引数

  • client - クライアントインスタンス
  • userdata - プライベートユーザーデータ
  • message - MQTTMessageのインスタンス
Python による IoT データの分析

コールバック

import paho.mqtt.subscribe as subscribe


subscribe.callback(on_message, topics="datacamp/roomtemp", hostname="test.mosquitto.org")
Python による IoT データの分析

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}'
Python による IoT データの分析

練習しましょう!

Python による IoT データの分析

Preparing Video For Download...