ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Raspberry Pi】MQTTを使ってみる

 以前の記事でWindowsでMQTTを使ってみた記事を書きました。

 Windows機をMQTTサーバ(ブローカー)にすることは、正直ほとんどないと思います。

 なので今回は割とありそうなRaspberry PiをブローカーとしてMQTTを使ってみる方法の記事になります。
 より詳しく知りたい場合は参考資料に挙げているページ様を参照してください。

 では、始めます。


1:Mosquittoのインストール
 Windowsの時と同じようにMosquittoをインストールします。

 LXTerminalを起動させて以下のコマンドを実行します。

sudo apt install -y mosquitto mosquitto-clients

 このコマンドでMQTTブローカーとクライアントをインストールしています。


2:MQTTのPub/Subを試す
 1のインストールが終わったら、LXTerminalを3つ立ち上げて以下のコマンドをそれぞれのウィンドウで実行します。

・ブローカー用ウィンドウ

sudo systemctl start mosquitto

・Subscriber用ウインドウ

mosquitto_sub -h localhost -t test

・Publisher用ウインドウ

mosquitto_pub -h localhost -t test -m "test message"

 ブローカーを起動させるコマンドは違いますが、Pub/SubのコマンドはWindowsと変わりません。
 上記を実際に実行すると、Subscriber用ウインドウでPublishされる度に「test message」と表示されます。

 ブローカーが動いているかどうかの確認は以下のコマンドで確認します。

sudo systemctl status mosquitto

 実際に実行して以下のように「Active: active (running)」の文字があれば起動しています。

$ sudo systemctl status mosquitto
● mosquitto.service - Mosquitto MQTT Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-04-02 13:32:25 JST; 16s ago

 また以下のコマンドでプロセスを確認してもブローカーが動いているかどうかの確認ができます。

ps aux | grep mosquitto

 実行した中に以下のようなプロセスがあれば、ブローカーが起動しています。

$ ps aux | grep mosquitto
mosquit+  2101  0.0  0.3  12136  6272 ?        Ss   16:05   0:00 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

 ブローカーを止めるコマンドは以下の通りです。

sudo systemctl stop mosquitto


3:別端末からのMQTT通信を許可する
 別端末からのMQTT通信を許可するには、Windowsの時と同じようにmosquitto.confファイルを編集します。

 なんのエディタでも良いですが、以下のようにmosquitto.confファイルを開きます(今回はnano)を使いました。

sudo nano /etc/mosquitto/mosquitto.conf

 ファイルの末尾に以下の2行を追記します。

listener 1883
allow_anonymous true

 実際に追記すると以下のようになります。

 追記後上書き保存をすれば設定は完了です。


4:別端末からのMQTT通信を試す
 この方法もWindowsと同じです。
 LXTerminalを3つ立ち上げて以下のコマンドをそれぞれのウィンドウで実行します。

・ブローカー用ウィンドウ

sudo systemctl start mosquitto

・Subscriber用ウインドウ

mosquitto_sub -h "192.168.0.1" -t test

・Publisher用ウインドウ

mosquitto_pub -h "192.168.0.1" -t test -m "test message"

 上記のようにホスト部分をRaspberry PiIPアドレスに書き換えれば別端末からのPub/Subの通信ができるようになります。


 以上がRaspberry PiでMQTTを使う方法になります。

 インストール方法やブローカーの起動、停止などの手順が違いましたが、それ以外はWindowsと変わらずに扱うことができます。
 実際問題としてこの方法の方が使う機会が多いと思いますし、また手順としても楽なので気軽にMQTTを試すことができると思います。


・参考資料