人工知能・IoT

さくらのIoT Platform βを試してみる(その3)データの蓄積

前回の記事では、Arduinoで取得した気温と照明のセンサーデータをさくらのIoTでクラウドにアップして、WebSocketで見えるようにするところまで作業を進めました。

そのあと、MQTTも試してみたのですが、いまのところ、どうも上手く動きません・・・。
そこで、WebSocketで取得できるデータをIBM Bluemix上で動作しているNode-REDで処理してCloudantに蓄積するところまで、やってみました。

Bluemix上でNode-REDを動かす

BluemixではNode-REDが簡単に動作します。後でCloudant(NoSQLデータベース)も使うので、Internet of Things Platform Startarというボイラープレートで簡単に環境構築できます。

Iot startar

このボイラープレートでは、Node-REDの動作環境となるCloud Foundaryアプリの他、CloudantとWatson IoT Platformという2つのサービスが自動的に追加されます。

本当は、Watson IoT PlatformでMQTTを受信してCloudantに蓄積するという流れをNode-REDで作りたかったのですが、そこは断念・・・。

Cloudantに蓄積するNode-REDフロー

Nodered flow

ざっと、こんな感じのフローをつくります。

arduino_sakuraというノードはWebSocketの受信です。msg.payloadにWebSocketで受信した内容(JSON)が入っているので、jsonノードでJavaScriptオブジェクトに変換します。
さくらのIoT PlatformのWebSocketは、実際の値がセットされているメッセージ以外に、接続維持用のメッセージも流れてくるので、switchノードで後者を捨てます。msg.payload.typeがchannelsは前者、keepaliveが後者のメッセージです。

Nodered sakura switch

convertファンクションが肝心です。下記のようなコードを書きます。

var temperature = null;
var light = null;

for (var i = 0; i < msg.payload.payload.channels.length; i++) {
	var data = msg.payload.payload.channels[i];
	if (data.channel == 0) {
		temperature = data.value;
		break;
	}	
}

for (var i = 0; i < msg.payload.payload.channels.length; i++) {
	var data = msg.payload.payload.channels[i];
	if (data.channel == 1) {
		light = data.value;
		break;
	}
}

msg.payload = {
	"module": msg.payload.module,
	"datetime": msg.payload.payload.channels[0].datetime,
	"temperature": temperature,
	"light": light
}

return msg;

Arduino側からは、いくつかのデータをまとめてクラウドにアップする形になっているので、channelsが複数まとめて来るのですが、気温(channel:0)と照明(channel:1)の先頭だけを取得する形にしています。

最後のsakura_iotノードで、Cloudantに格納しています。

Cloudant dashboard

Bluemixのコンソール画面からアクセスできるCloudantダッシュボードを見ると、きちんとデータが格納されていることが分かります。

ピックアップ記事

  1. IBM Watsonの入門書「初めてのWatson APIの用例と実践プログラミ…
  2. 拙著「初めてのWatson APIの用例と実践プログラミング」各オンライン書店で…

関連記事

  1. 人工知能・IoT

    IoTでの新サービスを活用法と変化のマトリクスで考える(2)

    前回の記事では、IoTや人工知能をどのようなサービスで活用できるかとい…

  2. 人工知能・IoT

    WatsonでBotを作るならDialogが良いのか他が良いのか

    (追記)Dialogは非推奨となり、代替サービスであるConversa…

  3. 人工知能・IoT

    次のユーザインタフェースはチャットである

    現代はコンピュータに囲まれた時代であるというのは、まったくもって陳腐な…

  4. 人工知能・IoT

    さくらのIoT Platform βを試してみる(その1)

    さくらのIoT Platform βのLTEモジュールとArduino…

  5. 人工知能・IoT

    「AIとIoTで日本を変えよう!」を考える

    最近、何度か拙著「初めてのWatson」にサインを書くというこ…

  6. 人工知能・IoT

    【初めてのWatson】11/7に日本IBMさまの会場でワークショップ開催します

    11月7日に日本IBMさまの箱崎事業所を会場に使用させていただ…

最近の記事

アーカイブ

  1. 散文

    2016年はチャンスの年、2017年は勝負の年
  2. プログラミング

    こどもたちにプログラミングを教えて感じたこと
  3. ITコーディネータ

    ITコーディネータ認定を受けました!
  4. 日記

    京王駅伝フェスティバル2016に参加しました
  5. 人工知能・IoT

    「初めてのWatson」ハンズオンセミナーを開催しました
PAGE TOP