2017-10-13 20 views
0

私はコードMQTT Tcl APIの不具合?

source mqtt.tcl 

proc message_callback { topic message } { 
    puts stderr "message on topic $topic: $message" 
} 

set client [mqtt new] 
$client connect my-client $::addr 
$client subscribe {BCDS/#} message_callback 

vwait _done 

でシンプルな加入者のクライアントを実行するためにTcl MQTT APIを使用していますし、それが地元のブローカー、たとえばと正常に動作します。同じLAN上で動作するモスキート(少なくとも私がそれを走らせている間は何の問題も見つけられませんでした)。

しかし、インターネット上のブローカーでは、

message on topic BCDS/XDK/single/20:19:AB:F4:04:56/out/stream: 
{"sn":"20:19:AB:F4:04:56","data":{"acc": 
{"x":26,"y":32,"z":1012,"unit":"mG"},"gyro":{"x":1220,"y":-6835,"z":- 
2319,"unit":"mdeg/s"},"mag":{"x":40,"y":1,"z":-4,"unit":"uT"},"light": 
{"value":7466,"unit":"mLux"},"temp": 
{"value":50000,"unit":"mCelsius"},"pressure": 
{"value":98897,"unit":"Pascal"},"humidity":{"value":39,"unit":"%rh"}}} 
message on topic BCDS/XDK/single/20:19:AB:F4:04:53/out/stream: 
{"sn":"20:19:AB:F4:04:53","data":{"acc": 
{"x":26,"y":32,"z":1012,"unit":"mG"},"gyro":{"x":1220,"y":-6835,"z":- 
2319,"unit":"mdeg/s"},"mag":{"x":40,"y":1,"z":-4,"unit":"uT"},"light": 
{"value":13617,"unit":"mLux"},"temp": 
{"value":50000,"unit":"mCelsius"},"pressure": 
{"value":98897,"unit":"Pascal"},"humidity":{"value":39,"unit":"%rh"}}}2ú 
,BCDS/XDK/single/20:19:AB:F4:04:52 
/out/strea{"sn":"20:19:AB:F4:04:52","data":{"acc": 
{"x":26,"y":32,"z":1012,"unit":"mG"},"gyro":{"x":1220,"y":-6835,"z":- 
2319,"unit":"mdeg/s"},"mag":{"x":40,"y":1,"z":-4,"unit":"uT"},"light": 
{"value":7789,"unit":"mLux"},"temp":{"value":50000,"unit":"mCelsius"}, 

iot.eclipse.org、メッセージのカップルを印刷した後、それはスタックトレース

1507901608909 (::oo::Obj22_coro): can't read "msgid": no such variable 
while executing 
"dict set rc msgid $msgid" 
    (class "::mqtt" method "receive" line 35) 
    invoked from within 
"my receive" 
    (class "::mqtt" method "listen" line 27) 
    invoked from within 
"my listen" 

私のデバッグで10秒以内に失敗したが、このAPIは、接続を介して連結されたメッセージを処理しないことを示していますか?私は正しいですか?このAPIを使用して何か相当なことを行った人はいますか?

+0

クライアントID「my-client」を何かランダムに変更して、既存のクライアントと衝突しないようにしてください。 – hardillb

+0

接続は1つしかありません。メッセージはいくつか出力されますが、10秒以内に失敗します。オリジナルの投稿を変更しました。 –

答えて

0

これはバグかもしれません。これはバグを報告する良い方法ではありません。スタックオーバーフローはより一般的なサポートの質問です。

しかし、便利にはパッケージのFossilリポジトリにリンクするので、バグを報告する場所(Fossilはそれに似ています)です。 チケットNew ticketです。匿名でログインしてチケットを報告することができます(匿名であれば連絡先を残してください;必要に応じて連絡を取ることができます)。

+0

リンクを確認したら、私のチケットを見たことがあります。 –