2017-03-22 12 views
0

基本的に2つのラズベリーパイがあります。パイソンファイルに辞書から取得したデータを公開し、もう1つはこの辞書データを購読します。これは非常に穏やかな質問ですがお詫びしますが、私はこれに関するインターネット上の情報を見つけることができません。mqttブローカー経由で辞書からデータを送信する方法

答えて

0

MQTTの基本的なチュートリアルをまだ読んでいない場合は、読んでおくことをお勧めします。それはあなたのトピックとデータがどんなものであるべきかを決めるのに役立ちます。

ここでは、ご使用のケースを公開して購読する方法の例を示します。 パブリッシャーはディクショナリ内のキーを反復し、データをトピック "keys/$ key_name"にパブリッシュできます。メッセージはディクショナリ内のそのキーの値です。

サブスクライバはトピック「キー/#」をサブスクライブすることができます。このようにして、加入者はすべての鍵と対応するデータを取得し、辞書を再構成する。

辞書にあるデータの性質に応じて、さらに多くの方法でデータを公開できます。

+0

私はトピックが1つだけ必要だと思っています。辞書を繰り返し処理できるはずですが、私がブローカに反復した内容を公開するというコンテキストでは、どのように反復するのか分かりません。私は辞書をjsonに変換しようとしましたが、ブローカーはそれを受け取っていますが、データを読むために加入者がjsonをどのように分解していますか? –

+0

jsonから辞書を再構築する方法について、あなたの質問のようですが、mqttやpub-subに関係はありませんか?はいの場合は、次のような場合に役立ちます。 http://stackoverflow.com/questions/17496513/json-to-dictionary-in-javascript もしそうでない場合は、あなたの質問に詳しいことを教えてください。 –

+0

私の辞書は次のようにフォーマットされています。キーはdatetimeで、値はfloatです。しかし、mqttは、ペイロードは文字列、バイト配列、int、floatまたはNoneのみであることを指定します。ですから、私の辞書は基本的に互換性がなく、私のキーが日時オブジェクトであれば、私ができることに限られているでしょう。辞書を公開して公開する前に、その辞書を変更して互換性のあるデータ型に変換することをお勧めしますか?あなたはJSONに辞書の各エントリ({:「値 『タイムスタンプ』:」 "}のようなものを変換する場合は –

0

ホストAのpythonスクリプトからホストBのpythonスクリプトに直接辞書を送る場合は、方法があります。

  1. 辞書を文字列に変換します。
  2. 文字列をホストAからブローカへのペイロードとして送信します。
  3. ホストBを使用してブローカーに登録し、ペイロードを受信します。
  4. ast.literal_eval()で文字列を評価し、文字列を辞書に戻します。

この説明が不明な場合は、サンプルコードを投稿することができます。

おそらくJSONまたは複数のトピックを代わりに使用しますが、上記の手順が有効です。

関連する問題