【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.3

2019.11.20

MQTTをさわってみるよ

 

こんにちは、せんだです。

 

さて前回、前々回に引き続きMQTTを使ったアプリを作っていきたいと思います。

前回までの記事はこちら。

・【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.1

・【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.2

 

前回はVue.jsとvue-mqttを使ってMQTTのクライアントアプリを作りました。

今回も同じくクライアントアプリを作ってみたいと思いますが、今回はPythonとpaho-mqttというモジュールを使って作ってみたいと思います。

 

今回やること

  1. paho-mqttのインストール
  2. mqttクライアントの実装
  3. 動作確認

 

環境

端末:Mac Book Pro

python: 3.7.3

 

それでは早速やっていきましょう!

 

paho-mqttのインストール

まず最初にpipを使ってpaho-mqttをインストールします。

1
$ pip install paho-mqtt

 

mqttクライアントの実装

必要なモジュールをインストールしたところで、MQTTを使った実装を行います。

前回と同様、publishとsubscribeの両方について記述します。

app.py

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
import paho.mqtt.client as mqtt

topic = 'mqtt/test' #前回のjsと同じtopic名

def on_connect(client, userdata, flag, rc):
  print('connect!!')
  # メッセージのsubscribe処理
  client.subscribe(topic)

def on_disconnect(client, userdata, flag, rc):
  if  rc != 0:
    print('disconnect..')

def on_message(client, userdata, msg):
  print(msg.payload.decode())
  if msg.payload.decode() != 'Hello Python':
    pub_msg = 'Hello Python'
    # メッセージのpublish処理
    client.publish(topic, pub_msg)

def main():

  client = mqtt.Client(transport="websockets")
  client.username_pw_set('[Mosquittoに接続するユーザー]', password='[Mosquittoに接続するパスワード]')

  client.on_connect = on_connect
  client.on_disconnect = on_disconnect
  client.on_message = on_message

  try:
    client.connect('[接続先ホスト]', port=[接続先port], keepalive=60)

  except ConnectionRefusedError:
    print('ConnectionRefusedError')

  client.loop_forever()

if __name__ == '__main__':
  main()

 

はい、こんな感じになります。javascriptでの実装と同様、モジュールのおかげで割と簡単に書けます。
メッセージを受け取ると、「Hello Python」というメッセージをpublishするようにしています。

 

動作確認

前回作ったWebアプリとターミナルを使って動作確認してみましょう。テキストフィールドに適当な値を入力して送信すると、ターミナルには送信した文字列が、ブラウザには「Hello Python」と表示されると思います。これで確認完了です。

 

まとめ

いかがでしたか?3回に渡ってMQTTを使ったアプリの実装をしてきました。MQTTブローカーをMosquiitoで、クライアントをVue.js、pythonでそれぞれ実装してみて、MQTTアプリ開発の感覚は伝わったかなと思います。MQTTって聞いたことあるけど、実際どうやって実装するの?と思っていた方々の参考になれば幸いです。

 

それでは!


Top