
2つのアプリの連携をNode-REDとCloundantで実装してみた
こんにちは。
AI coordinatorの清水秀樹です。
アプリ間連携する方法として、サーバーを経由しながら情報の受け渡しをする方法が一般的かと思います。(多分)
ただ、筆者にはそんなスキルはなく、どうやって情報の受け渡しができるか模索していたところ、割と簡単にデータの授受ができる方法があったので、紹介したいと思います。
ちなみに、この方法はPepperアプリ「FINDING KIDS」を開発している中で、一緒に開発していたメンバーの方から教えてもらったやり方になります。
Node-REDとCloundantでどんなものを作成したかと言いますと、単純にサインフラグを作成して、オンオフを切り替えるようなそんな簡単な仕組みを構築しました。
使い方としては、一方のアプリではフラグを立てる役割を担っていて、もう一方のアプリではフラグが立つまでは待機し、フラグが立ったら起動するようなそんな仕組みをNode-REDとCloundantで実装しました。
その方曰く、もっと正しいやり方があるとのことでしたが、ここでは備忘録的に記録しておきたいと思います。
許可が降りれば、このサイトでも紹介したいと思います。
Bluemixのボイラープレート「Internet of Things Platform Starter」の作成方法
Bluemix上では簡単にNode-REDが使用できるので、こちらのクラウドサービスを活用します。
では早速作成していきましょう。
Bluemixのカテゴリ内にある、「Internet of Things Platform Starter」をクリックしましょう。

次の画面ではアプリ名とデプロイする地域を指定します。
アプリ名はお好みで大丈夫です。
地域は米国南部を使用しました。

上記を入力したら画面最下部の「作成」ボタンをクリックしましょう。
しばらく画面中央にグルグルが出ます。
画面が切り替わると以下のようにアプリを起動しているような画面が表示されます。

とりあえずこの画面は無視して「ダッシュボード」に入りましょう。
ダッシュボードへの戻り方は、画面左上にメニューバーを表示するマークがあるので、そこをクリックして、表示されたメニューの中から「ダッシュボード」を選択してください。

ダッシュボード画面が表示されたら、先ほど作成したCloud Foundryアプリが稼働中になっていればOKです。

ここでまだ稼働中になっていない場合は、もうしばらくお待ちください。
稼働中になったら、いよいよNode-REDを起動します。
経路にあるアドレスをクリックしましょう。

すると、以下のような画面が表示されるので、Nextをクリック。

UsernameとPasswordを聞かれるので、適当に入力しましょう。

次画面で最後です。
Finishをクリック。

するとウニョウニョ動く画面が表示され、

いよいよNode-REDを起動する画面が表示されます。
以下のような画面が表示されたら、「Go to your Node-RED flow editor」をクリックしてNode-REDを起動しましょう。

ログイン画面が表示されるので、先ほど入力したUsernameとPasswordを入力しましょう。

ようやく起動できました。

Node-REDでFlowの作成
ここからは実際にNode-REDを使用して簡単なFlowを作成していきます。
初期状態では上記のようなサンプルFlowがありますが、今回は使用しません。
新しく、Flowを作成しますので、+タグをクリックして新規Flowを作成しましょう。

完成形はこんな感じになります。

簡単に全体像を説明すると、1を与えられたら1をDBに格納し、0を与えられたらDBに0を格納します。
DB検索命令がきたら現在のDBの状態を値として返します。
そんなフローです。
それでは一つずつノードの詳細を見ていきましょう。
まずは入力となるhttpノードは以下のように設計しています。

続いて、switchノードの編集です。
プロパティを編集し、処理を3つに分岐するように編集します。
オン、オフ、参照の3つですね。

それでは’1’(オン)を挿入するところから説明していきます。
cloudant in ノードの編集です。
以下の画像のように編集しましょう。

続いてfunctionノードの編集です。
ここでは’1’を挿入する仕様としています。

コードを貼り付けられるように以下に記載しておきます。
var doc = msg.payload[0];
doc.foundflag = "1";
doc.no = "001";
msg.payload = doc;
return msg;
いよいよDB格納です。

web上でも確認できるようにtemplateノードとhttp responseノードも付け足しておきます。


以上が’1’(オン)を挿入するところまでの説明です。
続いて’0’(オフ)を挿入するところの説明です。
‘1’(オン)との違いは途中のfunctionノードとtemplateノードのみです。

‘0’を挿入するようにコードを編集します。
同じくコードをコピペで貼り付けられるように記載しておきます。
var doc = msg.payload[0];
doc.foundflag = "0";
doc.no = "001";
//msg.payload[0] = doc;
msg.payload = doc;
return msg;
以上が’0’(オフ)を挿入するところまでの説明です。
続いてtemplateノードです。

テンプレートに’0’を指定します。
最後に参照機能です。
functionノードを以下のように編集します。

貼り付けられるようにコードを以下に記載しておきます。
msg.payload = "";
return msg;
続いてDBの検索です。
cloudant in ノードは以下のように編集します。

そしてfunctionノードの編集です。

同じく貼り付けられるようにコードを以下に記載しておきます。
//msg.payload = msg.payload[0].DATA;
msg.payload = msg.payload[0].foundflag;
return msg;
最後にhttp responseを繋げます。

以上でNode-REDのフロー作成は完了です。
作成が完了したら、画面右上の「デプロイ」をクリックしましょう。
Cloudantの作成
続いてCloudantの作成です。
ダッシュボードに戻り「Cloudant NoSQL DB」をクリックしましょう。

次画面でLAUNCHをクリック。

なんだかよく分からない画像が表示されるので、左上にあるデータベースマークをクリックしましょう。

データベースマークをクリックすると、Node-RED上で作成した「foundflag」が選択できるようになっています。
この「foundflag」をクリックしましょう。

次画面が表示されたら、ALL Documents横の+ボタンをクリックし、表示されたメニューの中から、「New Doc」を選択しましょう。

以下のような画面が表示されますので、そのまま画面上部の「Create Document」をクリックしてください。

以下の画面が表示されているはずです。

画面中央の「Metadate」を選択すると、すぐその下に、数字の乱数が表示された謎のレコードが出来ているので、そのレコードをクリック。

以下のような編集画面になるので、

以下のように編集しましょう。

foundflagとnoを追加しています。
"foundflag": "1",
"no": "001"
追加が終了したら、「Save Changes」をクリックしてください。
以上で準備が完了しました。
DBの内容を書き換えてみましょう
それでは早速、WEBからアクセスしていきましょう。
ブラウザ上からアクセスしてみます。
https://ai-coordinator.mybluemix.net/foundflag
以下のように表示されました。

‘1’が表示されていますね。
これはCloudant NoSQL DB作成時に’1’を入れているからです。
続いて、’0’を挿入してみます。
ブラウザ上から以下のurlを打ち込んでみます。

‘0’が返ってきました。
このようにNode-RED + Cloudantを使用すれば簡単にデータの更新が出来るようになります。
これが出来るようになれば、アプリ間連携するような開発も簡単に出来るようになりますね。
ぜひ活用してみてください。
それではまた。
LEAVE A REPLY