LoginSignup
0
2

More than 5 years have passed since last update.

MQTTブローカ「mosquitto」をpythonで使ってみる

Posted at

参考サイト

使用するもの

ubuntuプロンプト・・・ブローカ用
anacondaプロンプト二つ・・・pub用、sub用

anacondaにpahoクライアントをインストール

anacondaPromptにて

pipコマンドインストール

 sudo apt install python-pip

paho-mqttインストール

pip install paho-mqtt

をする。

ubuntuのコマンドプロンプトでmosquittoブローカを起動

これだけで起動できる。
~~~
mosquitto
~~~

pub.py,sub.pyを作成する。

pub.py

from time import sleep
import paho.mqtt.client as mqtt

host = '127.0.0.1'
port = 1883
topic = 'iktakahiro/a'

# インスタンス作成時に protocol v3.1.1 を指定します
client = mqtt.Client(protocol=mqtt.MQTTv311)

client.connect(host, port=port, keepalive=60)

for i in range(3):
    client.publish(topic, 'ham')
    sleep(0.2)

client.disconnect()

sub.py

import paho.mqtt.client as mqtt

host = '127.0.0.1'
port = 1883
topic = 'iktakahiro/a'

def on_connect(client, userdata, flags, respons_code):
    print('status {0}'.format(respons_code))

    client.subscribe(topic)

def on_message(client, userdata, msg):
    print(msg.topic + ' ' + str(msg.payload))

if __name__ == '__main__':

    # Publisherと同様に v3.1.1を利用
    client = mqtt.Client(protocol=mqtt.MQTTv311)

    client.on_connect = on_connect
    client.on_message = on_message

    client.connect(host, port=port, keepalive=60)

    # 待ち受け状態にする
    client.loop_forever()

メモ帳で作成する場合、utf-8に設定しないとエラーが発生するので注意。
pythonエディタで作りましょう。

起動を確認する。

anacondapromptで二つのファイルがあるディレクトリに移動し、
一方で、

python sub.py

もう一方で

python pub.py

subscliberの画面に

status 0
iktakahiro/a b'ham'
iktakahiro/a b'ham'
iktakahiro/a b'ham'

となれば成功。
pythonファイルをいじればもっと多くのことができそう。

以上。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2