全部產品
Search
文件中心

IoT Platform:Python指令碼樣本

更新時間:Jun 30, 2024

本文介紹Python語言的自訂Topic訊息解析指令碼模板和樣本。

指令碼模板

SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update'  #自訂Topic:/user/update。
SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' #自訂Topic:/user/update/error。

# 將裝置自訂Topic訊息資料轉換為JSON格式資料,裝置上報資料到物聯網平台時調用。
# 入參: topic,字串,裝置上報訊息的Topic。   
# 入參: rawData,列表,列表元素取值為int類型,不可為空。
# 出參: jsonObj,字典。    
def transform_payload(topic, rawData):
   jsonObj = {}
   return jsonObj

指令碼樣本

說明 以下樣本指令碼僅用於解析自訂Topic訊息。如果產品的資料格式透傳/自訂,還需編寫物模型訊息解析指令碼。物模型訊息解析指令碼編寫指導,請參見提交物模型訊息解析指令碼

有關透傳/自訂說明,請參見建立產品

# coding=UTF-8
SELF_DEFINE_TOPIC_UPDATE_FLAG = '/user/update'  #自訂Topic:/user/update。
SELF_DEFINE_TOPIC_ERROR_FLAG = '/user/update/error' #自訂Topic:/user/update/error。

#  樣本資料:
#  自訂Topic:/user/update,上報資料。
#  輸入參數:
#     topic: /${productKey}/${deviceName}/user/update
#     bytes: 0x000000000100320100000000
#  輸出參數:
#  {
#     "prop_float": 0,
#     "prop_int16": 50,
#     "prop_bool": 1,
#     "topic": "/${productKey}/${deviceName}/user/update"
#   }
def transform_payload(topic, bytes):
    uint8Array = []
    for byteValue in bytes:
        uint8Array.append(byteValue & 0xff)

    jsonMap = {}
    if SELF_DEFINE_TOPIC_ERROR_FLAG in topic:
        jsonMap['topic'] = topic
        jsonMap['errorCode'] = bytes_to_int(uint8Array[0:1])

    elif SELF_DEFINE_TOPIC_UPDATE_FLAG in topic:
        jsonMap['topic'] = topic
        jsonMap['prop_int16'] = bytes_to_int(uint8Array[5:7])
        jsonMap['prop_bool'] = bytes_to_int(uint8Array[7: 8])
        jsonMap['prop_float'] = bytes_to_int(uint8Array[8:])

    return jsonMap

# byte數群組轉換為整型。
def bytes_to_int(bytes):
    data = ['%02X' % i for i in bytes]
    return int(''.join(data), 16)