2023/03/21

MQTTの導入


背景


IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。

記事の目的


MQTT(mosquitto)をUbuntuに導入する

mosquitto


ここではmosquittoについて記載する。

MQTT

MQTT(Message Queueing Telemetry Transport)とは、マシン間の通信に使用される標準ベースのメッセージングプロトコル、または一連のルールを指す。スマートセンサー、ウェアラブル、および他のモノのインターネット (IoT) デバイスは通常、帯域幅が制限されたリソースに制約のあるネットワークを介してデータを送受信する必要がある。これらの IoT デバイスは、実装が簡単で、IoT データを効率的に通信できるため、MQTT を使用してデータを送信する。MQTT は、デバイスからクラウドへ、およびクラウドからデバイスへのメッセージングをサポートしている。

mosquitto

Eclipse Mosquittoは、MQTTプロトコルバージョン5.0、3.1.1、3.1を実装したオープンソース(EPL/EDLライセンス)メッセージブローカーである。Mosquittoは軽量で、低消費電力のシングルボードコンピュータからフルサーバーまで、あらゆるデバイスでの使用に適している。 MQTTプロトコルは、パブリッシュ/サブスクライブモデルを使用したメッセージングを実行する軽量な方法を提供している。このため、低消費電力のセンサーや電話などのモバイル機器、組み込みコンピュータ、マイクロコントローラなど、モノのインターネットを利用したメッセージングに適している。 Mosquittoプロジェクトは、MQTTクライアントを実装するためのCライブラリや、非常に人気のあるmosquitto_pubおよびmosquitto_subコマンドラインMQTTクライアントを提供している。

Ubuntuへの導入法

Ubuntuへのmosquitto導入方法について記載する。
  1. mosquittoのインストール
  2. aptを使用してインストールすることができる
  3. aptによるインストール
    1. apt install
      1. $ sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa
      2. $ sudo apt install mosquitto mosquitto-clients
    2. 設定
      1. $ sudo vim /etc/mosquitto/mosquitto.conf
      1. # Place your local configuration in /etc/mosquitto/conf.d/
      2. #
      3. # A full description of the configuration file is at
      4. # /usr/share/doc/mosquitto/examples/mosquitto.conf.example
      5.  
      6. pid_file /var/run/mosquitto.pid
      7.  
      8. persistence true
      9. persistence_location /var/lib/mosquitto/
      10.  
      11. # ログの出力先
      12. log_dest file /var/log/mosquitto/mosquitto.log
      13.  
      14. # 別の設定(port以下を書いたconfファイル)を下記フォルダに追加すると反映される
      15. include_dir /etc/mosquitto/conf.d
      16.  
      17. # mosquittoの接続先ポート
      18. port 8883
      19.  
      20. # SSL通信を使用する際に必要
      21. # CA証明書
      22. cafile /etc/mosquitto/certs/ca.crt
      23. # 秘密鍵
      24. keyfile /etc/mosquitto/certs/server.key
      25. # サーバ証明書
      26. certfile /etc/mosquitto/certs/server.crt
      27.  
      28. # 接続時にパスワードを設定する場合
      29. # ユーザー名を必須にする
      30. allow_anonymous false
      31. # パスワードの設定ファイル
      32. password_file /etc/mosquitto/password.txt
      SSLの証明書作成方法はMosquittoを用いてMQTT+SSL/TLS通信を試してみるを参照。
      パスワードの設定方法は、Mosquitto で Username と Password を使うを参照。
    3. サービスに登録
    4. サービス起動
      1. $ sudo systemctl start mosquitto
      起動状態確認 (起動失敗している場合は、confファイルを見直し)
      1. $ sudo systemctl status mosquitto
      自動起動に設定
      1. $ sudo systemctl enable mosquitto
  4. mosquitto-clientsで起動状況の確認
    • mosquitto_pubで送信する
      1. $ mosquitto_pub -d -t test/topic -m "Hello world!"
      トピック名の一番元に/(スラッシュ)は不要。
      -d はデーモンで起動。
    • mosquitto_subで受信する
      1. $ mosquitto_sub -d -t test/topic
      Hello world!が受信できる


まとめ


  • Ubuntuのmosquitto導入方法について調査、記載した

参考文献




変更履歴


  1. 2023/03/21: 新規作成

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...