LoginSignup
7
3

More than 3 years have passed since last update.

Watson IoT Platform と Cloudant を連携させる

Posted at

はじめに

 Watson IoT Platform (Internet of Things Platform) は、IBM Cloud を基盤とする IoT のためのプラットフォームです。センサー等のデバイスから得られるデータの収集・蓄積・可視化など、様々な機能を提供しています。
 提供する機能の一つとして、同じく IBM Cloud で提供される NoSQL型DBの Cloudant と連携する機能があり、デバイスから収集したデータをリアルタイムに保管することができます。
 本記事では、その連携方法について解説します。

前提

  • IBM Cloud のアカウントを所有していること
  • IBM Cloud 上で Watson IoT Platform のインスタンスを作成済みであること
  • IBM Cloud 上で Cloudant NoSQL DB のインスタンスを作成済みであること

連携方法

以下の手順で Watson IoT Platform と Cloudant を連携させることができます。
 1. APIキーの発行
 2. Service binding の設定
 3. Connector の設定
 4. Destination の設定
 5. Forwarding ルール の設定

1. APIキーの発行

まずは、Watson IoT Platform の API を呼び出すための APIキーを発行します。

  • Watson IoT Platform のインスタンスを開き、画面左のメニューから「Apps」を開きます。
    image.png

  • 「Browse API Keys」と書かれたページが表示されるので、右上の「Generate API Key」のボタンをクリックします。
    image.png

  • 「Description」を記述して次に進みます。ここで「API Key Expires」を ON にすると、APIキーの有効期限を設定できます。

  • API呼び出しを行うアプリケーションのロールを選択して、「Generate Key」でAPIキーを発行します。アプリケーションのロールは実際に作成するアプリケーションの役割を選択しますが、ここでは「Standard Application(標準アプリケーション)」を選択します。
    image.png

  • APIキーが発行されます。「API key」と「Authentication Token」は後の手順で使用するのでメモします。特に「Authentication Token」は後から確認することができないので注意します。
    image.png

2. Service binding の設定

 1の手順で発行したAPIキーを使用して API を呼び出し、Cloudant 連携の設定を行います。通常は Curl や Postman 等のツールなどを使用して API を呼び出すと思いますが、Watson IoT Platform の APIリファレンス の 「Try it out」を使う方法が簡単なので、本記事ではそちらの方法を紹介します。

  • 下記のURLの組織名を埋めてアクセスします。

    • https://{Watson IoT Platform の組織名}.internetofthings.ibmcloud.com/docs/index.html 
  • 「IBM Watson IoT Platform REST APIs」というページが開くので、「Historian Connector」を選択します。
    image.png

  • Swagger の APIリファレンスが開きます。「Authorize」ボタンを選択します。
    image.png

  • Username と Password の入力が求められますが、Username には、1の手順でメモした「API key」、Password には「Authentication Token」を入力して、「Authorize」をクリックします。
    image.png

  • 認証が成功し、API 呼び出しが可能な状態になりました。

ここから、「Try it out」を利用して、実際に API を呼び出していきます。

  • Services の「Register a service」を開き、「Try it out」をクリックします。 image.png

image.png

  • 「Parameters」の「Example Values」に必要な情報を入力します。
    image.png

    • 「name」は作成する Service binding の名前です。
    • 「type」は "cloudant" と設定します。
    • 「credentials」は連携する Cloudant の Credential情報です。Cloudant のインスタンスを開き、「Service credentials」タブから取得することができます。 image.png
  • 「Execute」を押下してAPI呼び出しを行うと「Responses」に結果が返ってきます。成功すると201のステータスコードが返ってきます。ここで、Response body の「id」は次の「3. Connector の設定」で「serviceId」として使用するのでメモしておきます。
    image.png

以降の手順でも同様に「Try it out」を利用します。

3. Connector の設定

  • HistorianConnectors の「Create a connector」を開き、「Try it out」をクリックします。
  • 「Parameters」の「Example Values」に必要な情報を入力します。
    • 「name」は作成する Connecter の名前です。
    • 「serviceId」は 2 の手順の最後にメモした「id」の値を記述します。
    • 「timezone」は Cloudant に保管されるデータのタイムスタンプが準拠するタイムゾーンです。日本時間にするには "JST" と記述します。
  • 「Execute」を押下してAPI呼び出しを行うと「Responses」に結果が返ってきます。成功すると201のステータスコードが返ってきます。ここで、Response body の「id」は以降の手順で使用するのでメモしておきます。

4. Destination の設定

  • Destinations の「Create a destination for a historian connector」を開き、「Try it out」をクリックします。
  • 「connectorId 」に 3 の手順の最後にメモした「id」の値を記述します。
  • 「Parameters」の「Example Values」に必要な情報を入力します。
    • 「name」は作成する Destination の名前です。Cloudant に作成されるDB名(テーブル名)に使用されます。
    • 「type」は "cloudant" と設定します。
    • 「configuration」では、Cloudant に保管されるデータをどの期間保持するかを設定します。設定した期間より古いデータは自動的に削除されます。「configuration」内のパラメーターとしては、保持期間の単位(日単位、週単位など)を設定する「bucketInterval」と保持日数を設定する「retentionDays」が設定できます。
    • 「configuration」の例1(データを1日分保持する設定)
      • {"bucketInterval": "DAY","retentionDays": 1}
    • 「configuration」の例2(データを2週分保持する設定)
      • {"bucketInterval": "WEEK","retentionDays": 14}
  • 「Execute」を押下してAPI呼び出しを行うと「Responses」に結果が返ってきます。成功すると201のステータスコードが返ってきます。
  • Cloudant 内のデータの保管先(テーブル)を振り分ける場合、例えばデバイスごとにデータを分けて保管したい場合などは、この Destination を複数作成します。

5. Forwarding ルール の設定

  • Forwarding Rules の「Create a forwarding rule for a historian connector」を開き、「Try it out」をクリックします。
  • 「connectorId 」に 3 の手順の最後にメモした「id」の値を記述します。
  • 「Parameters」の「Example Values」に必要な情報を入力します。
    • 「name」は作成する Forwarding ルール の名前です。
    • 「type」は "event" と設定します。
    • 「selector」では、データの収集元(デバイスなど)の設定を記述することができます。「selector」内のパラメーターとしては、Watson IoT Platform で設定するデバイスタイプの「deviceType」と収集するイベントの識別子である「eventId」が設定できます。
    • 「selector」の例(センサーで人を検知したデータを収集する設定)
      • {"deviceType": "sensor","eventId": "detect_human"}
  • 「Execute」を押下してAPI呼び出しを行うと「Responses」に結果が返ってきます。成功すると201のステータスコードが返ってきます。

終わりに

 1~5の設定が完了すると、Watson IoT Platform で収集したデータが自動的に Cloudant に保管されるようになっているはずです。
 Cloudant には、日毎に「iotp_{{Watson IoT Platform の組織名}_{Destination名}_yyyy-mm-dd」という名前で DB(テーブル)が作成され、そこにデータが保管されます。

参考

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3