【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をインストールします。
[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って聞いたことあるけど、実際どうやって実装するの?と思っていた方々の参考になれば幸いです。
それでは!
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
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
