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

認(rèn)證與連接

本文介紹如何進(jìn)行Python Link SDK初始化,然后建立設(shè)備與物聯(lián)網(wǎng)平臺的連接。

背景信息

Python Link SDK僅支持設(shè)備密鑰方式,進(jìn)行設(shè)備身份認(rèn)證,具體包括以下幾種認(rèn)證方式。

認(rèn)證方式

注冊方式

說明

相關(guān)文檔

一機(jī)一密

不涉及

每臺設(shè)備燒錄自己的設(shè)備證書(ProductKey、DeviceName和DeviceSecret)。

一機(jī)一密

一型一密

預(yù)注冊

  • 同一產(chǎn)品下設(shè)備燒錄相同產(chǎn)品證書(ProductKey和ProductSecret)。

  • 產(chǎn)品需開啟動態(tài)注冊功能。

  • 設(shè)備通過動態(tài)注冊獲取DeviceSecret。

一型一密

說明

一型一密預(yù)注冊和免預(yù)注冊的區(qū)別,請參見預(yù)注冊和免預(yù)注冊的區(qū)別。

免預(yù)注冊

  • 同一產(chǎn)品下設(shè)備燒錄相同產(chǎn)品證書(ProductKey和ProductSecret)。

  • 產(chǎn)品需開啟動態(tài)注冊功能。

  • 設(shè)備通過動態(tài)注冊獲取ClientID與DeviceToken的組合。

使用限制

  • 對于物聯(lián)網(wǎng)平臺提供的Python Link SDK,默認(rèn)設(shè)備采用TLS方式與物聯(lián)網(wǎng)平臺建連,使用TLS認(rèn)證連接時,不支持使用IP接入。

  • 如果您是物聯(lián)網(wǎng)卡定向流量卡用戶,且運營商不支持配置域名時,可以為接入域名綁定固定IP。具體操作,請參見為接入域名綁定固定IP

