このエントリーをはてなブックマークに追加

sangoの使い方 - Python編

Pythonからsangoを使う方法について説明します。

Rubyでsangoを使うには以下の手順で行います。

  1. pipでライブラリをインストール
  2. クライアントの実装

確認した環境

  • python 2.7.8
  • paho-mqtt 1.0

1. pipでライブラリをインストール

pythonではpaho-mqttを使います。なお、mosquittoのライブラリもありますが、すでに開発が終了していますので、ご注意ください。

pip install paho-mqtt

2. クライアントの実装

mqtt.Client()でMQTTクライアントのインスタンスを作成し、connectを実行すれば接続します。デフォルトではMQTT 3.1で接続するようになっていますので、protocolという引数を与えて3.1.1で接続するようにします。

connect後はgetでSubscribeを行ったり、publishでPublishを行ったりできます。

Connect

Connect部分はPub/Subともに共通です。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import paho.mqtt.client as mqtt

MQTTHOST = "free.mqtt.shiguredo.jp"
USERNAME = "example@github"
PASSWORD = "password"

# 3.1.1用のClientを作成します
client = mqtt.Client(protocol=mqtt.MQTTv311)
# ユーザー名とパスワードを設定します
client.username_pw_set(USERNAME, PASSWORD)

# 接続します
client.connect(MQTTHOST)

Subscribe

TOPIC = "shirou@github/a/b"
# Subscribeします
client.subscribe(TOPIC)

# メッセージを待ち受けるループに入ります
client.loop_forever()

Publish

TOPIC = "shirou@github/a/b"
# Publishします
client.publish(TOPIC, "message from python")

# そのままだとすぐにプロセスが終了してしまいますので、Publishし終わるまで待ちます
import time
time.sleep(0.05)