【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をインストールします。

[cc_bash]
$ pip install paho-mqtt
[/cc_bash]

 

mqttクライアントの実装

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

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

app.py

[cc_python]
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()

[/cc_python]

 

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

 

動作確認

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

 

まとめ

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

 

それでは!


Top