#author("2021-10-17T14:33:07+09:00","ocha","ocha")
#author("2021-12-14T00:56:50+09:00","ocha","ocha")
[[How2Homebridge]]

** MQTTとは [#m535f019]

MQTTはIoT機器のコントロールなどに必要な、少量のデータを効率よくやり取りするためのプロトコルです。
httpなどに比べて効率が良く、小さなコンピュータにも組み込みやすいです。

ここではMQTTを使うためにMosauittoをインストールします。
MosquittoはMQTTブローカー(=サーバー)です。それをテストするPublish/Subscribeコマンドも含まれてます。
MQTTの説明は以下などを見てください。

https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2017/01/mqtt_broker.png

https://www.advanet.co.jp/2020/10/14/mqtt-introduction/

Mosquittoは、Linux, macOS, Windowsなど各種が配布されています。

** MosquittoをRaspberry Piにインストールする [#g580c8aa]

Raspberry Pi OSでインストールする方法は以下で説明されています。

https://qiita.com/ekzemplaro/items/ab90dd630c3ad8e819ab

要するに、

 sudo apt install mosquitto mosquitto-clients

でインストールできて、

 sudo systemctl start mosquitto

でMQTTサーバをスタートできます。OS起動時に自動的に起動するように設定するためには、以下のようにします。

 sudo systemctl enable mosquitto.service

** MosquittoをmacOSにインストールする [#s64b1474]

MosquittoはmacOSやWindowsにもインストールできます。サーバとして立ち上げない場合でも、クライアントの機能が使えるのでインストールしておくと便利です。

ここではmacOSの場合を説明します。インストールには、Home Brewを使うのが簡単です。

https://brew.sh/index_ja

インストール方法はこちらにあります。

https://qiita.com/yohei1126/items/de355f540a83743213fb

要するに、

 brew install mosquitto

です。macOSでサーバを立ち上げないならば、これだけです。インストール後に、mosquitto_subとかmosquitto_pubとかタイプして動作を確かめてください。引数なしで起動すると、ヘルプが出ます。
また--versionでバージョンを確認できます。

 % mosquitto_pub --version
 mosquitto_pub version 2.0.10 running on libmosquitto 2.0.10.

** Mosquittoの動作確認 [#a3267f97]

動作を確認します。
ここでは、192.168.0.134のRaspberry PiでMosquittoサーバが動いていて、
Macからこれを利用します。
Macのターミナルを二つ開きます。

一つのターミナルから、topic名を決めて、メッセージをsubscribe(購読)します。
topicもmessageも任意です。
ここでは、switchというtopic名のメッセージを購読することにします。-vをつけるとメッセージだけでなくトピック名も表示してくれます。

 % mosquitto_sub -h 192.168.0.134 -t switch -v

購読してもメッセージが来ないと何も返事はないです。止めたい場合にはコントロールcで止めます。しばらく走らせておきます。

もう一つ、別のターミナルウィンドウから、switchというトピックでtrueを送ってみましょう(出版してみましょう)。

  % mosquitto_pub -h 192.168.0.134 -t switch -m true

次にfalseを送ってみます。

  % mosquitto_pub -h 192.168.0.134 -t switch -m false

受信用に走らせていた先程のターミナルウィンドウに、これらのメッセージが表示されるはずです。

 % mosquitto_sub -h 192.168.0.134 -t switch -v
 switch true
 switch false

これで動作確認できました。購読する際のトピック名を、全てに当てはめることもできます。これには#を使います。例えば、

 % mosquitto_sub -h 192.168.0.134 -t # -v  

とすれば、全てのメッセージを購読できます。

**他のマシンからのアクセス [#d685330e]

最近のmosquittoのバージョンからセキュリティのデフォルト設定が厳しめになったようです。

まずは、同じマシンからアクセスする場合(アドレスがlocalhostの場合)は、今まで通り、デフォルトの設定のままアクセス可能です。

 % mosquitto_sub -h localhost -t switch -v

他のマシンから(IPアドレスを指定して)アクセスする場合は、

 /etc/mosquitto/mosquitto.conf

に以下の設定が必要です。

 listener 1883

1883ポート(MQTTのデフォルト)をチェックしてくれるようになり、外部からのアクセスが可能になります。

この他のmoaquitto.confの説明は公式ページがわかりやすいです。

https://mosquitto.org/man/mosquitto-conf-5.html

**パスワードの設定 [#s6c0584c]

こちらに詳しく書いてありました。

https://qiita.com/ekzemplaro/items/77bfa6274cbddd4b5624


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS