Pythonで接続する
Python 3を使用してブローカーに接続する
以下は、ブローカーでTOKEN認証モードが設定されたpaho.mqtt.python ↗パッケージを使用した例です。
以下の例では、シンプルなサブスクライバーを作成し、設定されたトピックにメッセージを送信し、メッセージが受信されるまで待機してから終了します。
例を実行する前に、以下の環境変数を設定してください:
BROKER_FQDN- 例:YOUR-BROKER.YOUR-NAMESPACE.cloudflarepubsub.com(ポートやmqtts://スキームなし)BROKER_TOKEN(有効な認証トークン)BROKER_TOPIC- 例:test/topicまたはhello/world
以下の例はPython 3.8を使用していますが、Python 3.6以上で実行可能です。
# paho-mqttがインストールされていることを確認してくださいpip3 install paho-mqtt次の内容でpubsub.pyというファイルを作成し、python3 pubsub.pyを使用して例を実行します:
# ライブラリをインストールするには:pip install paho-mqtt
import osimport paho.mqtt.client as mqttimport sys
# すべての環境変数が設定されていることを確認するdef check_env(env): if env is None: sys.exit("BROKER_FQDN、BROKER_TOKEN、およびBROKER_TOPICを設定する必要があります。") return env
# クライアントがサーバーからCONNACK応答を受信したときのコールバック。def on_connect(ctx, userdata, flags, rc, properties): print("接続しました: {}".format(ctx._host)) ctx.subscribe(topic) client.publish(topic, "PythonとPub/Subからのこんにちは!")
# サーバーからPUBLISHメッセージを受信したときのコールバック。def on_message(ctx, userdata, msg): print("{}: {}".format(msg.topic, msg.payload)) # さようなら client.disconnect()
# MQTTブローカーのFQDNを指定します:<broker name>.<namespace>.cloudflarepubsub.comfqdn = check_env(os.environ.get("BROKER_FQDN"))
# 任意のユーザー名と/brokers/YOUR_BROKER/credentialsエンドポイントからのトークン# トークンはPub/Sub APIによって発行されたbase64エンコードされたJWTである必要がありますusername = "anything"password = check_env(os.environ.get("BROKER_TOKEN")).strip("\"")
# 購読および発行するトピック名を指定しますtopic = check_env(os.environ.get("BROKER_TOPIC"))
# MQTTクライアントを作成しますclient = mqtt.Client(client_id="", protocol=mqtt.MQTTv5)
# ユーザー名とパスワードを設定しますclient.username_pw_set(username, password)
# TLSを有効にしますclient.tls_set()
# ブローカーに接続し、コールバック関数を登録しますclient.connect(fqdn, 8883)client.on_connect = on_connectclient.on_message = on_message
# メッセージを受信するまで待機しますclient.loop_forever()