私はコード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を使用して何か相当なことを行った人はいますか?
クライアントID「my-client」を何かランダムに変更して、既存のクライアントと衝突しないようにしてください。 – hardillb
接続は1つしかありません。メッセージはいくつか出力されますが、10秒以内に失敗します。オリジナルの投稿を変更しました。 –