mosqiitoでMQTT(AWS IoTに向けて)
AWS IoTにメッセージを送りたかったので、mosqiitoを使ってMQTTをPublishすることに。
mosqiitoはMQTTプロトコルのOSSで、homebrewから簡単に入る。
mosqiitoのインストール
brew install mosquitto
なんかmosquittoだけ"/usr/local/opt/mosquitto/sbin/mosquitto"に入ったので、
パスが通っているところにシンボリックリンクを貼って呼べるようにした。
動作確認
ターミナルを3つ立ち上げとく。
##ターミナル1で実行 #メッセージブローカー mosquitto ##ターミナル2で実行 #Subscribe mosquitto_sub -t test ##ターミナル3で実行 #Publish mosquitto_pub -t test -m "message"
上手くいくと、ターミナル3に"message"と表示されるはず。
-t はトピックの指定、 -m はメッセージの内容。
詳細は次。
Publish-Subscribe方式
下記サイトがわかりやすい(とはいえ、自分でやってみるまで分からなかったけど。。。)
Pub/Subメッセージングモデル
出版-購読型モデル - Wikipedia
Publisherからパブリッシュされたメッセージ("message")は、メッセージブローカーでトピック(test)に登録される。
Subscriberはメッセージブローカーからトピック(test)に登録されたメッセージ("message")をサブスクライブする。
起動時のエラー
なんかエラーが出た。
・・・ Opening ipv6 listen socket on port 1883. Error: Address already in use
下記サイト
Mosquito Error:Address already in use - Raspberry Pi Forums
でも説明があるが、前のmosquittoが立ち上がったまんまでポートを塞いでるっぽい。
よく分からないけど、とりあえずkillしとくと上手くいきました。
もともと、IoTというくらいなので、ラズパイとかでやるもんなのかと思ってたけど、
mosqiito入れるだけでMacでできて面白かった。
Pub/Sub方式はサイトを読んでるだけだとピンと来なかったので、
やっぱしプロトコルは使って覚えるべし、という感じでした。