MQTTブローカーの準備

0. はじめに

OpenBlocksにEclipse Mosquittoをインストールし、MQTTブローカー(サーバー)を設定します。

MQTTブローカーの準備には、次の5つの作業があります。

  1. OpenBlocksの初期設定
  2. OpenBlocks へのログイン
  3. Mosquitto のインストール
  4. Mosquitto MQTTブローカーの設定
  5. 1883ポートの解放

また、本チュートリアルには次の機材が用いられています。

1. OpenBlocksの初期設定

  1. WEB-UIを使うスタートアップについてはWEB-UI接続準備をご覧下さい。
  2. OpenBlocksのFW(Frame Work)をLinuxコンピュータとして動作させるための必要最小限の設定については初期設定をご覧下さい。

初期設定においては、MQTTブローカー用のOpenBlocks送信側のOpenBlocks受信側のOpenBlocks がネットワークで接続されるよう設定して下さい。
本チュートリアルでは3台のOpenBlocksがeth0ポートを介して相互に接続できるよう設定されていることを前提に説明を進めます。

2. OpenBlocks へのログイン

MQTTブローカーを稼働させるOpenBlocksの Linuxコマンドライン にログインします。

console ポートを用いる場合はコンソールからのログインを、 SSH(Secure Shell)を用いる場合は SSHからのログイン を参照して下さい。

Linux obsiot.example.org 5.4.47 #1 SMP PREEMPT Mon Sep 26 09:33:53 JST 2022 aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Oct 24 05:10:17 2022 from fe80::f279:59ff:fe64:3dff%eth0
root@obsiot:~#

3. Mosquitto のインストール

OpenBlocksにmosquittoパッケージをインストールします。

root@obsiot:~# apt update
root@obsiot:~# apt install -y mosquitto
  1. apt update を実行します。
  2. apt install -y mosquitto を実行します。

4. Mosquitto MQTTブローカーの設定

mosquittoパッケージでインストールされる MQTTブローカーはデフォルト状態でユーザー認証を行いません。
チュートリアルではBASIC認証(パスワード認証)を行うよう設定します。

4-1. 設定ファイルの編集

BASIC認証が行われるよう設定ファイル /etc/mosquitto/mosquitto.confにインクルード(追加読込)される /etc/mosquitto/conf.d/password.conf を作成します。

root@obsiot:~# echo "listener 1883" > /etc/mosquitto/conf.d/password.conf
root@obsiot:~# echo "allow_anonymous false" >> /etc/mosquitto/conf.d/password.conf
root@obsiot:~# echo "password_file /etc/mosquitto/pwfile" >> /etc/mosquitto/conf.d/password.conf
root@obsiot:~# cat /etc/mosquitto/conf.d/password.conf
allow_anonymous false
password_file /etc/mosquitto/pwfile
  1. echoコマンドでlistener 1883/etc/mosquitto/conf.d/password.confに追記します。
  2. echoコマンドでallow_anonymous false/etc/mosquitto/conf.d/password.confに追記します。
  3. echoコマンドでpassword_file /etc/mosquitto/pwfile/etc/mosquitto/conf.d/password.confに追記します。
  4. catコマンドで /etc/mosquitto/conf.d/password.confの記載を確認します。

mosquittoのデフォルト バインドポートはlocalhost:1883です。listener 1883を設定することで0.0.0.0:1883に設定されます。

4-2. パスワード ファイルの作成

パスワード ファイル /etc/mosquitto/pwfile を作成します。

root@obsiot:~# touch /etc/mosquitto/pwfile
root@obsiot:~# mosquitto_passwd -b /etc/mosquitto/pwfile deviceGw passwordGw
root@obsiot:~# mosquitto_passwd -b /etc/mosquitto/pwfile application passwordApp
root@obsiot:~# cat /etc/mosquitto/pwfile
deviceGw:$7$101$JLyPUWcO7tb+eDB3$J536XXl8EREKBssJLEB/1g0InS0rVP5xHVJRFzrTelrnWCl3M2KwEGCpuhr0y9dGMST4XDInXij2xzdQ2fzZAA==
application:$7$101$bFJtMWpHRPh7NNd8$jbrKDNjUfpJ2d6o8bQ/j1S/V6dj0baiJ7cz68uv8XGMsDvPc5HZL87MtqnqgxsIASwJyrlsOcKrgnj79b6mBgg==
  1. touchコマンドで空のパスワード ファイル /etc/mosquitto/pwfile を作成します。
  2. mosquitto_passwdコマンドでユーザー名deviceGw、パスワードpasswordGwをパスワード ファイル /etc/mosquitto/pwfileに登録します。
  3. mosquitto_passwdコマンドでユーザー名application、パスワードpasswordAppをパスワード ファイル /etc/mosquitto/pwfileに登録します。
  4. catコマンドでパスワード ファイル /etc/mosquitto/pwfile の内容を確認します。

4-3. MQTTブローカーの再起動

systemctlコマンドでMQTTブローカー(mosquitto)を再起動します。

root@obsiot:~# systemctl restart mosquitto

4-4. MQTTブローカーの自動起動有効化

systemctlコマンドで OS 起動時にMQTTブローカー(mosquitto)が自動起動するよう設定します。

root@obsiot:~# systemctl enable mosquitto

5. 1883ポートの解放

システム⇒フィルタータブにてMQTTブローカーが接続に使用するTCP 1883ポートを開放します。
上の黒いタブ列にファイル管理タブが表示されていない場合は、ダッシュボートタブをクリックして下さい。

フィルター

フィルター解放設定ペイン右上の拡張フィルター対応ボタンをクリックします。

拡張フィルタ設定ファイル編集ペインが表示されます。

フィルター

  1. 拡張フィルタ設定ファイル編集ペインの入力フィールドに/sbin/iptables -A INPUT -i eth0 -p tcp --dport 1883 -j ACCEPTと入力します。
    ネットワークの接続ポートとしてeth1またはwlan0を使用する場合は -i eth0-i eth1または -i wlan0として下さい。
  2. 保存ボタンをクリックします。