5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Sigfox CallbackとIBM Watson IoT連携 (with Node-RED)

Last updated at Posted at 2018-10-25

Sigfox Callbackには、Custom Callback以外にAWS IoT、AWS Kinesis、Microsoft Azure Event hub、Microsoft Azure IoT hub、IBM Watson IoT Platformへの連携が用意されていますが、Node-REDを使ってデバイスメッセージを処理したいという方も増えてきましのたで、ここでは、IBM Watson IoT Platformとの連携方法を記載します。
image.png
大まかな流れは、下記の通りとなります。

  1. IBM Watson IoT PlatformでSigfoxクラウド連携用のAPIキーを生成
  2. SigfoxクラウドでCallback設定
  3. Node-REDでデータ確認

#IBM Watson IoT Platformの設定
##Internet of Things Platformの立ち上げ
"Internet of Things Platform"は、IoTデバイスを簡単に活用できるよう設計されたクラウ ド・ホスティング・フルマネージド・サービスで、IoTデータのデバイスの登録、接続、制御、迅速な可視化、保管などの機能が提供されています。
Sigfoxクラウドとの接続も、このプラットフォームを経由することになります。
ライトユーザーであれば、立ち上げられるアプリケーションなどに制限はありますが、無料で利用可能ですでの、まずはIBM Cloud(https://cloud.ibm.com/)からアカウントを取得してください。

  1. IBM Cloud(https://cloud.ibm.com/)を開き、[リソースの作成]ボタンをクリックします。
    image.png

  2. カタログでは、**"Internet of Things Platform"**を選択してください。
    image.png

  3. Internet of Things Platformの初期設定では、サービス名(今回はSigfox2Watson)を入力してください。デプロイする地域は、デフォルトのダラスで結構です。
    image.png

  4. リソースが作成されると、下記ページが表示されますので、[起動]ボタンをクリックし、サービスを立ち上げます。なお、作成済みリソースの確認はこちらから可能です。
    image.png

  5. 登録済みのIBM ユーザーIDとパスワードを使って、[サインイン]します。IBMユーザーIDを忘れた方は、こちらのプロファイルページで確認できます。
    image.png

  6. サインインすると、右上にご自身のIDが表示されていることに気が付くと思います。クリックすると、BlueMix Freeというメニューが出てきますので、それを選択します。
    image.png

##IBM Watson IoT PlatformでAPIキーを作成
まずは、Sigfoxクラウドと連携するために、Watson IoT Platform側でAPIキーを作成します。

  1. 左メニューの[アプリ]を選択後、右上に出てくる[+APIキーの生成]ボタンをクリックしてください。
    image.png

  2. APIキーの生成時に、役割(Role)を聞かれます。"標準アプリケーション"を選んでおいて下しさい。APIキーの生成が完了すると、下図のようにAPIキーと認証トークンが表示されますので、両方をコピーしておいてください
    image.png

#Sigfoxクラウドの設定
Sigfoxクラウドでは、IBM Watson IoT Platformと連携したいDEVICE TYPEを選択し、左メニューのCALLBACKSから、[New]ボタンをクリックします。複数のCallbackパターンがリスト表示されているので、**"IBM Watson IoT Platform"**を選択します。
image.png

##Sigfox: Callback設定(Watson IoT Platform)
Watson IoT PlatformとのCallbackで必要な設定は、API KeyAuth Tokenです。この2つは、上述のWatson IoT Platformで作成したAPIキー情報からコピー&ペーストしてください。
image.png
あとは、CallbackするJSON bodyを定義します。今回は、デバイスIDと受信時刻、データペイロードを送りますので、下記JSON文を入力してください。

sigfox_callback.json
{
  "device": "{device}",
  "time": {time},
  "data": "{data}"
}

最後に、[OK]ボタンをクリックすると終了です。これで、SigfoxデバイスからのデータがIBM Watson IoT Platformに転送されるようになりました。
Watson IoT Platform側でデバイスメニューを確認します。Sigfoxクラウドで1つのデバイスタイプに対し、複数のデバイスを登録していた場合も、各デバイスからデータが送信され始めると、自動的にWatson IoT Platfrom側のデバイスが追加されます。
image.png
また、デバイスの「最近のイベント」を選択すると、SigfoxクラウドからCallbackされたメッセージを確認することができます。
image.png

#Node-REDで確認
Node-REDで、Sigfoxクラウドから送られたメッセージ(JSON)が本当に転送されてきているかを確認します。

  1. IBM Cloudのカタログに戻り、**"Node-RED"**で検索をかけると"Node-RED App"タイルが表示されますので、そのタイルを選択してください。
    image.png

  2. [アプリの作成]ボタンをクリックしてください。
    image.png

  3. アプリの詳細設定を入力する画面になります。
    アプリ名は、ユニークでなければいけないので、デフォルトのアプリ名をそのまま使うことをお奨めします。
    image.png
    Cloudantサービスのリージョンも選択可能です。今回は、すべてダラスで統一しておきます。
    [作成]ボタンをクリックしNode-REDアプリを作成します。

  4. Node-REDアプリの立ち上げには数分かかるかもしれませんが、無事作成されると、下図のような画面になります。[アプリのデプロイ]ボタンをクリックしてください。
    image.png

  5. アプリのデプロイには、下図のようにIBM Cloud API Keyが必要です。[New +]ボタンをクリックし、新たにキーを作成してください。
    image.png
    キーを入力すると、右上の[作成]ボタンが有効になりますので、作成を続けましょう。

  6. ツールチェーンの画面に遷移し、Delivery Pipelineの状態が適時変わっていくと思います。成功するまで時間がかかりますので、気長に待ちましょう。
    image.png

  7. Delivery Pipelineの状態が"成功"すると、同画面の上部に、下図のように、"アプリURLにアクセス"というリンクが表示されますので、クリックしてください。
    image.png

  8. アプリURLにアクセスすると、Node-REDの初期設定となりますが、必要な設定は、Node-REDの認証ユーザ設定のみですので、UsernameとPasswordを入力して、[Next]ボタンを押していき、設定を終わらせてください。
    image.png

  9. 下図、Node-RED画面が表示されるので、"Go to your Node-RED flow editor"ボタンをクリックしてください。
    image.png

##IBM Watson IoTのNodeがない!
早速、Node-RED上で、IBM Watson IoTに接続されたデバイスからメッセージ情報を取得しようと思ったところ、左のノード一覧にIBM IoT inのノードが見当たりません。
ノードを登録してあげる必要があります。ノードの登録はpackage.jsonに追加して、再ステージングすれば可能です。

  1. IBM Cloudに戻り、Node-REDアプリ(ここでは、Node RED ***という名前で作成したアプリ)に戻ります。下記赤枠URL(リポジトリURL)をクリックします。
    image.png

  2. Node-REDアプリのリポジトリに遷移しますので、package.jsonを選択し、Editしてください。
    image.png

  3. 追加するノードは**"node-red-contrib-scx-ibmiotapp"**という名前のノードです。
    image.png
    ノード追加後、画面下部にある[Commit changes]ボタンをクリックすると、package.jsonへの変更が反映され、再ステージングが始まります。(ステージングは数分かかるので、また気長に待ちましょう)

  4. ステージが終了すれば、改めて、Node-REDのURLにアクセスします。すると、下図のように入力・出力カテゴリに[ibmiot in]と[ibmiot out]が追加されています。(ノードの追加は、Node-RED上のパレットの管理メニューからでも可能ですが、IBM Watson IoT関係のノードを追加しようとしても、失敗続きだったので、直接package.jsonを編集しました。)
    image.png

  5. ここまでいけば、後は、フローを作成するのみです。下図のようにibmiot inノードとdebugノードを配置します。
    image.png

  6. ibmiot inノードの設定で必要なのは、IBM Watson IoTのAPIキーとトークンです。「IBM Watson IoT PlatformでAPIキーを作成」のところで作ったAPI KeyとAPI Tokenを入力します。Server-Nameはorganization_id.messaging.internetofthings.ibmcloud.comでいけると思います。organization_idのところは、ご自身の組織IDを入力してください。
    image.png

  7. 右上の[デプロイ]ボタンをクリックするとデプロイが始まり、成功後、デバッグビューimage.pngにデバイスメッセージが表示されることが確認できます。
    image.png

#まとめ
以前あったIBM Watson IoT Starterというサービスキットがなくなり、IBM Watson IoTとNode-REDを個々に立ち上げる必要がでてきたため、設定がややこしくなってしまいましたが、逆にIBM Watson IoTとNode-REDの関係性について理解できるようになったかと思います。

この仕組みを使うことにより、Node-REDの拡張機能を使って、様々なかたちでSigfox IoTデバイスからのメッセージを表現できるようになるかと思います。下記にサンプルをあげておきます。

Sigfox Japan KCCS
Twitter @ghibi

5
4
13

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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?