[Remotteアプリ] リモッテで MQTT ブローカーを立ち上げる

IoT のアプリケーションでは、要素間の通信方式として標準的に MQTT プロトコルが使われる場合が多い。MQTT では、情報の送信側と受信側を仲介する「ブローカー」というものが必要になるが、リモッテでは「MQTT Broker」というアプリが Remotte ストアにて提供されている。本投稿ではこの「MQTT Broker」を起動してみる。
### 「MQTT Broker」のインストール
まず、アプリの一覧画面から「ストアへ」を押して Remotte アプリストアを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/9c9a2878-e961-ec3b-5aa0-d2fad3cb521f.png)
アプリストアで「MQTT Broker」を見つけてダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/5738b324-0218-148d-463d-18da63e76417.png)
アプリの一覧画面からメニューを開き、「ファイルから読み込み」を選択し、ダウンロードしたファイルを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/6430a8e0-0142-a8fd-a95a-f76e4902a793.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/ccc1d7fc-2293-59db-287b-8d8cde3617a1.png)
アプリがインストールされたら、アプリの詳細画面を開き、「全般」画面に書かれている説明をよく読みましょう。特に、下の方に書かれているように、古いバージョンの Windows 10 では、アプリが正しく動作しない可能性があるので注意しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/16f6b14b-d492-c7ba-5dd8-66246c7f4321.png)
次に「構成」タブの「設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/034720b9-24cf-f89f-90b0-25b5837f0458.png)
「ID と パスワード」のオプションがあります。このままでも良いですが、とりあえず問題なく実験したいという場合は、エディットボックスの右側のマイナスボタンをクリックして削除し、画面上部の「保存」ボタンを押しても良い。
### MQTT 用のポートを開く
上記手順の中の、「全般」画面に書かれている内容に従って、MQTT のポートを開く。これには管理者権限をもったユーザーで Windows にログインする必要がある。以下の手順に出てくる画面や名称は、Windows 10 のバージョンやセキュリティーツールがインストールされているなどの環境の違いによって異なる場合があります。
まず、Windows の「設定」画面から、[ネットワークとインターネット] -> [Windows ファイアウォール] -> [詳細設定]と進む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/6c40243e-8da4-c22b-0755-e56109523239.png)
「セキュリティが強化された Windows Defender ファイアウォール」が開いたら、画面左の「受信の規則」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/90f0e0ed-c53d-d0e4-87b2-f5d80e801ec6.png)
続いて、画面右側の「新しい規則...」をクリックした後、「ポート」を選択し、「次へ」で進む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/b25b0d61-c7cf-d246-9c7f-c9ceb266e49f.png)
「TCP」および「特定のローカルポート」を選択した上で、ポート番号として「1883」と入力して進む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/abe16e20-27e1-19c0-e486-10854242b6ec.png)
以降、下記の画面の様に進める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/ebe83fb5-6906-f5f1-b149-f1da141fc812.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/9f2e74a1-e4a3-d3a3-25ce-0cc8afd4a76e.png)
「名前」として例えば「MQTT」とし、「完了」ボタンを押して終わり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/134d0f42-9933-d0f9-1dc8-3e838b97ff5a.png)
### MQTT ブローカーの起動
管理ツールの画面上部の「開始」ボタンを押し、MQTT ブローカーを起動する。正しく起動されたかどうかを確認するために、「ログ」画面を開いてみよう。この画面にエラーが表示されていなければ大丈夫。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/1ae543c0-f28a-307a-4a6d-0c8f0439de31.png)
もし、何らかのエラーが表示されている場合は、Windows 10 のバージョンが十分新しいかどうかを確認し、古ければアップデートすることをお勧めする。もし、Windows 10 のバージョンに問題が無いなら、「構成」画面の左下のメニューを開いて、「インストールスクリプトの実行」を選択してみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/aaf40fc4-0b15-890f-3b20-ccd690897084.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/824780de-d8c6-2a91-5317-5c73564d11a9.png)
実行が完了したら、「閉じる」ボタンをクリック。
また、何か期待通りに動作しない場合に、リモッテ・ステーションを再起動してみるのも良い方法だ。Remotte のコントロールパネルを開いて、「停止」ボタンを押してから、再度「起動」ボタンを押してから、MQTT Broker のアプリを開始してみよう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/8a9ff59a-0112-0b3c-a45a-147ced425a22.png)
### それでもエラーになる場合は...
Windows 10 をバージョンアップできない場合などで、セキュリティー環境に関連してエラーが出ている場合があります。この場合、以下の操作を行ってみてください。この操作にはリモッテの開発者登録を行なう必要があり、別の投稿 [[Remotte開発] 管理者モードから開発者モードへ切り替える](https://qiita.com/remotte_jp/items/66782915797e35b924a3) を参考にしてください。開発者モードに切り替えたら、「構成」の「コード」画面に移動し、その中のインストールスクリプト「Install.ps1」の１３行目の先頭の ＃ を削除し、コメント文を有効化した上で、再度画面左下のメニューから「インストールスクリプトの実行」をしてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/f1c6e967-cd59-70e5-3e02-e627f255f037.png)
### 接続性の確認
Android や iOS 端末があれば、MQTT ブローカーとの接続確認が手軽にできます。実際の IoT デバイスを接続する前に、ネットワーク環境などを含めた接続性の試験をしたい場合や IoT デバイスが上手く動作しない場合は、別の投稿  [MQTT ブローカーとクライアント間の接続性の確認](https://qiita.com/remotte_jp/items/51ede55bb822aefc3d61) を参考にしてみてください。
### 接続できない場合
接続確認がエラーになってしまう場合、以下の項目を参考にしてみましょう。

１）Windows パソコンにセキュリティーソフトがインストールされている場合、一度それを無効にし、MQTT ブローカーを再起動した上で試してみるのも有効な手段です。

２）職場から提供されたパソコンを使用しているなどで、ファイアウォールがより高く設定されている場合があります。上記の節「MQTT 用のポートを開く」では、ポート番号の指定によって接続許可を与える操作をしましたが、これに加えて、プログラムの指定によって接続を許可する操作を行うと良い場合があります。許可するプログラムのファイル名は、「mosquitto.exe」というもので、まずは「C:\ProgramData\Remotte」フォルダを開き、そこからこのファイルを検索してください。検索結果として、「C:\ProgramData\Remotte\Station\1\Application\xxxxxxxxxx\IOC\xxxxxxxxxx\mosquitto」というようなフォルダ内に、このファイルが格納されていることが分かります（xxxxxxxxxx の部分は、それぞれのパソコン環境で異なります）。このフォルダ名とプログラムファイル名「mosquitto.exe」を連結した、「C:\ProgramData\Remotte\Station\1\Application\xxxxxxxxxx\IOC\xxxxxxxxxx\mosquitto\mosquitto.exe」という、プログラムのフルパスを、ファイアウォールに設定します。手順は、上記の「規則の種類」を選択する画面で、「ポート」を選択する代わりに「プログラム」を選択します。
![規則の種類_プログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/4b89f4d9-6235-4ef2-6a17-a9ea64d9bc4c.png)
「次へ」をクリックした後、ラジオボタン「このプログラムのパス」を選択した上で、プログラムのフルパスを設定します。
![プログラムのフルパス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491154/b8cea952-bc91-b7b0-a8fe-9684d8445972.png)

３）使用している Wi-Fi ルーターで「分離機能」が有効になっている場合、２つのデバイス間で通信が出来ません。ネットワーク環境に問題が無いかを確認しましょう。
### まとめ
MQTT ブローカーは IoT 関係のアプリではとてもよく使われる要素です。リモッテ・ステーション上で一度起動できたら、そのまま放置し、起動したままにしておくのが良いかもしれません。なお、LAN の外から今回起動した MQTT ブローカーへアクセスできるようにするためには、別途ルータの設定が必要になります。