2016/10/06

MQTT

MQTTなんて知らなくても生きていけるわい、と思っていたが、生きていけなくなりそうなので調べている。
ふっ、人間の主義主張なんて、生活環境によってすぐ変わるものよ。。。

 

幸い、日本語の資料も多い。
プロトコルについては、IBMのページが一番わかりやすいと思った。
MQ Telemetry Transport (MQTT) V3.1 プロトコル仕様

正確には、ここのリンク先にある日本語のPDFだ。
PDFを見るのが面倒であれば、英語版のページもよいと思う。
そこまで面倒な仕様ではなさそうだ。

 

あまり納得がいかないのが、ヘッダが2種類あること。
全体としては「ヘッダ」と「ペイロード」なのだけど、固定ヘッダ(fixed header)と可変ヘッダ(variable header)があるのだ。
「固定ヘッダ」と「ペイロード」にして、ペイロードの中で小分けすればいいやん、と思うのだ。

だって、固定ヘッダに載っているデータ長も「可変ヘッダ+ペイロード」だし、可変ヘッダのサイズだけを取得できるわけでもないのだ。
可変ヘッダとペイロードの境目があいまいすぎる気がする。

それに、ペイロードを持っているコマンドは限られているのだ。
CONNECT, SUBSCRIBE, SUBACKだけらしい。
いやいや、PUBLISHがあるじゃないかと思うのだが、アプリケーション固有のデータのみだからという理由なのか、ペイロードじゃなくてBLOB、と言ってる。
うーん。。。へりくつのような。。。

 

わかりやすい、とさっきは書いたが、一般的な技術ドキュメントと比較するとわかりづらい部類だ。
実例が多いのはよいのだけど、フラグとビットの割り当てが書かれていなかったり、例だけしかなくて各項目の詳細説明がなかったりする。

プロトコルを把握する必要があまりないのかもしれないが、これがわからないとバイナリの解析ができないのだ。


MQTTって何?というのは、こちらがわかりやすい。
さすがGoogle検索で一番上にあるだけのことはあるな。
MQTT as a Service sango

publishとかsubscribeとかいう単語があるので、新聞のしくみと似ているのかもしれない。

新聞の編集・出版を行っているのが「broker」で、記事を書く人はタイトルを付けて文章を書き、brokerに「○○新聞の△△記事の1つとして配信して!」とpublish依頼する。

記事を読みたい人は、brokerに「○○新聞の△△記事を配っておくれ」と依頼したり、「○○新聞を配っておくれ」と依頼したりできる。

「○○新聞の△△記事」のようなのは、ディレクトリ構造のような指定の仕方になっている。
ワイルドカードも使えるので、あるディレクトリに引っかかったものは配信してほしい、というようなことができるのだ。

 

まあ、私が書くよりも、リンク先を見てもらった方が良かろう。

テストする場合だが、broker=MQTTサーバは誰かが作ってくれているとして、publishしたりsubscribeしてもらったりするMQTTクライアントをどうするか。
私は、Androidのアプリを使っている。
Windowsでツールがあったのだけど、Windows10で動かしているせいか動作が安定しないのだ。
ただ、WireSharkでパケットを見ることができるので、バイナリデータを確認するのに向いている。
明日はM2Mqtt Spyを試してみよう。
M2Mqtt Spy – Microsoft ストアの Windows アプリ

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。