日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于MQTT Topic通信

設備可使用物聯網平臺提供的Python Link SDK通過MQTT協議Topic與物聯網平臺進行通信。本文介紹設備如何直接基于MQTT Topic向物聯網平臺發送消息,以及接收物聯網平臺云端下發的消息。

背景信息

Topic是設備與物聯網平臺之間通信的管道,設備可通過Topic實現消息的發送和接收。

Topic格式必須以/進行分層,區分每個類目。自定義Topic的前三個類目已經規定好,第一個代表產品標識ProductKey,第二個${deviceName}通配DeviceName,第三個user用來標識產品的自定義Topic類。

更多有關Topic的信息,請參見什么是Topic

從云端接收消息

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

mqtt_sub_pub_on.py這個demo代碼示例中,我們通過lk.to_full_topic("user/test")快速生成一個topicto_full_topic是一個Topic自動生成接口,您在前面已經填入了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
            

granded_qos為訂閱Topic列表對應的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版本中,設備與物聯網平臺連接斷開后,如果繼續調用以下接口發送消息會拋出異常,需要您做好異常處理。在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 rc返回值為0則表明已經寫入到了發送緩沖區,回調on_publish_topic表明publish成功。

取消消息訂閱

重要

Python Link SDK的1.0.0至1.2.11版本中,設備與物聯網平臺連接斷開后,繼續調用以下接口取消消息訂閱會拋出異常,需要您做好異常處理。在1.2.12版本后,該API執行失敗后,會返回非零錯誤值,不再拋出異常。

通過調用unsubscribe_topic()取消對指定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返回值rc0表明請求已寫入緩存區,其它值失敗。當回調on_unsubscribe_topic時表明取消成功。