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

<IoT>mqttブローカーmosquittoを試してみた

MQTT IoT

最近はやりのmosquitto( http://mosquitto.org/ ) を試してみた
のでその記録を...

大まかな手順

1.mosquittoサーバーを構築する
2.sub側の作成
3.publ側の作成

詳細手順

1.mosquittoサーバーを構築する

基本的に
Mosquitto(MQTT)を動かしてみた - 人と技術のマッシュアップ
に則ってAWS上に構築した
まず、AWSのEC2上にubuntuインスタンスを立ち上げる
ちなみにubuntu のときは若干terminalからのssh の接続方法が違うらしい気をつけて
ssh -i ***.pem ubuntu@***

ユーザー名がubuntuになる

ログイン後、次にmosquittoをインストール

$ sudo apt-get install mosquitto

このあと

$ mosquitto

とやるとmosquittogが立ち上がるらしいがデフォルトのポート1883がなぜか埋まっているらしい...ということで、ポートを変えて立ち上げた。

$ mosquitto -p 1884
1418563142: mosquitto version 0.15 (build date 2013-08-23 19:23:43+0000) starting
1418563142: Opening ipv4 listen socket on port 1884.
1418563142: Opening ipv6 listen socket on port 1884.

立ち上げるとメッセージが流れて止まる
注:これだけだと、サーバーの設定がsshしか受け付けないようになっていてアクセスできない状態だったことがあとで発覚、TCPで所定のポートをあけました...

2.sub側の作成

今回、sub側をraspberry piで作成してみた、下の手法に沿いながら
Mosquitto(MQTT)を動かしてみた - 人と技術のマッシュアップ

pythonのPahoクラインアントを使う為まずpipでインストールしようとしたがpip自体をインストールするところから始めた(下のページを参考にして)
Python - いつの間にかpipのインストールが楽になってた件 - Qiita

下のコマンドでpipをインストールした

curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

その後、

$ sudo pip install paho-mqtt

でpahoをインストール
MQTT subscribe
のsub.pyコードのHOSTNAMEだけ変えて実行
でもなぜか接続できない...

sub側の問題かと思い、他のサンプルコードを使ってみた
下のページのsub側のコードを参考にした
ニフティクラウド mobile backendへのアクセスをMQTT化する | BACKEND AS A SERVICE mbaas BLOG
でもできない。。。
ここでそもそもサーバーのセキュリティの問題じゃないかと気づき調べると
sshしか受け付けない状態になっていたw
これをTCPで1884のポートを開ける状態にすると。。。
ニフティクラウド mobile backendへのアクセスをMQTT化する | BACKEND AS A SERVICE mbaas BLOG
のコードでの接続はできた
しかし、sub.pyの方が接続できない。。。

1418563548: Invalid protocol "MQTT" in CONNECT from *******
1418563548: Socket read error on client (null), disconnecting.

上記のようなエラーが出る。。。

3.publ側の作成

こちらについては
両方とも試したが接続できない。。。なぜだ
MQTT subscribe
ではエラーすらでない
ニフティクラウド mobile backendへのアクセスをMQTT化する | BACKEND AS A SERVICE mbaas BLOG
では

1418567048: New client connected from ********* as *********
1418567048: Socket read error on client *********, disconnecting.

とエラーがでる何故だ!?