IoT
node-red
watsoniotplatform
wiotp
wiotp0

Watson IoT Platformを使ってみる

More than 1 year has passed since last update.

初めてWatson IoT Platformを使ってみよう、というかたのためのガイドです。


初めに

BluemixのIDを取得します。

1. FirefoxかChromeかSafariでBluemix.netへアクセスし、画面右上の「登録」を選択します。

2. 登録画面で名前、メールIDなどを登録すると、指定したメールIDへ招待メールが届くので、そのリンクをクリックしてactivateします。

3. Bluemixへログインします。

4. "Successfully logged in"のメッセージが表示されるのみで画面が切り替わらない場合、ブラウザ(FirefoxまたはChromeまたはSafari)のURL入力欄にもう一度bluemix.netを入力し、[Cntl]+Rで画面を再読み込みしてみます。


作業する地域を確認します


  1. Bluemixへログインしたら、画面右上の自分のユーザー名のアイコンをクリックしてプルダウンを開き、「地域」を「米国南部」へ変更します。

    スクリーンショット 2016-05-22 17.21.13.png


  2. IoTのアプリを作るには「米国南部」のほうがいろいろ面白いためです。


  3. 「スペース名を作成」のプロンプトが表示された場合には、適当に入力します(例:開発用であれば「dev」など)。



最初のIoTアプリを作成



  1. 再びBluemixの初期画面へ戻ったら、画面右上の六角形の「+」記号を選択します。画面右上にこの「+」記号が見つからない場合、


    • 「ようこそ○○」と自分のログイン名が表示されている場合は、その下の「概要」が選択されているので、「すべての項目」を選択すると画面右上に六角形の「+」記号が表示されるようになります。

    • クラシック画面になっている場合は、画面上部の「Try the new Bluemix」ボタンを押して新しいBluemix画面にします。もしくはクラシック画面のまま、画面右上の「カタログ」を選択し、次項のボイラープレートからのアプリ作成を行う事も可能です。



  2. 表示されるメニューの中から、先頭セクションにある「ボイラープレート」(テンプレート集)の中の「Internet of Things Platform Starter」を選択します。

    スクリーンショット 2016-05-17 11.29.36.png


  3. 適当なアプリケーション名を指定します。

    スクリーンショット 2016-05-18 8.19.41.png


  4. 画面をスクロールし、画面下部の「作成」ボタンを押します。


  5. 「概要」タブへ移動し、作成したアプリケーションが開始されるまで数分待ちます。「ログ」タブで進捗を確認できます。


  6. 「アプリは実行中です」と表示されたら「アプリの表示」ボタンを押します。クラシック画面を使用している場合は、「経路」の右に表示されたURLをクリックします。

    スクリーンショット 2016-05-18 8.24.17.png


  7. 「Node-RED in Bluemix」画面が表示されるので、画面右下の赤い「Go to your Node-RED flow editor」ボタンを押します。


  8. Node-RED画面が表示されます。

    スクリーンショット 2016-06-07 8.25.12.png


  9. 上記フローが表示されない場合、Watson IoT Platform - Node-RED - フローをコピーする方法を参照して以下のフローをコピペで用意する事も可能です。



基本的なIoTアプリのフロー

