[AI ルーター] MQTT ブローカー(Mosquitto)のインストール方法
MQTT(Message Queuing Telemetry Transport)は、IoT デバイス間の通信に一般的に使用される軽量なメッセージング プロトコルです。Home Assistant では、MQTT は自動化(オートメーション)の統合に頻繁に使用されます。例えば、Frigate を使用して映像解析(特定エリアへの侵入検知など)を行う場合、Frigate は MQTT 経由で Home Assistant にメッセージを送信します。メッセージ受信により、照明の点灯や通知の送信などのオートメーションをトリガーできます。
MQTT の役割
MQTT プロトコルにおける役割は何でしょうか? Frigate の IP カメラと Home Assistant を統合させるシナリオを例にご説明します。
- Publisher(パブリッシャー):Frigate - IP カメラの映像からイベント(例:誰かが特定のエリアに侵入)を検出すると、Frigate はこのイベントをメッセージとして MQTT ブローカーに公開します。
- Subscriber(サブスクライバー): Home Assistant - Frigate が公開する特定のトピックを購読します。Home Assistant がメッセージを受信すると、オートメーション(例:照明の点灯や通知の送信など)をトリガーできます。
- Broker(ブローカー):Mosquitto - 仲介役として機能し、Frigate からメッセージを受信し、Home Assistant のサブスクライバーに転送します。Frigate と Home Assistant は直接通信せず、Mosquitto MQTT ブローカーを介してメッセージを交換します。
準備
- Portainer の基本操作に習熟していること。詳しくは [AI ルーター] AdGuard Home の例で Docker、イメージ、コンテナ、Portainer を理解する をご覧ください。
- 一部の手順で Vi エディター(テキスト エディター)を使用します。不慣れな場合は、基本的な vi エディターのチュートリアルをオンラインで確認してください。
Mosquitto をインストールする
1. Portainer を使用して Mosquitto をデプロイする。
- Portainer の Stacks ページに移動し、[Add Stack]をクリックします。
- スタック名に mosquitto と入力します。
- Web editor に、以下の文字列(YAML 形式設定)を貼り付けます。

version:"3.8"services: # --- MQTT Broker (Eclipse Mosquitto) --- mosquitto: image: eclipse-mosquitto:2 container_name: mosquitto restart: unless-stopped volumes: - mosquitto_config:/mosquitto/config - mosquitto_data:/mosquitto/data - mosquitto_log:/mosquitto/log ports: - "1883:1883" # MQTT - "9001:9001" # WebSocket volumes: mosquitto_config: mosquitto_data: mosquitto_log:
2. [Deploy the stack]ボタンをクリックして、デプロイを完了します。

Mosquitto を設定する
1. Portainer の Containers ページに移動し、 mosquitto を見つけます。
2. mosquitto をクリックしてコンテナ詳細ページを開き、「Console」タブをクリックします。

3. Command 欄に /bin/sh と入力し、[Connect]をクリックしてコンテナのコマンドライン インターフェースを開きます。

4. コマンドラインでパスワードファイルを作成するために、次のコマンドを入力します。
mosquitto_passwd-c -b/mosquitto/config/passwd <username> <password>
* <username> と <password> は、任意のユーザー名とパスワードに置き換えます。文字と数字のみを使用し、# で始まらないようにしてください。
ファイルが作成されたことを確認するには、ls /mosquitto/config を実行して、mosquitto.conf と passwd の両方が存在するかを確認します。

5. Mosquitto 設定ファイル mosquitto.conf を編集するために、次のコマンドを入力します。
vi/mosquitto/config/mosquitto.conf

6. mosquitto.conf 内で、パスワード ファイルのパスを指定し、匿名アクセスを無効にするために、次の設定を追加します。<I>キーを押して挿入モードに切り替え、ファイルの先頭または末尾に次の文字列を追加します。vi エディターでは、<Ctrl>+<Shift>+<V>を使用してテキストを貼り付けることができます。
allow_anonymous false
password_file /mosquitto/config/passwd
listener 1883 0.0.0.0
socket_domain ipv4
7. <Esc>を押して :wq と入力し、<Enter>を押して保存して終了します。(変更を破棄したい場合は、 :q! と入力し<Enter>を押します。)

8. 設定を適用するために、Mosquitto コンテナを再起動します。
- Portainer の Containers ページに移動し、 mosquitto を見つけます。
- mosquitto をクリックしてコンテナ詳細ページを開き、[Restart]をクリックします。

Home Assistant で MQTT インテグレーションを設定する
1. Home Assistant メイン画面の左メニューで Settings(設定) > Devices & services(デバイスとサービス)の順に選択し、右下の[ADD INTEGRATION(統合を追加)]ボタンをクリックします。
2. 「MQTT」を検索して選択します。

3. ポップアップ ウィンドウで MQTT を選択し、次の情報を入力します。
- Broker:localhost または AI Board の IP アドレス
- Port:1883
- Username:Mosquitto に設定した任意のユーザー名
- Password:Mosquitto に設定した任意のパスワード


4. 完了後、MQTT クライアントを使用して Mosquitto に接続できるようになります。
