LoginSignup
27
16

More than 1 year has passed since last update.

【MQTT】MQTTの導入 mosquittoのインストール/動作確認まで

Last updated at Posted at 2020-08-09

はじめに

非同期の双方向通信を使いたくて探していたらMQTTというものを見つけました。
Python, Javaで実装してみたのでそれぞれ記事を分けて紹介します。

  1. 【MQTT】コマンドベースでMQTTの導入(本記事)
  2. 【MQTT/Python】MQTTのPub/Subをするクラスを実装した(次回)
  3. 【MQTT/Java】MQTTのPub/Subをするクラスを実装した(次々回)

動作環境

  • Windows 10
  • Linux
    • Ubuntu 18.04 LTS
    • Rasbian buster

MQTT概要

ブローカーを経由してPublish,Subscribeしてデータのやり取りをする通信方法です。
ロボット用のソフトウェアであるROSと同じPub/Subの通信型ですね。(ROS2ではなくROS1の方です)
トピック名とブローカーのホスト名を指定して通信を行います。

このような図が説明としてよく用いられます。ブローカーを通じて双方向通信、一対多の通信ができることがわかります。


出典元:https://qiita.com/shohei1913/items/b355ad7d1bb27141176b

細かい説明は下記サイトなど参考にしてください。
ロボットエンジニアのためのMQTT (Message Queue Telemetry Transport) 入門
MQTTライブラリ Paho Python を理解しようとしてみる
JavaでMQTT入門 ローカル環境でPubSubの動作を検証してみる

必要ソフトのインストール

mosquitto(MQTTブローカー/クライアント)のインストール

まずはmosquittoと呼ばれるものをインストールしましょう。
Windowsの場合はインストーラーから、Linuxの場合はコマンドでインストールできます。

1. windowsの場合

以下のサイトの、「Binary Installation」⇒「Windows」のところから自身の環境に合わせてインストーラーをダウンロードしてください。
https://mosquitto.org/download/

image.png
(2022/11/19時点、2.0.15が最新のようです)

2. Linuxの場合

以下の2つのコマンドを実行してください。

# Mosquitto(Broker)をインストール
$ sudo apt-get install mosquitto

# Mosquittoクライアントをインストール
$ sudo apt-get install mosquitto-clients

クライアントライブラリのインストール

次回以降に使うPythonとJavaのクライアントライブラリのインストール方法も記載しておきます。

Python

ライブラリpahoのインストール

$ pip install paho-mqtt

Java

jarファイルを使用しました。
以下のリンクからorg.eclipse.paho.client.mqttv3_1.2.3.jarをダウンロードしてください。
https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/

起動

① broker(mosquitto)の起動

1. windowsの場合

コマンドプロンプト等を開いて、mosquittoがインストールされたディレクトリに移動します。
※環境変数に追加しておけばディレクトリの移動は必要ないです。

$ cd C:\Program Files (x86)\mosquitto

その後,、-vオプションをつけて起動します。

$ mosquitto -v

ポートが使用中などのエラーが出る際はwindowsのサービスとして既に起動している可能性があります。アプリの検索で「サービス」と検索して一覧から 「Mosquitto Broker」を探してください。以下のように実行中となっていれば大丈夫です。
image.png

ない場合はファイアウォール設定から1883ポートの設定を見直してください。
再起動後は上記のサービスに登録され、手動でmosquittoを起動することが不要な場合があります。

2. Linuxの場合

ブローカーの開始と確認、停止は以下のコマンドで行います。

# システムの起動
$ sudo systemctl start mosquitto
# システムの状態確認
$ sudo systemctl status mosquitto
# システムの終了
$ sudo systemctl stop mosquitto

② Publisher,Subscriberの起動

ここでは、ホスト名は localhost、トピック名はtestとします。
トピック名は自由ですが、送受信したい PublisherとSubscriberで合わせてください。

オプションの -hでホスト名、-tでトピック名を指定します。Publisherの場合、送信メッセージは-mで指定します。

※Windowsの場合はインストール先のディレクトリに移動するか、環境変数にインストール先のディレクトリを追加してください。
インストール先のディレクトリ:C:\Program Files (x86)\mosquitto(環境によります)

Subscriberの起動
# WindowsもLinux も同じコマンド
$ mosquitto_sub -h localhost -t test

次に,新しいコマンド画面を立ち上げて、

Publisherの起動
# WindowsもLinux も同じコマンド
$ mosquitto_pub -h localhost -t test -m "test message"

publishするときに指定したメッセージ内容(test message)がSubsciberの画面に出てくれば成功です。
今回は同一のPC内でしたが、brokerはホスト名を指定すればよいので外部のPCにつなぐこともできます。

おわりに

MQTTの導入を行いました。
次からは実際のプログラムで使っていこうと思います!
Pythonの例、Javaの例です。

27
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
16