Watson IoT Platform - MQTT - MessageSightを動かす

初めてWatson IoT Platformを使ってみよう、というかたのためのガイドです。
[Watson IoT Platformを使ってみる](http://qiita.com/egplnt/items/af867711a7191923b2ff)でIoTアプリを準備しました。

MQTTの練習をするために、MQTTブローカーとして無償評価版のMessageSightを用意します。
- MessageSightはrpm版を使用します。
- Linux環境であればそのまま導入します。
- Windows環境やMacbook環境ではDockerが便利です。
- MessageSightはServerコンポーネントに最低で4GB、WebUIコンポーネントに最低で1GBのメモリを使用します。

#FAQ: つながらない？
- 当ページ最下部に設定時のFAQをまとめてあります。

#MessageSightをダウンロードします。
1. [IBM® IoT MessageSight™](http://www.ibm.com/developerworks/downloads/iot/messagesight/index.html)ページを開き、画面右上の「Download Developer Package」ボタンからIBM IDでログインしてMessageSight V2のパッケージをダウンロードします。370MB程度のサイズです
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/125842/5f10b1c9-3d09-155a-b26f-695a324388fb.jpeg)
2. ダウンロードが完了したら`IBMIoTMessageSight-2.0.zip`をunzipすると、MessageSight ServerとWebUIのそれぞれのtzファイル（例：`IBMIoTMessageSightServer-2.0.20160525-2146.tz`）などが現れます。この中にrpmファイルやDockerfileなどが含まれます（次のステップで準備していきます）。

#CentOSでrpmを導入します。
1. [Installing IBM IoT MessageSight](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qsg10000.html)のページを参照します。
2. [Preparing the IBM IoT MessageSight .tz packages for installation](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00054_.html)を参照してファイルを準備します。
3. [Installing the IBM IoT MessageSight RPM on a host OS](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00056_.html)を参照してMessageSightのServerとWebUIをそれぞれ導入し、手順にしたがいそれぞれのインスタンスを起動します。 

4. [Logging in to the IBM IoT MessageSight Web UI](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00053_.html)を参照して最初のWebUI画面へログインします。
このとき、`https://127.0.0.1:9087`と`https`である点に注意します。
ブラウザで証明書についての認証する必要がある場合があります。
コンソール（黒い画面）にログインプロンプトが表示されるので
ユーザー名：`admin`
パスワード：`admin`
でログインします。
![スクリーンショット 2016-05-24 12.45.36.png](https://qiita-mage-store.s3.amazonaws.com/0/125842/8cf289a9-9ca8-e673-b791-dabdfdfbd1af.png)
5. ライセンス認証に答えます。
![スクリーンショット 2016-05-24 14.01.16.png](https://qiita-image-store.s3.amazonaws.com/0/125842/ea584022-0d3e-4f6d-6dba-337abb09d2f3.png)
6. WebUIへログインできました。

#Macbook/WindowsでDockerで導入します。
1. [Docker for Mac](https://docs.docker.com/engine/installation/mac/)、[Docker for Windows](https://docs.docker.com/engine/installation/windows/)などを参照してDockerを準備します。MacbookがMarvericksなど古くてDocker for Macが使用できない場合には、deprecateされていますがboot2dockerが自己責任で使用可能ではあります。Windows 7などではDocker　Toolboxからインストールが可能です。

2. [Installing IBM IoT MessageSight] (http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qsg10000.html)のページを参照します。
3. [Preparing the IBM IoT MessageSight .tz packages for installation](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00054_.html)を参照してファイルを準備します。
3. [Installing IBM IoT MessageSight in Docker containers](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00055_.html)を参照してMessageSightのServerとWebUIをそれぞれ導入し、手順にしたがいそれぞれのインスタンスを起動します。
4. [Logging in to the IBM IoT MessageSight Web UI](http://www.ibm.com/support/knowledgecenter/SSWMAJ_2.0.0/com.ibm.ism.doc/QuickStartGuide/qs00053_.html)を参照して最初のWebUI画面へログインします。
このとき、`https://xx.xx.xx.xx:9087`と`https`である点に注意します。
Docker環境によっては、hostonlyでネットワークが構成されている場合があります。その場合、VirtualBoxのport forwardで`9087`ポートへ外部からアクセス可能に設定する必要がある場合があります。
boot2dockerを使用している場合、`boot2docker ip`コマンドで外部からアクセス可能なIPアドレスを入手します（参考：[boot2dockerの使い方](http://qiita.com/awakia/items/e31b217c60e2309705c9))。
ブラウザで証明書についての認証する必要がある場合があります。
コンソール（黒い画面）にログインプロンプトが表示されるので
ユーザー名：`admin`
パスワード：`admin`
でログインします。
![スクリーンショット 2016-05-24 12.45.36.png](https://qiita-image-store.s3.amazonaws.com/0/125842/8cf289a9-9ca8-e673-b791-dabdfdfbd1af.png)
5. ライセンス認証に答えます。
![スクリーンショット 2016-05-24 14.01.16.png](https://qiita-image-store.s3.amazonaws.com/0/125842/ea584022-0d3e-4f6d-6dba-337abb09d2f3.png)
6. WebUIへログインできました。

#MessageSight Serverへ接続します。
1. WebUIからMessageSight Serverを接続します。
![スクリーンショット 2016-06-29 9.12.21.png](https://qiita-image-store.s3.amazonaws.com/0/125842/8ea2cee4-cab9-3112-914d-4ca344bb5882.png)
2. WebUI画面上部の「サーバー」メニューを開き、「サーバーの追加または削除」を選択します。
3. 「サーバーの追加または削除」画面で、「＋」記号を押してMessageSight Serverを追加します。デフォルトで`9089`ポートで稼働しています。
![スクリーンショット 2016-06-29 9.15.00.png](https://qiita-image-store.s3.amazonaws.com/0/125842/92a2a683-1925-52ac-f94b-3756e4008d2f.png)
4. 「テスト接続」ボタンを押してMessageSight Serverへ接続できる事を確認します。
このとき、MessageSight Serverインスタンスに十分なメモリが割り当てられていないと、「接続のテスト」を行った時点でMessageSight Serverが異常終了するので注意が必要です。
5. WebUIのホーム画面へ戻り、「Messaging Tester サンプル・アプリケーション」を使用してサンプルアプリからMessageSightへ接続し、publish/subscribeできる事を確認します。
![スクリーンショット 2016-06-29 10.33.17.png](https://qiita-image-store.s3.amazonaws.com/0/125842/f7732dc1-7829-86f7-2f4d-dd0d992212ff.png)

#MessageSight インストール FAQ:
- 再起動後、`1883`ポートへ接続できない：　→ エンドポイントが「使用不可」になっていませんか？ WebUIの「メッセージング」メニューから「メッセージング・ハブ」の「DemoHub」を選択して鉛筆マークで編集モードに入り、「DemoHub」編集画面の「エンドポイント」タブを開き、デフォルトの「DemoMqttEndpoint」（ポート：1883）が使用可能になっているかを確認します。使用不可になっている場合、「DemoMqttEndpoint」を選択して鉛筆マークで編集モードに入り、「エンドポイントの編集」画面で「「使用可能」にチェックを入れます。
- WebUIからMessageSight Serverが登録できない： → MessageSight Serverに十分なメモリが割り当てられている事を確認します。デフォルトで4GBが必要です。メモリ割り当てが不足するとWebUIからの「接続のテスト」時にMessageSight Serverが異常終了する場合があります。
- Docker環境で9087ポートがアクセス不可： → Dockerがhostonlyでネットワークを構成している場合があります。VirtualBoxのport forwardで9087ポートなどが外部からアクセスできるように設定します。