目次


Node-RED で REST API を作成し、API Connect で API を公開する

Watson IoT Platform を介して IoT デバイスを簡単に接続する

Comments

Node RED サービスでは、Watson IoT Platform を介して IoT デバイスを簡単に接続できるようになっています。そのわけは、Node-RED にはプログラマブル・ボタンを配した GUI が用意されているためです。これらのボタンを数回クリックするだけで、REST API と完全なビジネス・ロジックを作成することができます。JavaScript の基本的な知識があれば、IoT デバイスからデータを収集して、収集した値を Node-RED で処理するといった、アプリに必要なロジックの大部分を実行できます。

このチュートリアルでは、Node-RED でサンプル・アプリケーションを完成させた後、このアプリケーションを公開し、API Connect](https://www.ibm.com/jp-ja/cloud/api-connect) を利用してさらに高度な REST API 機能を使用できるようにします。API Connect には次の機能が用意されています。

  • API をカテゴリーに分類する機能
  • API の使用に特定の制限を設ける機能
  • API に対する各種の役割を特定するための機能
  • さまざまな Web サービスを一元管理するための機能
  • API のバージョン管理を行うための機能

以下に、API Connect UI のスクリーンショットを示します。

API Connect のスクリーンショット
API Connect のスクリーンショット

学習の目的

このチュートリアルでは、以下の方法を説明します。

  • デバイスを Watson Internet of Things Platform から Node-RED に接続する
  • Node-RED を使用してデータベースへの挿入処理を行う
  • Node-RED を使用して REST API を作成する
  • API Connectを使用して Node-RED REST API に対応する

前提条件

この入門チュートリアルに従うには、読者が次のものを揃えていることが前提条件となります。

所要時間

  • Watson IoT Platform のセットアップ: 約 10 分
  • Node-RED のセットアップ: 約 10 分
  • API Connect のセットアップ: 約 10 分
  • API Connect で Node-RED を使用する方法についての確認: 約 15 分

手順

Node-RED フローを作成する

Node-RED フローをデプロイするのに最も簡単な方法は、フローが含まれる JSON ファイルを Node-RED パレットにインポートすることです。ただし、それにはまず、いくつかのパッケージをインストールする必要があります。Node-RED インスタンスを作成した後、私たちが最初にパレットにインストールするのはノードです。ノードをインストールするには、「Manage Palette (パレットの管理)」ボタンを使用します。

パレットを管理する画面のスクリーンショット
パレットを管理する画面のスクリーンショット

「Manage Palette (パレットの管理)」ボタンをクリックすると、「Install (インストール)」セクションが表示されます。このセクションで、「watson」を検索します。検索結果として表示される node-red-contrib-ibm-watson-iotnode-red-contrib-ibm-wiotp-devices-ops という 2 つのパッケージをインストールします。

Watson パッケージを示す画面のスクリーンショット
Watson パッケージを示す画面のスクリーンショット

これで、フローをエディターにインポートする準備が整いました。allFlows.json ファイルをダウンロードし、このファイルの内容をクリップボードにコピーしてから、Node-RED パレットを開きます。右上隅にあるハンバーガー・メニューの下に、インポート・セクションがあります。クリップボード・ボタンをクリックして、JSON ファイルからすべてのフローをインポートします。

フローをインポートする画面のスクリーンショット
フローをインポートする画面のスクリーンショット

先に進む前に、「Flow 1 (フロー 1)」を削除します。それには、「Flow 1 (フロー 1)」タブをダブルクリックし、「Delete (削除)」ボタンを使用します。

フローを削除する画面のスクリーンショット
フローを削除する画面のスクリーンショット

先に進むには、サービス資格情報に従って IoT ノードを構成する必要があります。IoT サービスの API キーとトークンの作成方法がわからない場合は、このリンク先の入門チュートリアルに従って作成してください。

サービス資格情報を作成したら、IoT ノードのいずれかを開きます。そのノードを構成して、資格情報の値を反映させます。以下のスクリーンショットに一例を示します。

IoT ノードを構成する画面のスクリーンショット
IoT ノードを構成する画面のスクリーンショット

認証方式が「API Key (API キー)」に設定されていない場合は、必ずこの設定に変更してください。次に、「API Key (API キー)」セクションの横にある鉛筆アイコンをクリックし、API キーとトークンを入力します。これらの資格情報を入力すると、後は自動的にすべての IoT ノードが適切に構成されます。

IoT ノードを構成する画面のスクリーンショット - その 2
IoT ノードを構成する画面のスクリーンショット - その 2

各フローの詳細を見ていきましょう。エディター内には 4 つの異なるフローがあります。

  • モック・データを Watson に送信するフローでは、実際の IoT デバイス・データを使用するのではなく、関数を使用してモック・データを作成し、そのデータを Watson IoT Platform にプッシュします。
  • Watson IoT からデータを読み取るフローでは、Node-RED 上でセンサー・データを読み取るために、Watson IoT に接続します。
  • Watson IoT からデータベースに書き込むフローでは、データベースを 2 番目のフローに追加します。
  • REST API フローでは、アプリケーション・データベースを REST API として公開します。

Node-RED フローの詳細を探る

モック・データを Watson に送信する

このフロー内では、IoT Platform との通信に API キー認証方式を使用します。この認証方式を使用することで、任意の IoT Platform に接続できるので、接続先の IoT Platform が IBM Cloud スペース内に存在する必要はありません。

Watson IoT からデータを読み取る

このフロー内で、Watson IoT Platform からのデータにサブスクライブします。前のステップと同じく、ここでも API キーを使用できます。

Watson IoT からデータベースに書き込む

このフローと前のフローの違いは、データベースの部分だけです。このフロー内では、Node-RED インスタンスの作成時に作成された既存の Cloudant データベースを使用できます。あるいは、外部データベースに接続することもできます。この入門チュートリアルでは、既存の Cloudant データベースを使用します。

REST API

このフロー内には、Web サービスを作成する際の HTTP エンドポイントとなる HTTP 入力ボタンと、Web サービスへのレスポンスを作成する HTTP 出力ボタンがあります。/sensor-data API に対するリクエストを受け取ると、データベース・ボタンを使用してデータベースからすべてのセンサー情報を取得し、そのデータを HTTP レスポンス・ボタンを介して配信します。

Node-RED をテストする

構成が完了したので、すべてを試す必要があります。右上隅にある赤い「Deploy (デプロイ)」ボタンをクリックしてください。エラーがまったく表示されなければ、構成に問題はないことになります。一方、予期しないエラーが発生すると、エディター右側部分の「Info (情報)」セクションの横に「debug (デバッグ)」ページが表示されてエラーが示されます。エラーが発生しなかった場合は、「interval (インターバル)」ボタンの横にある小さい四角をクリックすると、「debug (デバッグ)」ページが表示されます。以下のスクリーンショットに一例を示します。デバッガー内の値は、皆さんに表示される値とは異なるはずです。

「interval (インターバル)」ボタンを示すスクリーンショット
「interval (インターバル)」ボタンを示すスクリーンショット

これで、問題なくメッセージを IoT Platform に送信し、Node-RED から読み取れることを確認できました。ボタンを 1 回クリックしただけで、3 つのフロー (「Mock Data to Watson (モック・データから Watson)」、「Data From Watson IoT (Watson IoT からのデータ)」、「Watson IoT to Database (Watson IoT からデータベース)」) のすべてをテストしたことになります。最後に、「REST API」フローをテストする必要があります。Node-RED インスタンスの URL をコピーしてブラウザー内に貼り付け、URL の末尾に「/sensor-data」を追加してください。例えば、「cagataytanyildiz.mybluemix.net/sensor-data」のような URL になります。データベースから取得された JSON blob が表示された場合、テストは合格です。すべてに問題がないことを確認したら、次のステップで API Connect の構成に取り掛かってください。

API Connect を使用してカタログを構成する

API Connect では階層を使用して API を収集、作成、一般公開します。以下の図に、API Connect がどのように構造化されているのかを示します。この入門チュートリアルでは、API を公開する「カタログ」に注目します。

API Connect の階層
API Connect の階層

IBM Cloud ダッシュボードから API Connect インスタンスを起動しましょう。

API Connect のスクリーンショット - その 1
API Connect のスクリーンショット - その 1

API Connect UI が起動したら、「Dashboard (ダッシュボード)」ボタンの横にある「>>」ボタンを使用して「Drafts (ドラフト)」までナビゲートし、「API」タブを選択します。

API Connect のスクリーンショット - その 2
API Connect のスクリーンショット - その 2

「ADD (追加)」ボタンをクリックします。ただし、API を作成する前に、「Additional Properties (その他のプロパティー)」を展開し、「Security (セキュリティー)」セクションの「Identify Using (識別方法)」「None (なし)」を選択してください。

新規 API を作成する画面のスクリーンショット
新規 API を作成する画面のスクリーンショット

API の作成が完了したら、「Paths (パス)」セクションで Web サービスの新しい /sensor-data パスを追加します。

パスを追加する画面のスクリーンショット
パスを追加する画面のスクリーンショット

次は、Web サービスを API にバインドする必要があります。それには、「Assemble (アセンブル)」セクションで「invoke (呼び出し)」図をクリックします。この図をクリックした後、Web サービスの URL (例: https://cagataytanyildiz-node-red.mybluemix.net/sensor-data) を入力して、リクエスト・タイプ (このシナリオでは「GET」) を選択します。最後に、「Cache Type (キャッシュ・タイプ)」「No Cache (キャッシュなし)」に設定します。

「invoke (呼び出し)」図を示す画面のスクリーンショット
「invoke (呼び出し)」図を示す画面のスクリーンショット

サービスを API に追加したら、「Save (保存)」をクリックして変更内容を保存し、「Validate (検証)」をクリックして API 設計を検証する必要があります。ページの右側にある「Save (保存)」ボタンをクリックしてください。成功メッセージが表示されたら、「Save (保存)」ボタンの横にある「Validate (検証)」ボタンをクリックします。このセクションにエラー・メッセージが表示されなければ、検証は成功です。API を準備した後は、製品も準備する必要があるので「Drafts (ドラフト)」ページに戻ります。ただし、今回追加するのは製品です。

製品を準備する画面のスクリーンショット - その 2
製品を準備する画面のスクリーンショット - その 2
製品を準備する画面のスクリーンショット - その 1
製品を準備する画面のスクリーンショット - その 1

製品の名前とタイトルを入力します。それが終わったら、ページの右側にある「Save (保存)」ボタンをクリックします。次に、「Design (設計)」セクションで「Save (保存)」ボタン、「Validate (検証)」ボタンの順にクリックします。このセクションにエラー・メッセージが表示されなければ、検証は成功です。

次は、API を製品に追加する必要があります。カタログを表示して、新しく作成した製品をクリックしてください。「API」セクションまでナビゲートし、製品に API をバインドします。それには、「API」セクションの右上隅にある「Add API (API の追加)」ボタンをクリックし、保存した API を選択します。

製品と API をバインドする画面のスクリーンショット
製品と API をバインドする画面のスクリーンショット

API を選択したら「Save (保存)」ボタンをクリックし、次に「Stage (ステージング)」ボタンをクリックします。ステージングが完了するまでには数分かかる場合があります。ステージングが完了したら、「Dashboard (ダッシュボード)」から製品をプッシュできます。それには、「>>」ボタンをクリックしてから「Dashboard (ダッシュボード)」を選択し、「Sandbox (サンドボックス)」カタログを選択します。カタログからステージング済み製品を選択し、3 つのドット・メニュー項目を使用して公開します。

製品を公開する画面のスクリーンショット
製品を公開する画面のスクリーンショット

API Connect の構成をテストする

公開した API をテストします。「Draft (ドラフト)」セクションから「API」ページに戻り、「Assemble (アセンブル)」セクションを開きます。検索バーの横にある再生ボタンをクリックします。

再公開する画面のスクリーンショット
再公開する画面のスクリーンショット

「Operation (オペレーション)」ドロップダウンにパスが表示されるはずです。オペレーションとして「GET」を選択します。ステータス・コードとして「200 OK」が返されたら、すべてが正常に完了したことになります。おめでとうございます!

トラブルシューティング

  • -1 エラーが表示されたら、API Connect カタログ内で製品が公開されていることを確認してください。
cors
cors

まとめ

API Connect と Node-RED を使用して、Watson IoT Platform を使用するアプリケーションを簡単に、ほとんどコードを作成することなく公開できました。さらに、API Connect サービスを利用すれば Node-RED や Watson IoT Platform だけでなく、他のさまざまなサービスを接続することもできます。他のドキュメントでも API Connect サービスと Node-Red サービスの詳細を確認することをお勧めします。

以下のリソースを参照して、Node-RED と API Connect の詳細を学ぶことができます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Internet of Things, Web development
ArticleID=1065996
ArticleTitle=Node-RED で REST API を作成し、API Connect で API を公開する
publish-date=06132019