全部产品
Search
文档中心

IoT Platform:Verifikasi dan sambungkan perangkat

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menginisialisasi Link SDK untuk Python dan menyambungkan perangkat ke IoT Platform.

Informasi latar belakang

Link SDK untuk Python hanya mendukung verifikasi perangkat berdasarkan device certificate. Tabel berikut menjelaskan metode verifikasi.

Metode verifikasi

Metode pendaftaran

Deskripsi

Referensi

Verifikasi satu-sertifikat-per-perangkat

Tidak tersedia

Sertifikat perangkat yang mencakup ProductKey, DeviceName, dan DeviceSecret dibakar ke setiap perangkat.

Verifikasi satu-sertifikat-per-perangkat

Verifikasi satu-sertifikat-per-produk

Pendaftaran sebelumnya

  • Sertifikat produk yang mencakup ProductKey dan ProductSecret dibakar ke semua perangkat dari suatu produk.

  • Anda harus mengaktifkan fitur dynamic registration untuk produk tersebut.

  • Pendaftaran dinamis memungkinkan perangkat memperoleh DeviceSecret.

Verifikasi satu-sertifikat-per-produk

Catatan

Untuk informasi tentang perbedaan antara verifikasi satu-sertifikat-per-produk dengan pendaftaran sebelumnya dan verifikasi tanpa pendaftaran sebelumnya, lihat Perbedaan antara metode verifikasi.

Tanpa pendaftaran sebelumnya

  • Sertifikat produk yang mencakup ProductKey dan ProductSecret dibakar ke semua perangkat dari suatu produk.

  • Anda harus mengaktifkan fitur dynamic registration untuk produk tersebut.

  • Pendaftaran dinamis memungkinkan perangkat memperoleh kombinasi ClientID dan DeviceToken.

