【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.3
2019.11.20
こんにちは、せんだです。
さて前回、前々回に引き続きMQTTを使ったアプリを作っていきたいと思います。
前回までの記事はこちら。
・【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.1
・【Python + Vue.js + Mosquitto】MQTTをさわってみるよ Part.2
前回はVue.jsとvue-mqttを使ってMQTTのクライアントアプリを作りました。
今回も同じくクライアントアプリを作ってみたいと思いますが、今回はPythonとpaho-mqttというモジュールを使って作ってみたいと思います。
今回やること
- paho-mqttのインストール
- mqttクライアントの実装
- 動作確認
環境
端末: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って聞いたことあるけど、実際どうやって実装するの?と思っていた方々の参考になれば幸いです。
それでは!
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io