#author("2021-10-15T15:51:50+09:00","ocha","ocha") [[How2Homebridge]] ** MQTTとは [#m535f019] MQTTはIoT機器のコントロールなどに必要な、少量のデータを効率よくやり取りするためのプロトコルです。 httpなどに比べて効率が良く、小さなコンピュータにも組み込みやすいです。 ここではMQTTを使うためにMosauittoをインストールします。 MosquittoはMQTTブローカー(=サーバー)です。それをテストするPublish/Subscribeコマンドも含まれてます。 MQTTの説明は以下などを見てください。 https://s3-ap-northeast-1.amazonaws.com/amg-s3-01/wp-content/uploads/2018/11/24144017/mqtt_pubsub.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 sudo apt install mosquitto-clients でインストールできて、 sudo systemctl start mosquitto でMQTTサーバをスタートできます。 ** 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 とすれば、全てのメッセージを購読できます。