全部产品
Search
文档中心

IoT Platform:Gunakan fitur dasar

更新时间:Jul 02, 2025

Anda dapat menggunakan layanan penghubung yang disediakan oleh IoT as Bridge SDK untuk menghubungkan perangkat ke IoT Platform dan memungkinkan komunikasi antara perangkat dan IoT Platform. Topik ini menjelaskan cara mengonfigurasi IoT as Bridge SDK untuk menggunakan fitur dasar seperti koneksi dan pemutusan perangkat, serta transmisi pesan upstream dan downstream.

Memperoleh IoT as Bridge SDK

IoT Platform menyediakan demo IoT as Bridge SDK. Untuk informasi lebih lanjut, kunjungi alibabacloud-iot-bridge-core-demo.

Diagram Alir

Gambar berikut menunjukkan diagram alir untuk menghubungkan perangkat ke IoT Platform dengan menggunakan IoT as Bridge SDK.

网桥

Mengatur lingkungan pengembangan

Siapkan lingkungan pengembangan Java dan tambahkan dependensi berikut ke proyek Maven Anda untuk mengimpor IoT as Bridge SDK:

<dependency>
  <groupId>com.aliyun.openservices</groupId>
  <artifactId>iot-as-bridge-sdk-core</artifactId>
  <version>2.4.1</version>
</dependency>

Inisialisasi

Inisialisasi SDK

Buat objek BridgeBootstrap dan panggil metode bootstrap(). Metode ini mendaftarkan callback DownlinkChannelHandler dengan IoT as Bridge SDK untuk menerima pesan downstream dari IoT Platform.

Setelah IoT as Bridge SDK diinisialisasi, SDK membaca informasi jembatan dan mengirimkan permintaan koneksi ke IoT Platform untuk jembatan tersebut.

Contoh kode:

BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
bridgeBootstrap.bootstrap(new DownlinkChannelHandler() {
    @Override
    public boolean pushToDevice(Session session, String topic, byte[] payload) {
        // Menerima pesan downstream dari IoT Platform.
        String content = new String(bytes);
        log.info("Mendapatkan pesan DownLink, session:{}, {}, {}", session, topic, content);
        return true;
    }

    @Override
    public boolean broadcast(String topic, byte[] payload) {
        return false;
    }
});

