以前の、センサ値の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作成し、登録用のテーブル作成しておきます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE IF NOT EXISTS `t_sensor` ( | |
`id` int(11) NOT NULL AUTO_INCREMENT, | |
`topic` text, | |
`payload` text, | |
`created` datetime DEFAULT NULL, | |
`modified` datetime DEFAULT NULL, | |
PRIMARY KEY (`id`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1469 ; |
# 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 件のコメント:
コメントを投稿