mqtt
Bluemix
paho
watsoniotplatform

IBM Watson IoT PlatformにMQTTデータを送信するサンプルアプリ(Node.js)を作成する

Watson IoT Platformにmqttデータを投げるサンプルアプリを作成した際の覚書です。

アプリ概要

・IBM Watson IoT Platformにmqtt on websocketでmqttデータを送信するサンプルアプリ。
・スタートボタン、ストップボタンでデータ送信開始/停止を操作。
・ポートを(443/8883)から選択可能。
・サンプルコードは以下。
 https://github.com/sesamiK/TestTool4IoTPlatform

作業の流れ

1.IBM Cloud上でIoT Platformサービスを作成
2.デバイスの登録
3.接続、メッセージのパブリッシュ
4.接続確認

作業手順

1.IBM Cloudにログインし、カタログからWatson IoT Platformのサービスインスタンスを作成する。
1-1.左側タブより「IoT」カテゴリを選択し、「Internet of Things Platform」サービスを選択する。
スクリーンショット 2018-03-11 3月11日.31.49.png

1-2.サービス名、デプロイする地域/ロケーション、組織、スペースを選択し、「作成」をクリックする。
スクリーンショット 2018-03-11 3月11日.34.39.png

2.デバイスの登録
・接続のためには「デバイス・タイプ」「デバイス」の登録が必要。
・以下の手順で「デバイス・タイプ」「デバイス」を登録する。
2-1.起動をクリックする。
スクリーンショット 2018-03-11 3月11日.40.44.png

2-2.IoT Platformのダッシュボードが開いたら左側タブの「デバイス」をクリックする。
スクリーンショット 2018-03-11 3月11日.39.08.png

2-3.デバイス・タイプを登録する。「デバイス・タイプ」タブを開き「デバイス・タイプの追加」をクリックする。
スクリーンショット 2018-03-11 3月11日.41.39.png

2-4.「名前」部分に任意のデバイス・タイプ名を入力して「次へ」をクリックする。
スクリーンショット 2018-03-11 3月11日.46.04.png

2-5.デフォルトのまま「完了」をクリックする。(デバイスの詳細情報は必要があれば後から追加することが可能。)
スクリーンショット 2018-03-11 3月11日.46.25.png

2-6.引き続きデバイスを登録する。「デバイスの登録」をクリックする。
スクリーンショット 2018-03-11 3月11日.50.32.png

2-7.「既存のデバイスタイプの選択」で先に登録したデバイス・タイプを選択し、「デバイスID」に任意のデバイスIDを入力、「次へ」をクリックする。
スクリーンショット 2018-03-11 3月11日.56.09.png

2-8.「デバイス情報」「グループに追加」のページではデフォルトのまま「次へ」をクリックする。
スクリーンショット 2018-05-21 5月21日.08.31.png

2-9.デバイスからIoT Platformに接続を行う際に認証トークンが必要になる。このトークンを自分で決める場合はここに記入する。自動生成する場合は「認証トークン」欄は空欄のまま「次へ」をクリックする。(ここでは自動生成手順を示す。)
スクリーンショット 2018-03-11 3月11日.01.44.png

2-10.内容を確認して「完了」をクリックする。(自動生成の場合のトークンは次画面で表示)
スクリーンショット 2018-03-11 3月11日.02.12.png

2-11.この画面で表示される以下の情報を使って接続するため、内容を全てメモする。
※特に認証トークンは復旧不可で、この画面でしか表示されないため、必ずメモを取る。
スクリーンショット 2018-03-11 3月11日.03.14.png

2-12.2-11の画面で左上の「戻る」をクリックすると登録されたデバイスが表示される。
スクリーンショット 2018-03-11 3月11日.07.10.png

2-13.デバイス名(ここではsampledevice)をクリックして開き「状態」や「ログ」タブを開くと状態、ログを確認できる。(デバイスからデータを送信し、ここで接続確認ができる)
スクリーンショット 2018-03-11 3月11日.08.02.png

3.接続、メッセージのパブリッシュ
3-1.サンプルアプリのコードを以下からGit Cloneする。
・サンプルコード: https://github.com/sesamiK/TestTool4IoTPlatform

3-2.マニフェストファイル(manifest.yml)を開き、「name」と「host」と記載されている項目内容を以下に従って編集して保存、IBM Cloud上にPushする。
※yml形式のファイルではスペースが重要なため、誤ってスペースを削除しないよう注意!
・name=任意のアプリ名に変更
・host=任意のホスト名に変更
スクリーンショット 2018-03-11 3月11日.26.25.png

3-3.IBM Cloud上でpushしたアプリが稼働していることを確認し、「経路」をクリックして表示されたURLにデバイス(iPhoneなど)のブラウザからアクセスする。
スクリーンショット 2018-03-11 3月11日.29.26.png

3-4.テストアプリ画面にて、「2-11」手順でメモを取った内容を入力して「Start」をクリックする。
・組織ID     :組織ID
・デバイス・タイプ:デバイス・タイプ
・デバイスID   :デバイスID
・認証トークン  :認証トークン
・Message    :IoT Platformに送信する任意のメッセージ
・ポート     :443か8883を選択

(↓iphoneでsafariを開き、アドレスバーに3-2の経路をクリックして表示されたURLを打ち込んだ画面例)
IMG_4934.PNG

3-5.「Start」をクリックして下にメッセージ送信のログが表示されていることを確認する。
IMG_4935.PNG

4.接続確認
4-1.Watson IoT Platformのデバイス>参照タブを開き、対象のデバイス名をクリックして、「状態」タブを開くと、送信したメッセージが「値」項目に表示されていることを確認できる。
スクリーンショット 2018-05-21 5月21日.31.12.png

4-2.
同様にして「ログ」タブを開くと接続ログが表示され、接続日時、接続情報などを確認できる。