[{"id":"3e77d543.c1882a","type":"ibmiot in","z":"c5a69172.72d498","authentication":"quickstart","apiKey":"","inputType":"evt","deviceId":"","applicationId":"","deviceType":"+","eventType":"+","commandType":"","format":"json","name":"IBM IoT App In","service":"quickstart","allDevices":false,"allApplications":false,"allDeviceTypes":true,"allEvents":true,"allCommands":false,"allFormats":false,"x":100,"y":400,"wires":[["ae0082ac.51ff8","c0c482df.3f3b8"]]},{"id":"ae0082ac.51ff8","type":"function","z":"c5a69172.72d498","name":"temp","func":"return {payload:msg.payload.d.temp};","outputs":1,"x":290,"y":400,"wires":[["ff6ad0d9.00953"]]},{"id":"ff6ad0d9.00953","type":"switch","z":"c5a69172.72d498","name":"temp thresh","property":"payload","rules":[{"t":"lte","v":40,"v2":null},{"t":"gt","v":40,"v2":null}],"checkall":"true","outputs":2,"x":450,"y":400,"wires":[["80621eff.7f9de"],["8e1706a.f71e8f8"]]},{"id":"5dad02b7.a252fc","type":"debug","z":"c5a69172.72d498","name":"cpu status","active":true,"complete":"false","x":790,"y":400,"wires":[]},{"id":"c0c482df.3f3b8","type":"debug","z":"c5a69172.72d498","name":"device data","active":true,"console":"false","complete":"true","x":310,"y":480,"wires":[]},{"id":"80621eff.7f9de","type":"template","z":"c5a69172.72d498","name":"safe","template":"Temperature ({{payload}}) within safe limits","x":610,"y":380,"wires":[["5dad02b7.a252fc"]]},{"id":"8e1706a.f71e8f8","type":"template","z":"c5a69172.72d498","name":"danger","template":"Temperature ({{payload}}) critical","x":620,"y":420,"wires":[["5dad02b7.a252fc"]]},{"id":"cbe1a0b7.cd877","type":"ibmiot out","z":"c5a69172.72d498","authentication":"boundService","apiKey":"","outputType":"evt","deviceId":"LivingRoomThermo1","deviceType":"thermostat","eventCommandType":"update","format":"json","data":"temp:10","name":"Send to IBM IoT Platform","service":"registered","x":566,"y":120,"wires":[]},{"id":"5917a925.6a3c08","type":"inject","z":"c5a69172.72d498","name":"Send Data","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"x":100,"y":120,"wires":[["6b4a591c.014b18"]]},{"id":"6b4a591c.014b18","type":"function","z":"c5a69172.72d498","name":"Device payload","func":"// Thermostat's location:\nvar longitude1 = -98.49;\nvar latitude1 = 29.42;\n\n// Array of pseudo random temperatures\nvar temp1 = [15,17,18.5,20,21.5,23,24,22.2,19,18];\n\n// Array of pseudo random relative humidities\nvar humidity1 = [50,55,61,68,65,60,53,49,45,47];\n\n// Counter to select from array.\nvar counter1 = context.get('counter1')||0;\ncounter1 = counter1+1;\nif(counter1 > 9) counter1 = 0;\ncontext.set('counter1',counter1);\n\n// Create MQTT message in JSON\nmsg = {\n  payload: JSON.stringify(\n    {\n      d:{\n        \"temp\" : temp1[counter1],\n        \"humidity\" : humidity1[counter1],\n        \"location\" :\n        {\n          \"longitude\" : longitude1,\n          \"latitude\" : latitude1\n        },\n      }\n    }\n  )\n};\nreturn msg;\n","outputs":1,"noerr":0,"x":320,"y":120,"wires":[["cbe1a0b7.cd877","805c97ee.3ed9e8"]]},{"id":"805c97ee.3ed9e8","type":"debug","z":"c5a69172.72d498","name":"Debug output payload","active":true,"console":"false","complete":"payload","x":560,"y":180,"wires":[]},{"id":"86df0b6c.af90c8","type":"comment","z":"c5a69172.72d498","name":"Device Simulator","info":"Sends simulated device sensor data to IBM Watson IoT Plaform.\n\nCan be configured to send on click or on an automatic interval.\n\n\n#Prerequisite\nOutput node device type and device ID need to match a device that it registered in a running IBM Watson IoT Platform service.\n\n# Watson IoT Platform docs\n[Connecting devices](https://www.bluemix.net/docs/services/IoT/iotplatform_task.html)","x":100,"y":40,"wires":[]},{"id":"141b7c7.ad42a84","type":"comment","z":"c5a69172.72d498","name":"1. Configure target","info":"","x":550,"y":80,"wires":[]},{"id":"c2dd8ed5.7dd7f","type":"comment","z":"c5a69172.72d498","name":"2. Click to send data","info":"To automatically send data:\n1. Change *Repeat* to interval.\n2. Click Deploy button.\n","x":110,"y":160,"wires":[]},{"id":"7926c7b2.86d938","type":"comment","z":"c5a69172.72d498","name":"Temperature Monitor","info":"","x":110,"y":300,"wires":[]},{"id":"188a5e87.e775a1","type":"comment","z":"c5a69172.72d498","name":"Configure source","info":"","x":100,"y":360,"wires":[]}]



  • 上記のフローのうち、上部のフロー("Device Simulator"と表記され灰色の"Send Data"ノードから始まるフロー)については、下記の6.で紹介しています。

  • 上記のフローのうち、下部のフロー("Temperature Monitor"と表記され青い"IBM IoT App In"ノードから始まるフロー)については、下記の3、4で紹介しています。


次のステップ

Node-REDを使って以下の操作が可能です。

1. 入力・出力の使い方

2. ファンクションの使い方

3. 温湿度計のシミュレーターを用意する

4. 温湿度計のシミュレーターをつないで出力してみる

5. フローをコピーする方法

6. 登録されたデバイスからデータを取得する


さらに次のステップ

上記のNode-REDフローを元にいろいろな操作をやってみます。

1. IoTデータをデータベースに格納する

2. IoTデータへSQLでアクセスする

3. dashDBへ直接書き込む

- dashDBへSQLツールでアクセスして表示する

4. メーターで可視化する

5. Bluemixのサービスを使えるようにする

6. Watsonに喋らせてみる

7. Twitterへつぶやいてみる

8. TIセンサータグを使ってみる

9. IFTTT経由でSMSメッセージを送ってみる

10. デバイスを登録してデータを送信する

11. アプリを登録してデータを受信する

12. Watson IoT Platformでルールを使ってみる

13. Watson IoT Platform APIを使ってみる

14. Node-REDをローカル環境で稼働させる


サンプル・フロー


  1. シミュレーターの値を閾値で判断

  2. センサーからの値を閾値で判断


  3. センサーからの値をリアルタイムで可視化



  4. データベースからのIoTデータを表示

  5. Watson Speech to Textで日本語でIoTしてみる


  6. ビーコンの位置情報を可視化する




  7. TensorFlowでIoTデータを人工知能してみる




Node-REDでシンプルなウェブサイトを作ってみる


  1. Node-REDでシンプルなウェブサイトを作ってみる


ダッシュボードを作ってみる

まずはお手軽にダッシュボードを作ってみたい、というかたはkuraokaさんのnode-red-dashboardでチャート表示IoTアプリ作成 がおすすめです。

いや、ガチで自分で作り込みたい、というかたは下記をどうぞ。

1. ダッシュボードを作ってみる


他の達人たちの記事



  1. Node-REDのhttp inノードでBasic認証を有効にする (takeyanさんの記事)


  2. BluemixとカスタムドメインとSSLサーバー証明書とクライアント証明書 (takeyanさんの記事)


  3. BluemixのDockerコンテナ環境にTensorFlowをインストールする (takeyanさんの記事)


  4. (ほぼ)スマホ(だけ)を使ってIoTを始めてみよう (manamanaさんの記事)


  5. (ほぼ)スマホ(だけ)を使ってIoTを始めてみよう~応用アプリを作る~ (manamanaさんの記事)


  6. node-red-dashboardでチャート表示IoTアプリ作成 (kuraokaさんの記事)

  7. Node-REDに追加できるノード


さらにその次のステップ


  1. Predictive Analyticsを使ってリアルタイム解析する

  2. Streamsを使ってリアルタイム解析してみる


  3. IBM Internet of Things Workbenchでアプリを作ってみる。- 紹介動画


Node-RED小ワザ集


  1. msg.payloadについて

  2. フロー内で共有する変数など

  3. 日付・時刻の追加

  4. 直近10件の平均や標準偏差を求める

  5. 自分のノード(サブフロー)を作成する

  6. 閾値によって判断する

  7. センサーからの最新値を入手する

  8. シミュレーターを作る

  9. Node-RED小ワザ集

  10. Bluemix小ワザ集


MQTTを試してみる


  1. MessageSightを動かす

  2. MessagingTesterを使ってみる

  3. Publish/Subscribeしてみる

  4. MessageSightで使用状況を確認する

  5. Node-REDからpub/subしてみる

  6. Node-REDを使ってMQTT

  7. NodeREDからQuickstartへpublish

  8. サンプルアプリからQuickstartへpublish

  9. Topicの確認

  10. Retainの確認

  11. CleanSession=false(durable subscription)の確認

  12. pahoのsandboxとNode-REDでMQTTの練習

  13. 共用サブスクリプションを試してみる - Watson IoT Platform

  14. Message HubでKafkaしてみる