いつもお世話になります。
複数の機器間で多対多で通信を行うシステムの通信プロコルについて、どのようなものがいいのか思案しています。
機器構成について
具体的な機器構成および環境は以下の通りです。
- 機器間はイーサネットで接続される
- 機器は複数あり、各々の機器同士で通信を行う
- 機器構成内に、通信を監視するサーバ的なものが1つ存在する
- 機器のスペックは機器により異なり、低いものはメモリの制約上C言語で組込む必要がある
これらを考慮して、通信プロトコルにはMQTT
を採用しようと考えています。
プロトコルはそれでいいとして、肝心の送受信するデータフォーマットはどのようなものが適切なのか悩んでいます。
送受信するデータについて
送受信するデータは、以下の通りです。
- 送信側:自身の機器の状態が変化した際、自身の状態を送信する(Publish)
- 受信側:送られてきた情報が自身にとって必要であれば、受信データを参照し、自身の動作意思決定に利用する(Subscribe)
自分としては、送受信するデータは、送信側でシリアライズして、受信側でデシリアライズするのがいいのかなと思っています。
本題
上記の機器構成および送受信するデータをシリアライズ/デシリアライズする場合、MQTTのデータフォーマットは一般的にどのように実現するのでしょうか。
自分なりに調べてみたところ、ProtocolBuffers
というものが探していたものに近いのかと思いました。が、C言語での構築例が検索してもあまり引っかからず、一般的ではないのかなぁと思いました。
そもそも、低スペック機器でのMQTTの使用方法が根本的に違うのでしょうか。(例えば独自プロトコルを生成し、バイナリデータでやりとりするとか)
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/30 11:12
2017/07/01 13:02