AmbientはIoTのデータを簡単に可視化してくれるサービスになります。キーを発行し、データを送信するだけでグラフがどんどん表示されていきます。AmbientのデータはIoT機器から発信するだけなのが基本ですが、NCMBを使うことでデータを保存しておくこともできます。
今回はAmbientとNCMBを連携させる方法を紹介します。
Pythonライブラリを利用する
まずAmbientとNCMBのライブラリをインストールします。
pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git pip install ncmb
初期化する
両方のライブラリを初期化します。Ambientはデータを取得するだけなのでWRITE_KEYを ""
としておいても大丈夫です。
import time from datetime import datetime as dt import ambient from NCMB.Client import NCMB # Ambientの初期化 am = ambient.Ambient(CHANNEL_ID, "WRITE_KEY", "READ_KEY") # NCMBの初期化 ncmb = NCMB("APPLICATION_KEY", "CLIENT_KEY")
Ambientからデータを取得する
今回はAmbientの最新のデータを1件取得します。
obj = am.read(n=1)[0]
そして、これをNCMBのデータストアに保存します。Ambientのcreatedは文字列形式なので、日付型に変換しています。
obj = ncmb.Object('Ambient') obj.set( "data", obj["d1"] ).set( "date", dt.strptime(obj["created"], '%Y-%m-%dT%H:%M:%S.%fZ') ).save()
後はこれを定期的に繰り返していきます。1秒ごとの取得だと同じデータが返ってくることがあったので、createdが変化しているかどうかを確認しています。
last_time = "" while True: obj = am.read(n=1)[0] if last_time != obj["created"]: print(obj) obj = ncmb.Object('Ambient') obj.set( "data", obj["d1"] ).set( "date", dt.strptime(obj["created"], '%Y-%m-%dT%H:%M:%S.%fZ') ).save() last_time = obj["created"] time.sleep(1)
このスクリプトを実行することで、AmbientからNCMBへデータが定期的に送信されます。
まとめ
Ambientに複数データ送っている場合は d1 、 d2といった具合に増えていきます。データが消えてしまわないように保存しておくのにデータストアを利用してください。また、集計やデータ分析を行う際にも役立つことでしょう。