読者です 読者をやめる 読者になる 読者になる

<IoT>-前回修正記事-mqttブローカーmosquittoを試してみた

voluntas (id:Voluntas)さんid:Hexaさんに前回の記事(http://xhatenen.hatenablog.com/entry/2014/12/14/232824)の課題点の解決をいただいたので、そちらの修正記事を書く。

ちなみに前回の課題点は、
 「MQTT3.1.1にしか対応していないクライアント(paho)とMQTT3.1.0にしか対応していないサーバー(mosquitto)の相性の問題」
ということだった。

これにいただいた解決策は以下の2つ
1.クライアントをMQTT3.1.0に対応したものを使う
2.サーバーをMQTT3.1.1に対応させる

以下にそれぞれの方法を書いていく
1.クライアントをMQTT3.1.0に対応したものを使う

mqttcliを導入する方法を今回いただいたので、そちらを試して見る
mqttcliのインストールにはgolang環境を構築する必要があるそうなので
まずはそちらから

golangは以下のURLに則って行った
golang環境設定 - Qiita
パスの設定も同じように

# go
export GOPATH=$HOME/gocode
export GOROOT=/usr/local/opt/go/libexec
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

とした。
ただ

go get github.com/shirou/mqttcli

とした場合に、mercurialが足りないと言われたので
mercurial のインストールを以下のURLに則って行った
Mac OS X Lion に最新の Mercurial をインストールする - Debian GNU/Linux 3.1 on PowerMac G4
これで再度

go get github.com/shirou/mqttcli

を行うとmqttcliが使えるようになった。

あとは
shirou/mqttcli · GitHub
に書いてある方法に則り、pubsubを動かす
まず、settingsのファイルを作る

settings.json

のようなjsonファイルを以下のように編集して作成した

{
  "host": "host",
  "port": 1883
}

そしてsub側を

mqttcli sub --conf settings.json  -t "some/topic"

pub側を

mqttcli pub --conf settings.json  -t "some/topic" -m "your message"

と行うことでできた。
mqtcliはコマンドでmqttのpubsubを操作をできる手軽さが素晴らしい...

2.サーバーをMQTT3.1.1に対応させる
つぎは、mosquittoをMQTT3.1.1に対応している
コメントにはいちどmosquittoをアンインストールしてと書いてあったけども
今回は新しい環境を用意した
あとは以下のURLに乗ってあるubuntuの方法にのっとった
Downloads | Mosquitto

手順は以下のとおり

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto

これで前回のpubsubを動かしたら正常に動いた!

これで問題は解決!