示例代碼

  • 一機(jī)一密

    from linkkit import linkkit
    lk = linkkit.LinkKit(
        host_name="YourHostName",
        product_key="YourProductKey",
        device_name="YourDeviceName",
        device_secret="YourDeviceSecret")          
    lk.config_mqtt(endpoint="{Your Mqtt Host Url}")
    lk.config_mqtt(port=8883, protocol="MQTTv311", transport="TCP",
                secure="TLS", keep_alive=60, clean_session=True,
                max_inflight_message=20, max_queued_message=0,
                auto_reconnect_min_sec=1,
                auto_reconnect_max_sec=60,
                check_hostname=True,   
                cadata=None)

    參數(shù)說明:

    參數(shù)

    示例

    說明

    host_name

    cn-shanghai

    設(shè)備接入的地域ID。

    product_key

    a18wP******

    設(shè)備認(rèn)證信息。即完成添加設(shè)備后,您保存至本地的設(shè)備證書。

    您也可以在物聯(lián)網(wǎng)平臺的設(shè)備詳情頁查看設(shè)備的認(rèn)證信息。更多信息,請參見獲取設(shè)備認(rèn)證信息。

    device_name

    LightSwitch

    device_secret

    uwMTmVAMnGGHaAkqmeDY6cHxxB******

    endpoint

    iot-cn-6ja******.mqtt.iothub.aliyuncs.com

    接入域名。

    您可在物聯(lián)網(wǎng)平臺控制臺的實例詳情頁面,單擊查看開發(fā)配置,獲取設(shè)備接入域名。具體內(nèi)容,請參見查看和配置實例終端節(jié)點信息(Endpoint)。

    port

    8883

    端口號。

    protocol

    MQTTv311

    設(shè)備與物聯(lián)網(wǎng)平臺建立連接的協(xié)議。

    transport

    TCP

    傳輸控制協(xié)議。

    secure

    TLS

    安全傳輸層協(xié)議。

    keep_alive

    60

    ?;顣r間,單位秒,取值范圍為60~180。當(dāng)設(shè)備的心跳時間不在?;顣r間內(nèi),物聯(lián)網(wǎng)平臺將拒絕設(shè)備的連接請求。

    如果網(wǎng)絡(luò)不穩(wěn)定,建議增大該參數(shù)的值。更多信息,請參見MQTT?;?/a>。

    clean_session

    True

    設(shè)置是否接收離線消息。取值為:

    • True:是

    • False:否

    auto_reconnect_min_sec

    1

    設(shè)置重連的最小間隔時間,單位為秒,取值范圍為1~1,200。

    auto_reconnect_max_sec

    60

    設(shè)置重連的最大間隔時間,單位為秒,取值范圍為1~1,200。

    check_hostname

    True

    在MQTT建連時,設(shè)置TLS握手時是否需要校驗域名,默認(rèn)為True,表示需要校驗。

    如果endpoint輸入的是IP地址,請將check_hostname設(shè)置為False。

  • 一型一密預(yù)注冊

    說明

    更多代碼信息,請參見exmaple示例代碼中的dynamic_register.py文件。

    import time
    from linkkit import linkkit
    import logging
    
    # config log
    __log_format = '%(asctime)s-%(process)d-%(thread)d - %(name)s:%(module)s:%(funcName)s - %(levelname)s - %(message)s'
    logging.basicConfig(format=__log_format)
    
    product_key = "${YourProductKey}"
    device_name = "${YourDeviceName}"
    product_secret = "${YourProductSecret}"
    instance_id = "${YourInstanceId}"
    device_secret = ""
    
    lk_auth = linkkit.LinkKit(
        host_name="cn-shanghai",
        product_key=product_key,
        device_name=device_name,
        device_secret="",
        auth_type="register",
        instance_id=instance_id,
        product_secret=product_secret)
    
    
    def on_device_dynamic_register(rc, value, userdata):
        if rc == 0:
            global device_secret
            print("dynamic register device success, rc:%d, value:%s" % (rc, value))
            device_secret = value
        else:
            print("dynamic register device fail,rc:%d, value:%s" % (rc, value))
    
    
    lk_auth.enable_logger(logging.DEBUG)
    lk_auth.on_device_dynamic_register = on_device_dynamic_register
    lk_auth.connect_async()
    
    # 等待下行報文,一般1s內(nèi)就能返回
    time.sleep(5)
    lk_auth.destroy()

    LinkKit構(gòu)造參數(shù)中傳入auth_type="register",表示一型一密預(yù)注冊,結(jié)果在回調(diào)on_device_dynamic_register中透出。當(dāng)rc值為0時,表示一型一密動態(tài)注冊成功。返回的值為從物聯(lián)網(wǎng)平臺獲取的設(shè)備的DeviceSecret。您需將該參數(shù)的值儲存至本地,待設(shè)備接入時使用。具體操作,請參見一機(jī)一密。

    如果auth_type="",則表示一種deprecated的一型一密注冊方式,僅在華東2(上海)地域支持。更多信息,請參見dynamic_register_deprecated.py文件。

  • 一型一密免預(yù)注冊

    說明
    • Python Link SDK僅支持地域為華東2(上海)、華北2(北京)的設(shè)備進(jìn)行一型一密免預(yù)注冊的認(rèn)證方式。

    • 更多代碼信息,請參見exmaple示例代碼中的dynamic_register_nwl.py文件。

    import time
    
    from linkkit import linkkit
    import logging
    
    
    # config log
    __log_format = '%(asctime)s-%(process)d-%(thread)d - %(name)s:%(module)s:%(funcName)s - %(levelname)s - %(message)s'
    logging.basicConfig(format=__log_format)
    
    
    product_key = "${YourProductKey}"
    device_name = "${YourDeviceName}"
    product_secret = "${YourProductSecret}"
    instance_id = "${YourInstanceId}"
    
    
    lk_auth = linkkit.LinkKit(
        host_name="cn-shanghai",
        product_key=product_key,
        product_secret=product_secret,
        device_name=device_name,
        device_secret="",
        instance_id=instance_id,
        auth_type="regnwl")
    
    
    def on_device_dynamic_register_nwl_reply(code, client_id_l, user_name_l, password_l):
        print("code:", code)
        if 0 == code:
            print("cid:", client_id_l)
            print("user_name:", user_name_l)
            print("password:", password_l)
    
    
    lk_auth.enable_logger(logging.DEBUG)
    lk_auth.on_device_dynamic_register_nwl_reply = on_device_dynamic_register_nwl_reply
    lk_auth.connect_async()
    # 等待下行報文,一般1s內(nèi)就能返回
    time.sleep(5)
    lk_auth.destroy()

    auth_type="regnwl"表示一型一密免預(yù)注冊。當(dāng)rc值為0時,表示一型一密免預(yù)注冊動態(tài)注冊成功。返回的值為從物聯(lián)網(wǎng)平臺獲取的設(shè)備的username、clientId、password

