すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:MQTT トピックを介した通信

最終更新日:Jun 11, 2026

Python Link SDK を使用して、MQTT を介して IoT Platform のトピックにサブスクライブし、メッセージをパブリッシュし、トピックからアンサブスクライブします。このトピックでは、各操作のリクエストと確認のフロー全体について説明します。

トピック形式

トピックは、デバイスと IoT Platform 間の通信チャネルです。デバイスはトピックを使用してメッセージを送受信します。

トピックでは、フォワードスラッシュ (/) を使用して階層を定義し、カテゴリを分離します。カスタムトピックの最初の 3 つのレベルは、あらかじめ定義されています:

レベル

説明

1

ProductKey

プロダクトの識別

2

${deviceName}

DeviceName のワイルドカード

3

user

カスタムトピックカテゴリの識別

詳細については、「トピックとは」をご参照ください。

クラウドからのメッセージの受信

トピックをサブスクライブするには、subscribe_topic() を呼び出します:

rc, mid = lk.subscribe_topic(topic, qos=1)         
説明

mqtt_sub_pub_on.py デモでは、lk.to_full_topic("user/test") を呼び出してトピック文字列を生成します。to_full_topic API は、指定した ProductKey と DeviceName を使用し、/YourProductKey/YourDeviceName/user/test と同等の文字列を返します。

サブスクリプション結果は、on_subscribe_topic コールバックで返されます:

lk.on_subscribe_topic = on_subscribe_topic
def on_subscribe_topic(mid, granted_qos, userdata):
    print("on_subscribe_topic mid:%d, granted_qos:%s" %
          (mid, str(','.join('%s' % it for it in granted_qos))))
    pass
            

granted_qos は、サブスクライブしたトピックに付与されたサービス品質 (QoS) レベルです:

意味

0 または 1

サブスクリプションは成功しました。

128

サブスクリプションは失敗しました。

クラウドからのメッセージの受信と処理

受信メッセージによって on_topic_message() コールバックがトリガーされます:

lk.on_topic_message = on_topic_message
def on_topic_message(topic, payload, qos, userdata):
    print("on_topic_message:" + topic + " payload:" + str(payload) + " qos:" + str(qos))
    pass
            

クラウドへのメッセージの送信

重要

Python Link SDK バージョン 1.0.0 から 1.2.11 では、デバイスが IoT Platform から切断された場合、publish API を呼び出すと、処理する必要がある例外がスローされます。バージョン 1.2.12 以降では、API は例外をスローする代わりに、ゼロ以外のエラー値を返します。

メッセージの送信

クラウドにメッセージを公開するには、publish_topic() を呼び出します:

rc, mid = lk.publish_topic(topic, payload)     

パブリッシュ結果の通知

on_publish_topic コールバックは、クラウドがメッセージを受信したかどうかを確認します:

lk.on_publish_topic = on_publish_topic
def on_publish_topic(mid, userdata):
    print("on_publish_topic mid:%d" % mid)
            

publish_topic から rc0 が返された場合、リクエストが送信バッファに書き込まれたことを意味します。その後、on_publish_topic コールバックが成功することで、パブリッシュの成功が確認されます。

トピックからのアンサブスクライブ

重要

Python Link SDK バージョン 1.0.0 から 1.2.11 では、デバイスが IoT Platform から切断された場合、unsubscribe API を呼び出すと、処理する必要がある例外がスローされます。バージョン 1.2.12 以降では、API は例外をスローする代わりに、ゼロ以外のエラー値を返します。

特定のトピックのサブスクライブを解除するには、unsubscribe_topic() を呼び出します:

rc, mid = lk.unsubscribe_topic(topic)           

サブスクライブ解除の結果は、on_unsubscribe_topic コールバックで返されます:

lk.on_unsubscribe_topic = on_unsubscribe_topic
def on_unsubscribe_topic(mid, userdata):
    print("on_unsubscribe_topic mid:%d" % mid)
    pass
            

unsubscribe_topic からの rc の値が 0 の場合、リクエストがキャッシュバッファーに書き込まれたことを意味します。それ以外の値は失敗を示します。その後、on_unsubscribe_topic コールバックが成功すると、サブスクライブ解除が成功したことが確認されます。