Gunakan kit pengembangan perangkat lunak (SDK) Python Link untuk berlangganan topik, memublikasikan pesan, dan berhenti berlangganan dari topik di IoT Platform melalui MQTT. Topik ini mencakup alur lengkap permintaan dan konfirmasi untuk setiap operasi.
Format topik
Topik merupakan saluran komunikasi antara Perangkat dan IoT Platform. Perangkat menggunakan topik untuk mengirim dan menerima pesan.
Topik menggunakan garis miring maju (/) untuk menentukan hierarki dan memisahkan kategori. Tiga level pertama dari topik kustom telah ditetapkan sebelumnya:
|
Level |
Nilai |
Deskripsi |
|
1 |
ProductKey |
Mengidentifikasi Produk |
|
2 |
|
Wildcard untuk NamaPerangkat |
|
3 |
user |
Mengidentifikasi Kategori topik kustom |
Untuk informasi selengkapnya, lihat Apa itu topik?.
Menerima pesan dari cloud
Panggil subscribe_topic() untuk berlangganan topik:
rc, mid = lk.subscribe_topic(topic, qos=1)
Dalam demo mqtt_sub_pub_on.py, panggil lk.to_full_topic("user/test") untuk menghasilkan string topik. API to_full_topic menggunakan ProductKey dan NamaPerangkat yang Anda tentukan dan mengembalikan string yang setara dengan /YourProductKey/YourDeviceName/user/test.
Hasil langganan dikembalikan dalam callback 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 adalah tingkat Quality of Service (QoS) yang diberikan untuk topik yang dilanggani:
|
Nilai |
Makna |
|
|
Subscription berhasil. |
|
|
Subscription gagal. |
Menerima dan memproses pesan dari cloud
Pesan masuk memicu callback 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
Kirim pesan ke cloud
Pada versi Python Link SDK 1.0.0 hingga 1.2.11, jika Perangkat terputus dari IoT Platform, pemanggilan API publish akan melemparkan exception yang harus Anda tangani. Pada versi 1.2.12 dan seterusnya, API tersebut mengembalikan nilai error non-nol alih-alih melemparkan exception.
Kirim pesan
Panggil publish_topic() untuk memublikasikan pesan ke cloud:
rc, mid = lk.publish_topic(topic, payload)
Notifikasi hasil publikasi
Callback on_publish_topic mengonfirmasi apakah cloud telah menerima pesan tersebut:
lk.on_publish_topic = on_publish_topic
def on_publish_topic(mid, userdata):
print("on_publish_topic mid:%d" % mid)
Nilai rc sebesar 0 dari publish_topic berarti permintaan telah ditulis ke buffer pengiriman. Callback on_publish_topic yang berhasil kemudian mengonfirmasi bahwa publikasi berhasil.
Berhenti berlangganan dari topik
Pada versi Python Link SDK 1.0.0 hingga 1.2.11, jika Perangkat terputus dari IoT Platform, pemanggilan API unsubscribe akan melemparkan exception yang harus Anda tangani. Pada versi 1.2.12 dan seterusnya, API tersebut mengembalikan nilai error non-nol alih-alih melemparkan exception.
Panggil unsubscribe_topic() untuk berhenti berlangganan dari topik tertentu:
rc, mid = lk.unsubscribe_topic(topic)
Hasil unsubscribe dikembalikan dalam callback on_unsubscribe_topic:
lk.on_unsubscribe_topic = on_unsubscribe_topic
def on_unsubscribe_topic(mid, userdata):
print("on_unsubscribe_topic mid:%d" % mid)
pass
Nilai rc sebesar 0 dari unsubscribe_topic berarti permintaan telah ditulis ke buffer cache. Nilai lainnya menunjukkan kegagalan. Callback on_unsubscribe_topic yang berhasil kemudian mengonfirmasi bahwa proses unsubscribe berhasil.