shimashimaの日記: [Edison][IoT]Fuji on Intel Edison メッセージSubscribe編
前回Intel EdisonにMQTT GWのFujiをインストールしPublishするところまで行った。
ただ、この時Publishができたことを確認したのはMQTT BrokerであるSangoのダッシュボードでメッセージ数が増えていることのみだった。実際に意図したメッセージがPublishしていたのか、Topicは意図通りなのかは検証できていなかったので今回PublishしたメッセージをSubscribeしてみる。
1. MQTT Clientインストール
MQTT Clientであるmqttcliをインストールする。ダウンロードページより、自分のプラットフォームにあったバイナリをダウンロードする。
自分はWindows8.1Update上のCygwin(64bit版)で動かした。使ったバイナリはwindows_amd64だ。
基本的にバイナリのみで実行可能なので、インストール手順は特にない。
(ただし後述する設定は必要)
2. MQTT Clientの設定
mqttcliの設定ファイルを記述する。
setting.json という名前で、以下のような内容を記述する。
{
"host": "lite.mqtt.shiguredo.jp",
"port": 1883,
"username": "[sangoのユーザ名]",
"password": "[sangoのパスワード]"
}
hostは接続先ホストで、今回は前回の設定を踏襲するので時雨堂さんのSangoを利用する。ポート番号は1883で、自分のユーザ名/パスワードを記述する。これで設定は完了。
3. Fujiの設定変更
前回設定したFujiを若干変更する。
[broker "sango"]
topic_prefix = [sangoのユーザ名]
として、今まであった「/」のサフィクスを削除する。これがあることで、Publishする際に「/」が重複してしまうためだ。あとでマニュアルの訂正をPullReqしておこう。
4. Fujiの起動
前回と同じように、Edisonへログインして
> /usr/local/bin/fuji-gw -c /etc/fuji-gw/config.ini
で起動させる。
5. mqttcliでSubscribe
以下のコマンドを実行してMQTT Brokerへ接続し、FujiからPublishされたメッセージをSubscribeする。
> ./mqttcli sub --conf settings.json -t "[sangoのログイン名]/fuji/test/Dummy"
そうすると、10秒おきに
> Hello world.
がコンソールに出力されるはずだ、このメッセージはFujiで設定したダミーデバイスで生成された文字列で見事に読めている。
とりあえず、ここまででいったん完了。
6. 補足
MQTTのSubscribe時のTopic名が意図したものにならずに当初うまくいかなかったが、開発者の方とコンタクトが取れ理解できた。
Fujiのtopicはマニュアルにあるように
> [topic_prefix]/[Gateway-Name]/[Device-Name]/[Type-Name]
となる。この時、Device-Nameは「test/dummy」とあった場合「test」のみが使用される。これがわからず結構はまってしまった。
[Edison][IoT]Fuji on Intel Edison メッセージSubscribe編 More ログイン