2016-07-25 17 views
0
d = random,randint(1,30) 
    data = [d, strftime("%Y%m%d %H%M%S", gmtime())] #random num , system time 
    client.publish("gas", str(data)] 

これは私のpythonコードver2の一部です。 MQTTを使用してリストを送信しようとしています。 しかし、3行目のstrの代わりにbytearrayを書く場合 "ValueError:文字列はサイズ1でなければなりません"と書かれています。 だから私はstrを書いて、タイプを刺すようにしました 文字列タイプではない、ちょうどリストを送ることはできますか?MQTTを使用してリストを送信するには

答えて

0

MQTTメッセージのペイロードはバイト配列であり、固有の形式はありません。文字列は、トランザクションの両端が同じ文字エンコーディングを使用している限り機能します。

構造化されたデータ(ostなど)を送信する場合は、その構造をエンコードする方法を決定する必要があります。そのため、メッセージを受け取るコードはその構造を再構築する方法を知ります。

この問題の現在の通常の解決方法は、JSON構造をエンコードすることですが、XMLやprotobuffersのようなものも良い候補です。

次の質問は、

Serializing list to JSON

オブジェクトJSONにPythonのリストに変換するいくつかの例があります
関連する問題