1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MQTTを使ってみる

Posted at

MQTTを試す方法

  1. MQTTブローカーをInstallする。MosquittoからexeをInstall
  2. ブローカーの開始。"c:\Program Files\mosquitto\mosquitto.exe" -v
  3. PublishとSubscribeのコードを実行する
    以上。

コード

Publish用のコード

pub.py

import paho.mqtt.client as mqtt     # MQTTのライブラリをインポート
from time import sleep              # 3秒間のウェイトのために使う

# ブローカーに接続できたときの処理
def on_connect(client, userdata, flag, rc):
  print("Connected with result code " + str(rc))

# ブローカーが切断したときの処理
def on_disconnect(client, userdata, rc):
  if rc != 0:
     print("Unexpected disconnection.")

# publishが完了したときの処理
def on_publish(client, userdata, mid):
  print("publish: {0}".format(mid))

# メイン関数   この関数は末尾のif文から呼び出される
def main():
  client = mqtt.Client()                 # クラスのインスタンス(実体)の作成
  client.on_connect = on_connect         # 接続時のコールバック関数を登録
  client.on_disconnect = on_disconnect   # 切断時のコールバックを登録
  client.on_publish = on_publish         # メッセージ送信時のコールバック

  client.connect("localhost", 1883, 60)  # 接続先は自分自身
 
  # 通信処理スタート
  client.loop_start()    # subはloop_forever()だが,pubはloop_start()で起動だけさせる

  # 永久に繰り返す
  num = 0
  while True:
    client.publish("drone/001","Hello, Drone" + str(num))    # トピック名とメッセージを決めて送信
    sleep(3)   # 3秒待つ
    num+=1

if __name__ == '__main__':          
  main()  

image.png

Subsclibe用のコード

sub.py

import paho.mqtt.client as mqtt     # MQTTのライブラリをインポート
 
# ブローカーに接続できたときの処理
def on_connect(client, userdata, flag, rc):
  print("Connected with result code " + str(rc))  # 接続できた旨表示
  client.subscribe("drone/001")  # subするトピックを設定 

# ブローカーが切断したときの処理
def on_disconnect(client, userdata, rc):
  if  rc != 0:
    print("Unexpected disconnection.")

# メッセージが届いたときの処理
def on_message(client, userdata, msg):
  # msg.topicにトピック名が,msg.payloadに届いたデータ本体が入っている
  print("Received message '" + str(msg.payload) + "' on topic '" + msg.topic + "' with QoS " + str(msg.qos))

# MQTTの接続設定
client = mqtt.Client()                 # クラスのインスタンス(実体)の作成
client.on_connect = on_connect         # 接続時のコールバック関数を登録
client.on_disconnect = on_disconnect   # 切断時のコールバックを登録
client.on_message = on_message         # メッセージ到着時のコールバック
 
client.connect("localhost", 1883, 60)  # 接続先は自分自身
 
client.loop_forever()                  # 永久ループして待ち続ける

image.png

ブローカー上
image.png

参考

参考①
参考②

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?