Paho MQTT のインストール

もうすこし細かくコントロールできるクライアントを作るべく、Pahoプロジェクトのクライアントをインストールすることにしました。
現状のテストデバイスは、シェルとmosquittoのクライアントで完成させるつもりですが、次はこちらに移行しようかとおもってます。
手順は、Pahoのページにも出ていますので、とても簡単。

インストールする前に、簡単にお勉強。

Phao Projectとは一体何者?
Paho project

The Paho project provides scalable open-source client implementations of open and standard messaging protocols aimed at new, existing, and emerging applications for Machine‑to‑Machine (M2M) and Internet of Things (IoT).

M2M、IoTへのアプリケーションに向けた、オープンで標準なメッセージングプロトコルの、スケーラブルでオープンソースのクライアント実装を提供するプロジェクトです。

ということで、たしかにすごい広範囲のクライアント環境を提供しています。

  • ##MQTT Clients

  • ###C/C++
    Posix C / Windows C
    embedded systems
    Posix C++ / Windows C++
    embedded MQTT-SN   (MQTT-SN って何??: このページの最後にメモ)

  • ###Java
    J2SE
    Android Service

  • ###JavaScript

  • ###Python

  • ###Go Client

  • ###C# .Net and WinRT

  • ###Utilities
    MQTT Conformance/Interoperability Testing

で、目的のPython向けのクライアントモジュールは、

Python support:

The Paho Python Client provides a client class with support for both MQTT v3.1 and v3.1.1 on Python 2.7 or 3.x.

ということで、2.7と3.xの両方をサポートしているようです。

ここまで確認した所で、インストールを始めました。

steps installing Paho-mqtt for Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
$ python --version
Python 2.7.3
$ sudo apt-get install python-pip
$ sudo pip install paho-mqtt
$ cat paho-mqtt-test.py
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
print("Connected with result code "+str(rc))
# Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
client.subscribe("$SYS/#")
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("iot.eclipse.org", 1883, 60)
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()
$ python ./paho-mqtt-test.py
Connected with result code 0
$SYS/broker/version mosquitto version 1.3.5
..
..
$SYS/broker/uptime 1258785 seconds
$SYS/broker/clients/total 2
$SYS/broker/clients/inactive 1
$SYS/broker/clients/active 1
$SYS/broker/clients/maximum 2
$SYS/broker/clients/expired 0
$SYS/broker/messages/stored 72
$SYS/broker/messages/received 80212
$SYS/broker/messages/sent 65057
$SYS/broker/subscriptions/count 2
$SYS/broker/retained messages/count 50
$SYS/broker/heap/current 12888
$SYS/broker/heap/maximum 23872
$SYS/broker/publish/messages/dropped 5069
$SYS/broker/publish/messages/received 20949
$SYS/broker/publish/messages/sent 5802
$SYS/broker/publish/bytes/received 598854
$SYS/broker/publish/bytes/sent 382692
$SYS/broker/bytes/received 2003874
$SYS/broker/bytes/sent 1025439
.....

となりました。
ここまで、10分かからず完了。

先人に感謝。引き続き、巨人の肩の上で仕事させてもらいます。


MQTT-SN

MQTT For Sensor Networks

だそうです。概略だけ、かいつまんでみると。

It is optimized for communications over networks where bandwidth is at a premium or where the network con-
nection could be intermittent. However MQTT requires an underlying network, such as TCP/IP, that provides
an ordered lossless connection capability and this is too complex for very simple, small footprint, and low-cost
devices such as wireless SAs.
The purpose of this document is to specify MQTT-SN, a pub/sub protocol for wireless sensor networks.
MQTT-SN can be considered as a version of MQTT which is adapted to the peculiarities of a wireless commu-
nication environment.

センサーネットワークのような、回線の費用がかかるような場所、しばしば回線が落ちるようなところに最適化されたMQTTプロトコルではありますが、小さなローコストのシンプルデバイスにとっては、複雑すぎるTCP/IPのようなロスレスのコネクションを基礎にしています。
このドキュメントはワイヤレスセンサネットワークのためのパブリッシュ・サブスクライブプロトコルであるMQTT-SNの仕様を規定します。MQTT-SNはワイヤレスコミュニケーション環境の特色に特化したMQTTのバージョンだと考えられます。