🦟
Mosquittoの使い方メモ
DockerからMosquittoに接続する
普通のやり方
多かれ少なかれdockerを使ってる人はいると思うので念のためメモする。
~$ docker ps #起動+コンテナ名の確認
~$ docker exec -it <コンテナ名> bash
もしもbashが使えないときはshで接続し、aptでbashをインストールする。
~$ docker exec -it <コンテナ名> sh
~$ apt update
~$ apt install bash -y
Composeを使ったやり方
1.ファイルの準備
~$ mkdir mosquitto
~$ cd mosquitto
~$ mkdir config
~$ mkdir data
~$ mkdir log
最終的なファイル構成はこんな感じになっている。
mosquitto/
│── docker-compose.yml
│── config/
│ └── mosquitto.conf
│── data/ (データ保存用)
│── log/ (ログ保存用)
2.docker-compose.ymlを編集する
~$ nano docker-compose.yml
version: '3.8'
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto-mqtt
ports:
- "1883:1883" # MQTT 通信用ポート
volumes:
- ./config/mosquitto.conf:/mosquitto/config/mosquitto.conf
- ./data:/mosquitto/data
- ./log:/mosquitto/log
Websocketが使いたい人は9001を通信用ポートに追加する。
ネットワーク設定が必要なら各自でどうぞ
3.mosquitto.confの編集する
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
# MQTTのリスニングポート
listener 1883
allow_anonymous true
匿名ログインを許可しない場合はallow_anonymous false
にする
Websocketが使いたい人は以下も追加する
# WebSocketを有効化する場合
listener 9001
protocol websockets
4.コンテナを起動する
~$ cd mosquitto
~$ docker-compose up -d
Mosquittoに接続(購読)する
Mosquittoに接続するにはmosquitto_sub
を使う。
そのまま接続する
例:
~$ mosquitto_sub -h <接続先IPアドレス> -t <トピック名>
-
-h <接続先IPアドレス>
:ブローカーのアドレスを入れる -
-t <トピック名>
:トピック名を入れる 下に例あり
接続したいトピックがtest/topic
のときは、
例:
~$ mosquitto_sub -h <接続先IPアドレス> -t test/topic
ユーザー名とパスワードを使う
もちろんユーザー名、パスワードがともにあっていなければ使うことはできない。
例:
~$ mosquitto_sub -h <接続先IPアドレス> -t <トピック名> -u <ユーザー名> -P <パスワード>
-
-h <接続先IPアドレス>
:ブローカーのアドレスを入れる -
-t <トピック名>
:トピック名を入れる -
-u <ユーザー名>
:認証に使うユーザー名 -
-P <パスワード>
:認証に使うパスワード
-d(デバック)オプション
Mosquittoにはデバックオプションがあり、これを付け加えることによって、よりいろいろな情報を見ることができる。
例:
~$ mosquitto_sub -h <接続先IPアドレス> -t <トピック名> -d
-
-d
:デバック情報を表示する
Mosquittoに送信する
コマンドライン上でMosquittoにメッセージを送信することができる。
メッセージを送信するときはmosquitto_pub
を使う。
例:
~$ mosquitto_pub -h <接続先IPアドレス> -t <トピック名> -m "Hello world!"
-
-m "Hello world!"
:メッセージを"
で囲んでメッセージを入れる
もちろんユーザー名とパスワードも使える。
例:
~$ mosquitto_pub -h <接続先IPアドレス> -t <トピック名> -m "Hello world!" -u <ユーザー名> -P <パスワード>
パスワードの設定
Mosquittoでパスワードファイル(password_file
)が使われている場合はmosquitto.conf
を使うことで、パスワードが使える。
mosquittoの設定変更
~$ password_file /etc/mosquitto/passwd
これでMosquittoがファイルを参照して認証を行う。
パスワードファイルの作成・変更
~$ sudo mosquitto_passwd /etc/mosquitto/passwd <ユーザー名>
接続しているクライアントを確認する
ブローカーに接続しているクライアントはmosquitto_ctrl
で確認できる。
例:
~$ mosquitto_ctrl clients
Discussion