Konfigurasi jembatan

  • Secara default, jembatan dikonfigurasi menggunakan file konfigurasi application.conf di direktori src/main/resources/ proyek Java. Format file adalah HOCON, yang merupakan superset JSON.

    IoT as Bridge SDK membaca file konfigurasi berdasarkan konfigurasi dalam file typesafe.config.

  • Anda dapat mendaftarkan jembatan secara dinamis atau langsung mengonfigurasi parameter jembatan.

    Untuk informasi lebih lanjut tentang cara mendaftarkan perangkat secara dinamis, lihat bagian Daftar Jembatan Secara Dinamis pada topik "Gunakan Fitur Lanjutan". Tabel berikut menjelaskan parameter jembatan.

    Parameter

    Diperlukan

    Deskripsi

    productKey

    Ya

    ProductKey produk tempat jembatan berada.

    deviceName

    Ya

    DeviceName jembatan.

    deviceSecret

    Ya

    DeviceSecret jembatan.

    subDeviceConnectMode

    Tidak

    Jenis jembatan.

    • Jika parameter ini diatur ke 3, jembatan besar dibuat. Maksimum 500.000 perangkat dapat terhubung ke jembatan.

    • Jika parameter ini tidak ditentukan, jembatan kecil dibuat. Maksimum 1.500 perangkat dapat terhubung ke jembatan.

    Jembatan besar dan kecil menggunakan kebijakan berbeda untuk memutuskan perangkat. Untuk informasi lebih lanjut, lihat Putuskan koneksi perangkat dari IoT Platform.

    http2Endpoint

    Ya

    Titik akhir gateway HTTP/2. Titik akhir digunakan untuk membuat koneksi persisten antara jembatan dan IoT Platform melalui protokol HTTP/2.

    Format titik akhir:

    • Instansi Enterprise Edition: https://${IotInstanceId}.http2.iothub.aliyuncs.com:443.

      Ganti ${IotInstanceId} dengan ID instansi yang Anda beli.

      Sebagai contoh, jika ID instansi adalah iot-cn-g06kwb****, titik akhirnya adalah https://iot-cn-g06kwb****.http2.iothub.aliyuncs.com:443.

    • Instansi publik: Format titik akhir untuk instansi publik versi baru berbeda dari format titik akhir untuk instansi publik versi sebelumnya.

      • Instansi publik versi baru menggunakan format titik akhir yang sama dengan instansi Enterprise Edition.

      • Instansi publik versi sebelumnya: https://${productKey}.iot-as-http2.${RegionId}.aliyuncs.com:443.

        Ganti ${productKey} dengan ProductKey produk tempat jembatan Anda berada.

        Ganti ${RegionId} dengan ID wilayah tempat layanan IoT Platform Anda berada. Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan Zona.

        Sebagai contoh, jika ProductKey jembatan adalah a1abcab**** dan instansi publik berada di wilayah China (Shanghai), titik akhirnya adalah https://a1abcab****.iot-as-http2.cn-shanghai.aliyuncs.com:443.

      Untuk informasi lebih lanjut tentang instansi IoT Platform, lihat Ikhtisar.

    authEndpoint

    Ya

    Titik akhir layanan verifikasi perangkat.

    Format titik akhir:

    • Instansi Enterprise Edition: https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge.

      Ganti ${IotInstanceId} dengan ID instansi yang Anda beli.

      Sebagai contoh, jika ID instansi adalah iot-cn-g06kwb****, titik akhirnya adalah https://iot-cn-g06kwb****.auth.iothub.aliyuncs.com/auth/bridge.

    • Instansi publik: Format titik akhir untuk instansi publik versi baru berbeda dari format titik akhir untuk instansi publik versi sebelumnya.

      • Instansi publik versi baru menggunakan format titik akhir yang sama dengan instansi Enterprise Edition.

      • Instansi publik versi sebelumnya: https://iot-auth.${RegionId}.aliyuncs.com/auth/bridge.

        Ganti ${RegionId} dengan ID wilayah tempat layanan IoT Platform Anda berada. Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan Zona.

        Sebagai contoh, jika instansi berada di wilayah China (Shanghai), titik akhirnya adalah https://iot-auth.cn-shanghai.aliyuncs.com/auth/bridge.

    Kode sampel berikut menunjukkan cara mengonfigurasi jembatan kecil. Dalam contoh ini, instansi Enterprise Edition digunakan.

    // Titik akhir layanan.
    http2Endpoint = "https://iot-2w****.http2.iothub.aliyuncs.com:443"
    authEndpoint = "https://iot-2w****.auth.iothub.aliyuncs.com/auth/bridge"
    
    // Parameter jembatan.
    productKey = ${bridge-ProductKey-in-Iot-Plaform}
    deviceName = ${bridge-DeviceName-in-Iot-Plaform}
    deviceSecret = ${bridge-DeviceSecret-in-Iot-Plaform}

Verifikasi perangkat dan hubungkan perangkat ke IoT Platform

Hubungkan perangkat ke IoT Platform

Kode sampel berikut menunjukkan cara menghubungkan perangkat ke IoT Platform dengan menggunakan IoT as Bridge SDK:

/**
 * Verifikasi perangkat.
 * @param newSession: informasi sesi perangkat yang dikembalikan dalam callback downstream.
 * @param originalIdentity: pengenal asli perangkat.
 * @return
 */
public boolean doOnline(Session newSession, String originalIdentity);

Saat perangkat terhubung ke IoT Platform, perangkat mengirimkan Session ke IoT Platform. Saat IoT Platform mengirimkan pesan downstream, Session dikirim ke jembatan melalui fungsi callback. Jembatan menentukan perangkat yang akan menerima pesan dengan menggunakan bidang originalIdentity dalam Session.

Session mencakup bidang opsional channel yang berisi informasi tentang koneksi perangkat. Sebagai contoh, server jembatan Anda dibangun berdasarkan Netty. Anda dapat menggunakan bidang channel untuk menyimpan objek channel yang sesuai dengan koneksi persisten perangkat. Jika pesan downstream dikirim, jembatan dapat memperoleh objek channel dari Session.

IoT as Bridge SDK tidak memproses data bidang channel. Anda dapat menggunakan bidang channel untuk menyimpan informasi apa pun yang terkait dengan perangkat.

Kode sampel:

