tweet

MQTT アプリ実装編、paho-mqtt (python版)


以前の、センサ値のweb版リアルタイム表示に加えて
過去データの表示方法も検討したいと思います。

paho-JS版のリアルタイム表示は、便利なのですが。
過去データを表示するには、別途実装が必要かと思います。

今回は、
Subscribe 側サーバに、paho-python ライブラリを使用し、
mysql データベースに書きこみます。
サーバ環境は、前回 LAN上に構築した mosquitto(websockets版)

IoTデバイス側は、以前の wiz550io版
約2秒間隔で、センサ値を送信

# 準備 ライブラリ等
paho-mqtt python
sudo pip install --upgrade paho-mqtt

Mysql ライブラリ
sudo apt-get install python-mysqldb

# db作成し、登録用のテーブル作成しておきます。

# Sub側の処理
paho-mqtt (python) の sub.py を拡張して、実装していきます

pythonの常駐プロセスを起動しておき、pubデータを監視

Git:
https://github.com/kuc-arc-f/python-mqtt-sub-2

起動方法:
python sub2db.py

# pub/subのルール等
今回は下記としてます。
pub: デバイスに対して、1個の  Topicを割り当てる
例)
item/sensor-1 : 1台目
item/sensor-2 : 2台目
item/sensor-3 : 3台目

sub: topic範囲を指定する(対象のデバイス分)
item/#

*)web側のsubは、1台毎 topic(1 topic)を指定する。

# db登録
https://github.com/kuc-arc-f/python-mqtt-sub-2/blob/master/python-mqtt-sub-2/sub2db.py

on_message (イベントハンドラぽい)に、db処理を追加。
=======================
def on_message(client, userdata, msg):
clsSen= com_sensor.sensorClass()
print("on_message:topic=" + msg.topic+" ,pay="+str(msg.payload))
clsSen.saveSensor( msg.topic, str(msg.payload))
=======================

# テスト
python側常駐プロセスがsubすると、DB登録されます。

*) phpmyadmin で確認。
*) 別のクライアントIDで、前回のwebリアルタイム表示も可能(ログ)


登録側のデバイス( 参考 )



#まとめ
*) MQTT経由でDB登録まで完了できたので、表示系の実装はカンタンかと思います。
*) 短い周期のデータ書込みで、接続デバイス数が多ければ
  DB負荷も重たいので、工夫が必要かと思います。
  pubする間隔と長くすると、リアルタイム性が低くなるため注意も必要
*) クラウド側に設定すると、同様に過去データ取得/リアルタイム表示可能

# 関連の記事
mqtt 準備
http://knaka0209.blogspot.jp/2015/10/mqtt-1.html

wiz550 デバイス
http://knaka0209.blogspot.jp/2015/10/wiz550io-2.html

mosquitto(websockets版)
http://knaka0209.blogspot.jp/2015/10/mqtt-3.html

# 開発者向けのまとめ記事
http://knaka0209.blogspot.jp/2015/04/agri.html



コメント

FACEBOOK

人気の投稿