2016-10-22 1 views
-1

残念ながら私はこの種のトピックでの経験はほとんどありませんので、私はしばらくの間停止しています。センサーデータとコマンド送信のためのクライアント/サーバープロトコル

私の問題は非常に簡単です

、私はこのように動作しますシステムがあります。

  • クライアント装置と、両方のは、センサデータを読み込み、いくつかを制御します(今ラズベリーパイのために将来的には複数のデバイスを検討します)アクチュエータ。

  • サーバ(ここでは私のPC)は、このデータを精緻化し、遠隔のアクチュエータにコマンドを送信したいと思います(それは明らかに精緻化によって異なります)。

したがって、基本的に、私は必要なもの「n」のクライアントは、センサデータを特定のサーバアドレスに接続し、提供するすべての「X」分です。次に、特定のクライアントのアクチュエータに、クライアントがコマンドを聞く必要があると感じたときに、特定のコマンドを送信したり、サーバーからコマンドを定期的に取得したりする必要があります。

私は、利用可能なプロトコルとモジュールの種類が多岐にわたっています。特に私は非常に軽量なものを探しています(クライアントがたくさん接続している場合)、低レベルの実装は必要ありません(自分自身でソケットを扱い、独自のプロトコルを定義することを避けようとしています)。

追加情報:

  • MQTTが、「私が呼んでいるものにブローカーを入れなければならないだろうと私には思える: ただ、あなたにいくつかのコンテキストを与えるために、私が主に考えられていますサーバー "を作成してから、サーバーをサブスクリプション用のlocalhostブローカーに接続するクライアントとして使用してください...これは間違っています。つまり、ブローカーが問題になっているのですが、どうすれば解決できますか?
  • サーバーにデータを送信するためのREST get/post要求のあるFlaskのようなWebFrameworkは、重い解決策で、サーバーはクライアントにコマンドを送信する方法がありません。クライアントは定期的にチェックする必要があります。
+0

実際の質問は何ですか? – hardillb

+0

@hardillbタイトルを読んでください。大胆な部分は私が達成する必要があることを教えてくれます;) – Bertone

+0

あなたが尋ねたのは、主に意見に基づいたもので、どちらもStackのトピックではありませんオーバーフロー – hardillb

答えて

1

MQTT

MQTTが重く、この領域で開発されIOT(だけではなく)、用の軽量加入者/出版プロトコルです。

クライアントデバイスがRaspberry Pi(またはLinux OSを実行する他のデバイス)の場合は、おそらくMQTTを使用してください。ご使用のディストリビューションには、インストール後にすぐに使用できるMQTTブローカー(mosquitto)が用意されています。あなたは簡単にmosquitto-clientsのインストールをテストすることができます、それはmosquitto_submosquitto_pubコマンドラインAPIを提供します。

これにより、簡単に双方向の通信が可能になります。 MQTTは、さまざまなプラットフォーム(ベアメタルを含む)上のほとんどの言語(Python、C、C++、Perl、Javaなど、さまざまなプラットフォーム)でさまざまなクライアント・ライブラリを提供しているため、あらゆるシステムとうまく統合できます。

将来のクライアントデバイスが単純な場合は、MQTTのサポートがあるかどうかを調べる必要があります(チュートリアルがたくさんあります)。

MQTTブローカーを簡単に管理し、必要に応じてブリッジを使用してクラウドに配置したり、IPホスト名で個別に管理することができます。学ぶのはとても簡単で、使い方はとても楽しいです。

関連する問題