回調(diào)函數(shù)

設(shè)備與物聯(lián)網(wǎng)平臺建立連接后,您可通過on_connect回調(diào)函數(shù)了解連接結(jié)果。連接成功后,如果連接斷開,您可通過on_disconnect回調(diào)函數(shù),編寫業(yè)務(wù)場景所需的處理邏輯。

說明

Python Link SDK默認(rèn)支持重連。當(dāng)設(shè)備連接成功后,如果設(shè)備由于網(wǎng)絡(luò)等原因斷開連接,設(shè)備會根據(jù)配置的?;畹葏?shù),自動發(fā)起重新連接的請求。

示例代碼如下:

def on_connect(session_flag, rc, userdata):
    print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
    pass
def on_disconnect(rc, userdata):
    print("on_disconnect:rc:%d,userdata:" % rc)
lk.on_connect = on_connect
lk.on_disconnect = on_disconnect          

(可選)配置網(wǎng)絡(luò)接口信息

如果產(chǎn)品生產(chǎn)時,錯誤地將設(shè)備認(rèn)證信息燒寫至多個設(shè)備,多個設(shè)備將會被物聯(lián)網(wǎng)平臺認(rèn)為是同一個設(shè)備,從而出現(xiàn)一個設(shè)備上線將另外一個設(shè)備的連接斷開的情況。您可以將自己的接口信息上傳至物聯(lián)網(wǎng)平臺,物聯(lián)網(wǎng)平臺可以通過該接口的信息定位問題。

lk.config_device_info("Eth|03ACDEFF0032|Eth|03ACDEFF0031")

其中接口可取值:

網(wǎng)絡(luò)類型

示例值

說明

WiFi

Eth|03ACDEFF0032|Eth|03ACDEFF0031

如果設(shè)備的上行網(wǎng)絡(luò)接口是WiFi或者Eth(以太網(wǎng)),那么接口需包含MAC地址,MAC地址的格式為全大寫。

Eth(以太網(wǎng))

Cellular(蜂窩網(wǎng))

Cellular|imei_001122|iccid_22334455|imsi_234241|msisdn_53212

如果是Cellular(即2G、3G、4G蜂窩網(wǎng)接口),那么需要填入的接口數(shù)據(jù)為:

  • IMEI

  • ICCID

  • IMSI

  • MSISDN

啟動連接

在MQTT連接參數(shù)配置、回調(diào)函數(shù)設(shè)置、網(wǎng)絡(luò)接口信息等操作完成后,您需調(diào)用connect_async發(fā)起連接。

lk.connect_async()
重要

當(dāng)設(shè)備連接成功后,如果設(shè)備由于網(wǎng)絡(luò)等原因斷開連接,設(shè)備會根據(jù)配置的?;畹葏?shù),自動發(fā)起重新連接的請求。因此,您無需再次調(diào)用該接口。