以前の、センサ値の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
0 件のコメント:
コメントを投稿