Kode contoh

  • Verifikasi Satu-Sertifikat-per-Perangkat

    from linkkit import linkkit
    lk = linkkit.LinkKit(
        host_name="NamaHostAnda",
        product_key="ProductKeyAnda",
        device_name="DeviceNameAnda",
        device_secret="DeviceSecretAnda")          
    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,
                cadata=None)

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Contoh

    Deskripsi

    host_name

    cn-shanghai

    ID wilayah tempat perangkat yang ingin Anda sambungkan ke IoT Platform berada.

    product_key

    a18wP******

    Sertifikat perangkat yang digunakan untuk verifikasi. Sertifikat disimpan di server lokal Anda setelah Anda menambahkan perangkat.

    Anda juga dapat melihat sertifikat perangkat di halaman Device Details di konsol IoT Platform. Untuk informasi lebih lanjut, lihat Memperoleh informasi verifikasi perangkat.

    device_name

    LightSwitch

    device_secret

    uwMTmVAMnGGHaAkqmeDY6cHxxB******

    endpoint

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

    Titik akhir instance IoT Platform.

    Parameter ini hanya diperlukan untuk instance Enterprise Edition dan instance publik versi baru.

    Catatan

    Jika Anda menggunakan instance Enterprise Edition atau instance publik versi baru, hapus tanda pagar (#) sebelum kode.

    port

    8883

    Nomor port.

    protocol

    MQTTv311

    Protokol yang digunakan untuk membangun koneksi antara perangkat dan IoT Platform.

    transport

    TCP

    Protokol Transmission Control Protocol (TCP).

    secure

    TLS

    Protokol Transport Layer Security (TLS).

    keep_alive

    60

    Periode keep-alive. Unit: detik. Nilai valid: 60 hingga 180. Jika IoT Platform tidak mendeteksi denyut jantung koneksi perangkat dalam periode keep-alive, IoT Platform menolak koneksi perangkat.

    Jika koneksi jaringan tidak stabil, kami sarankan Anda meningkatkan nilai parameter ini. Untuk informasi lebih lanjut, lihat Mekanisme keep-alive MQTT.

    clean_session

    True

    Menentukan apakah akan menerima pesan offline. Nilai valid:

    • True: Perangkat menerima pesan offline.

    • False: Perangkat tidak menerima pesan offline.

    auto_reconnect_min_sec

    1

    Interval minimum antara kegagalan koneksi dan rekoneksi. Unit: detik. Nilai valid: 1 hingga 1200.

    auto_reconnect_max_sec

    60

    Interval maksimum antara kegagalan koneksi dan rekoneksi. Unit: detik. Nilai valid: 1 hingga 1200.

  • Verifikasi Satu-Sertifikat-per-Produk dengan Pendaftaran Sebelumnya

    Catatan

    Untuk informasi lebih lanjut, lihat file dynamic_register.py dalam paket kode contoh.

    import time
    from linkkit import linkkit
    import logging
    
    # konfigurasi 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("registrasi dinamis perangkat berhasil, rc:%d, value:%s" % (rc, value))
            device_secret = value
        else:
            print("registrasi dinamis perangkat gagal,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()
    
    # Tunggu pesan downstream. Dalam banyak kasus, pesan downstream dikembalikan dalam waktu 1 detik.
    time.sleep(5)
    lk_auth.destroy()

    Jika Anda menentukan auth_type="register" untuk fungsi LinkKit, sistem menggunakan metode verifikasi satu-sertifikat-per-produk dengan pendaftaran sebelumnya untuk memverifikasi perangkat. Hasil verifikasi dikembalikan oleh fungsi callback on_device_dynamic_register. Jika nilai parameter rc adalah 0, perangkat lolos verifikasi satu-sertifikat-per-produk dengan pendaftaran sebelumnya. DeviceSecret yang diperoleh dari IoT Platform dikembalikan. Simpan DeviceSecret ke server lokal Anda. Anda dapat menggunakan DeviceSecret untuk menyambungkan perangkat Anda ke IoT Platform. Untuk informasi lebih lanjut, lihat Verifikasi Satu-Sertifikat-per-Perangkat.

    Jika Anda menentukan auth_type="", sistem menggunakan metode verifikasi deprecated yang hanya tersedia di wilayah China (Shanghai). Untuk informasi lebih lanjut, lihat file dynamic_register_deprecated.py.

  • Verifikasi Satu-Sertifikat-per-Produk tanpa Pendaftaran Sebelumnya

    Catatan
    • Anda dapat menggunakan Link SDK untuk Python untuk melakukan verifikasi satu-sertifikat-per-produk tanpa pendaftaran sebelumnya pada perangkat hanya di wilayah China (Beijing) dan China (Shanghai).

    • Untuk informasi lebih lanjut, lihat file dynamic_register_nwl.py dalam paket kode contoh.

    import time
    
    from linkkit import linkkit
    import logging
    
    
    # konfigurasi 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()
    # Tunggu pesan downstream. Dalam banyak kasus, pesan downstream dikembalikan dalam waktu 1 detik.
    time.sleep(5)
    lk_auth.destroy()

    Jika Anda menentukan auth_type="regnwl", sistem menggunakan metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran sebelumnya untuk memverifikasi perangkat. Jika nilai parameter rc adalah 0, perangkat lolos verifikasi satu-sertifikat-per-produk tanpa pendaftaran sebelumnya. username, ClientID, dan password yang diperoleh dari IoT Platform dikembalikan.

Fungsi callback

Setelah Anda menyambungkan perangkat ke IoT Platform, Anda dapat menggunakan fungsi callback on_connect untuk melihat status koneksi. Jika perangkat terputus, Anda dapat menulis logika pemrosesan dalam fungsi callback on_disconnect berdasarkan skenario bisnis Anda.

Catatan

Secara default, Link SDK untuk Python mendukung rekoneksi. Jika perangkat terputus karena ketidakstabilan jaringan atau pengecualian lainnya, perangkat secara otomatis memulai permintaan rekoneksi berdasarkan parameter yang dikonfigurasi, seperti parameter keep-alive.

Kode contoh:

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          

(Opsional) Konfigurasikan antarmuka koneksi jaringan

Jika sertifikat perangkat yang sama yang berisi ProductKey, DeviceName, dan DeviceSecret dibakar ke beberapa perangkat, IoT Platform menganggap perangkat-perangkat tersebut sebagai perangkat yang sama. Dalam hal ini, satu perangkat terputus ketika perangkat lainnya online. Anda dapat mengunggah informasi tentang antarmuka koneksi Anda ke IoT Platform untuk pemecahan masalah.

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

Tabel berikut menjelaskan antarmuka koneksi jaringan.

Tipe jaringan

Contoh

Deskripsi

WiFi

Eth|03ACDEFF0032|Eth|03ACDEFF0031

Jika perangkat Anda terhubung ke WiFi atau Ethernet melalui antarmuka jaringan upstream, atur tipe jaringan ke WiFi atau Eth dan tentukan alamat Media Access Control (MAC). Alamat MAC harus dalam huruf besar.

Ethernet (Eth)

Jaringan seluler (Cellular)

Cellular|imei_001122|iccid_22334455|imsi_234241|msisdn_53212

Jika perangkat Anda terhubung ke jaringan seluler, seperti 2G, 3G, atau 4G, melalui antarmuka jaringan upstream, atur tipe jaringan ke Cellular dan konfigurasikan parameter berikut:

  • IMEI

  • ICCID

  • IMSI

  • MSISDN

Membangun koneksi

Setelah Anda mengonfigurasi parameter untuk koneksi Message Queuing Telemetry Transport (MQTT), fungsi callback, dan antarmuka koneksi jaringan, panggil metode connect_async untuk memulai koneksi.

lk.connect_async()
Penting

Jika perangkat terputus karena ketidakstabilan jaringan atau pengecualian lainnya, perangkat secara otomatis memulai permintaan rekoneksi berdasarkan parameter yang dikonfigurasi, seperti parameter keep-alive. Anda hanya perlu memanggil metode ini sekali.