ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

AmbientとNCMBを連携させる

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へデータが定期的に送信されます。

f:id:mbaasdevrel:20201209151023p:plain

まとめ

Ambientに複数データ送っている場合は d1 、 d2といった具合に増えていきます。データが消えてしまわないように保存しておくのにデータストアを利用してください。また、集計やデータ分析を行う際にも役立つことでしょう。

Ambient – IoTデーター可視化サービス

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。