[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 ブローカーを介してメッセージを交換します。

 

準備

 

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.confpasswd の両方が存在するかを確認します。

 

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 を選択し、次の情報を入力します。

  • Brokerlocalhost または AI Board の IP アドレス
  • Port1883
  • Username:Mosquitto に設定した任意のユーザー名
  • Password:Mosquitto に設定した任意のパスワード

 

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