記事というか質問というか。
-
Tessel
Node.jsで開発できるマイコンボード http://tessel.io -
MQTT
M2MやIoT向けの軽量プロトコル。TCPレイヤーなのでWebsocketなどよりはだいぶ低レイヤー。 -
Sango
MQTTをBaaS的に使えるWebサービス
TesselでMQTTを使ってみた
春だ!IoTだ!sango経由でTesselとMQTTで通信だ!
この記事を参考にTesselをMQTTに接続してみました。
最初はうまくって言ってたんですけど...
Connection refused: Not authorized
っていうエラーに悩まされてました。
なんで繋がらないのか
events.js:85
throw er; // Unhandled 'error' event
^
Error: Connection refused: Not authorized
at MqttClient._handleConnack (/Users/sugawara_nobisuke/n0bisuke/lab/tessel-code/node_modules/mqtt/lib/client.js:524:9)
at Connection.<anonymous> (/Users/sugawara_nobisuke/n0bisuke/lab/tessel-code/node_modules/mqtt/lib/client.js:191:10)
at Connection.emit (events.js:107:17)
at Connection._write (/Users/sugawara_nobisuke/n0bisuke/lab/tessel-code/node_modules/mqtt/lib/connection.js:176:12)
at doWrite (_stream_writable.js:301:12)
at writeOrBuffer (_stream_writable.js:288:5)
at Connection.Writable.write (_stream_writable.js:217:11)
at Socket.ondata (_stream_readable.js:540:20)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
どうやら無料プランの同時コネクション数上限を超えてしまっていたみたい
Sangoのダッシュボードで確認すると上限の6コネクションになってました。
Tessel内のプロセスが生きてる?
Tesselでプログラムを動かしてないんだけど、6コネクションしていることになってました。
Node.jsから立ち上げた場合はMQTTのプロセスはNode.jsを落とせば消えるんですけど、
Tesselの場合は一度使ったコネクションが残り続けてしまっているみたいで、デバッグしてるとコネクション数が増え続けてました。
詳しくは理解していないのですが、Tesselは内部的にLuaを使っていたりとJavascriptのプロセスとはまた別の低レイヤーで動作しているのかもしれません汗
次の日に確認したらコネクション数はもとにもどってました。