MQTTを試す方法
- MQTTブローカーをInstallする。MosquittoからexeをInstall
- ブローカーの開始。"c:\Program Files\mosquitto\mosquitto.exe" -v
- 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()
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() # 永久ループして待ち続ける