UplinkChannelHandler uplinkHandler = new UplinkChannelHandler();
// Buat sesi.
Object channel = new Object();
Session session = Session.newInstance(originalIdentity, channel);
// Hubungkan perangkat ke IoT Platform.
boolean success = uplinkHandler.doOnline(session, originalIdentity);
if (success) {
    // Jika perangkat terhubung ke IoT Platform, jembatan menerima permintaan komunikasi selanjutnya dari perangkat.
} else {
    // Jika perangkat gagal terhubung ke IoT Platform, jembatan menolak permintaan komunikasi selanjutnya, seperti permintaan pemutusan.
}

Konfigurasikan pemetaan antara sertifikat perangkat dan pengenal perangkat asli

Secara default, pemetaan dikonfigurasi menggunakan file konfigurasi devices.conf di direktori src/main/resources/ proyek Java. Format file adalah HOCON, yang merupakan superset JSON.

IoT as Bridge SDK membaca file konfigurasi berdasarkan konfigurasi dalam file typesafe.config.

Anda harus mengonfigurasi parameter berikut dalam file:

${device-originalIdentity} {
  productKey : ${device-ProductKey-in-Iot-Plaform}
  deviceName : ${device-DeviceName-in-Iot-Platform}
  deviceSecret : ${device-DeviceSecret-in-Iot-Platform}
}

Parameter

Diperlukan

Deskripsi

productKey

Ya

ProductKey produk tempat perangkat berada.

deviceName

Ya

DeviceName perangkat.

deviceSecret

Ya

DeviceSecret perangkat.

Kirim data dari perangkat ke IoT Platform

Kode sampel berikut menunjukkan cara mengirim data dari perangkat ke IoT Platform dengan menggunakan IoT as Bridge SDK:

/**
 * Kirim pesan dari perangkat dalam mode sinkron.
 * @param originalIdentity: pengenal asli perangkat.
 * @param protocolMsg: pesan yang akan dikirim, termasuk topik, payload, dan informasi kualitas layanan (QoS).
 * @param timeout: periode waktu habis. Unit: detik.
 * @return: menunjukkan apakah pesan dikirim dalam periode waktu habis.
 */
boolean doPublish(String originalIdentity, ProtocolMessage protocolMsg, int timeout);
/**
 * Kirim pesan dari perangkat dalam mode asinkron.
 * @param originalIdentity: pengenal asli perangkat.
 * @param protocolMsg: pesan yang akan dikirim, termasuk topik, payload, dan informasi QoS.
 * @return: Setelah metode ini dipanggil, objek CompletableFuture segera dikembalikan dan tersedia untuk penggunaan selanjutnya.
 */
CompletableFuture<ProtocolMessage> doPublishAsync(String originalIdentity, 
                                                  ProtocolMessage protocolMsg);

Kode sampel:

DeviceIdentity deviceIdentity = ConfigFactory.getDeviceConfigManager().getDeviceIdentity(originalIdentity);
ProtocolMessage protocolMessage = new ProtocolMessage();
protocolMessage.setPayload("Halo dunia".getBytes());
protocolMessage.setQos(0);
protocolMessage.setTopic(String.format("/%s/%s/update", deviceIdentity.getProductKey(), deviceIdentity.getDeviceName()));
// Kirim pesan dalam mode sinkron.
int timeoutSeconds = 3;
boolean success = upLinkHandler.doPublish(originalIdentity, protocolMessage, timeoutSeconds);
// Kirim pesan dalam mode asinkron.
upLinkHandler.doPublishAsync(originalIdentity, protocolMessage);

Dorong data dari IoT Platform ke perangkat

Saat Anda memanggil metode bootstrap() untuk jembatan, callback DownlinkChannelHandler didaftarkan dengan IoT as Bridge SDK. Saat IoT as Bridge SDK menerima pesan dari IoT Platform, IoT as Bridge SDK memanggil metode pushToDevice() dalam DownlinkChannelHandler.

Anda dapat memodifikasi metode pushToDevice() untuk memungkinkan jembatan memproses pesan downstream.

Catatan
  • Setelah perangkat terhubung ke IoT Platform dengan menggunakan IoT as Bridge SDK, perangkat dapat menerima pesan downstream tanpa perlu berlangganan topik.

  • Jangan implementasikan logika yang memakan waktu dalam metode pushToDevice(). Jika tidak, thread yang menerima pesan downstream akan terblokir. Jika logika yang memakan waktu atau logika I/O diperlukan, implementasikan logika tersebut secara asinkron. Sebagai contoh, jika jembatan menggunakan koneksi persisten untuk meneruskan pesan downstream ke perangkat, Anda dapat mengimplementasikan logika tersebut secara asinkron.

Kode sampel:

private static ExecutorService executorService  = new ThreadPoolExecutor(
    Runtime.getRuntime().availableProcessors(),
    Runtime.getRuntime().availableProcessors() * 2,
    60, TimeUnit.SECONDS,
    new LinkedBlockingQueue<>(1000),
    new ThreadFactoryBuilder().setDaemon(true).setNameFormat("bridge-downlink-handle-%d").build(),
    new ThreadPoolExecutor.AbortPolicy());
public static void main(String args[]) {
    // Secara default, file application.conf dan devices.conf digunakan.
    BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
    bridgeBootstrap.bootstrap(new DownlinkChannelHandler() {
        @Override
        public boolean pushToDevice(Session session, String topic, byte[] payload) {
            // Terima pesan downstream dari IoT Platform.
            executorService.submit(() -> handleDownLinkMessage(session, topic, payload));
            return true;
        }
        @Override
        public boolean broadcast(String s, byte[] bytes) {
            return false;
        }
    });
}
private static void handleDownLinkMessage(Session session, String topic, byte[] payload) {
    String content = new String(payload);
    log.info("Dapatkan pesan DownLink, session:{}, topik:{}, konten:{}", session, topic, content);
    Object channel = session.getChannel();
    String originalIdentity = session.getOriginalIdentity();
}

Parameter

Deskripsi

session

Session yang Anda tentukan saat memanggil metode doOnline. Parameter ini digunakan untuk menentukan perangkat yang akan menerima pesan downstream.

topic

Topik pesan downstream.

payload

Pesan body pesan downstream. Pesan body dalam format biner.

Putuskan koneksi perangkat dari IoT Platform

Berikut adalah skenario di mana pemutusan perangkat terjadi:

  • Jika jembatan kecil diputuskan dari IoT Platform, semua perangkat yang terhubung ke jembatan secara otomatis diputuskan dari IoT Platform.

  • Jika jembatan besar diputuskan dari IoT Platform, perangkat yang terhubung ke jembatan tidak diputuskan dari IoT Platform. Setelah jembatan terhubung kembali ke IoT Platform, Anda dapat memperbarui status perangkat dengan memanggil metode doOffline.

    Status perangkat menunjukkan apakah perangkat terhubung ke jembatan. Jembatan mengirimkan informasi status perangkat ke IoT Platform. Jika jembatan tidak dapat mengirimkan informasi status perangkat ke IoT Platform, status yang ditampilkan di konsol IoT Platform tetap tidak berubah.

    Sebagai contoh, perangkat terhubung ke IoT Platform melalui jembatan dan status perangkat online. Jika jembatan diputuskan dari IoT Platform, jembatan tidak dapat mengirimkan informasi status perangkat ke IoT Platform. Akibatnya, status perangkat tetap online.

  • Jika jembatan kecil dan besar terhubung ke IoT Platform, jembatan dapat mengirimkan permintaan untuk memutuskan perangkat dari IoT Platform.

    Kode sampel berikut menunjukkan cara mengirimkan permintaan pemutusan:

    /**
     * Kirim permintaan untuk memutuskan perangkat dari IoT Platform.
     * @param originalIdentity: pengenal asli perangkat.
     * @return: menunjukkan apakah permintaan pemutusan dikirim.
     */
    boolean doOffline(String originalIdentity);

    Kode sampel:

    upLinkHandler.doOffline(originalIdentity);

Jembatan menutup dan membangun kembali koneksi ke IoT Platform

Jembatan dapat menggunakan objek BridgeBootstrap dan memanggil metode disconnectBridge dan reconnectBridge untuk menutup dan membangun kembali koneksi ke IoT Platform.

Catatan

Metode reconnectBridge digunakan untuk koneksi ulang dan tidak dapat digunakan untuk koneksi pertama.

Kode sampel:

// Putuskan koneksi jembatan dari IoT Platform.
bridgeBootstrap.disconnectBridge();
Thread.sleep(1000);
// Periksa apakah jembatan terhubung ke IoT Platform.
boolean isConnected = bridgeBootstrap.isBridgeConnected();

// Bangun kembali koneksi ke IoT Platform.
bridgeBootstrap.reconnectBridge();
Thread.sleep(1000);
isConnected = bridgeBootstrap.isBridgeConnected();