Uji komunikasi perangkat klien - AWS IoT Greengrass

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Uji komunikasi perangkat klien

Perangkat klien dapat menggunakan AWS IoT Device SDK untuk menemukan, menghubungkan, dan berkomunikasi dengan perangkat inti. Anda dapat menggunakan klien penemuan Greengrass di AWS IoT Device SDK untuk menggunakan API Penemuan Greengrass, yang mengembalikan informasi tentang perangkat inti yang dapat dihubungkan oleh perangkat klien. Respon API mencakup titik akhir broker MQTT untuk untuk terhubung dan sertifikat untuk digunakan untuk memverifikasi identitas setiap perangkat inti. Kemudian, perangkat klien dapat mencoba setiap titik akhir sampai berhasil terhubung ke perangkat inti.

Perangkat klien hanya dapat menemukan perangkat inti yang Anda kaitkan. Sebelum Anda menguji komunikasi antara perangkat klien dan perangkat inti, Anda harus mengaitkan perangkat klien ke perangkat inti. Untuk informasi selengkapnya, lihat Kaitkan perangkat klien.

API penemuan Greengrass mengembalikan titik akhir broker perangkat inti MQTT yang Anda tentukan. Anda dapat menggunakan Komponen pendeteksi IP untuk mengelola titik akhir ini untuk Anda, atau Anda dapat mengelolanya secara manual untuk setiap perangkat inti. Untuk informasi selengkapnya, lihat Kelola titik akhir perangkat inti.

catatan

Untuk menggunakan API penemuan Greengrass, perangkat klien harus memiliki izin greengrass:Discover. Untuk informasi selengkapnya, lihat Kebijakan AWS IoT minimal untuk perangkat klien.

AWS IoT Device SDK tersedia dalam beragam bahasa pemrograman. Untuk informasi selengkapnya, lihat SDK Perangkat AWS IoT di Panduan Developer AWS IoT Core.

Uji komunikasi (Python)

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di v2 for Python AWS IoT Device SDK untuk menguji komunikasi antara perangkat klien dan perangkat inti.

penting

Untuk menggunakan v2 for Python AWS IoT Device SDK, perangkat harus menjalankan Python 3.6 atau yang lebih baru.

Untuk menguji komunikasi (v2 for Python AWS IoT Device SDK)

  1. Unduh dan instal v2 for Python AWS IoT Device SDK ke objek AWS IoT untuk terhubung sebagai perangkat klien.

    Di perangkat klien, lakukan hal berikut:

    1. Kloning v2 for Python repository AWS IoT Device SDK untuk mengunduhnya.

      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    2. Instal v2 for Python AWS IoT Device SDK.

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. Ubah ke folder contoh di v2 for Python AWS IoT Device SDK.

    cd aws-iot-device-sdk-python-v2/samples
  3. Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut mengirimkan pesan Hello World ke topik clients/MyClientDevice1/hello/world.

    • GantiMyClientDevice1dengan nama objek perangkat klien.

    • Ganti~/sertifikat/AmazonRootCa1.pemdengan jalur ke sertifikat CA akar Amazon pada perangkat klien.

    • Ganti ~/certs/device.pem.crt dengan jalur ke sertifikat perangkat pada perangkat klien.

    • Ganti ~/certs/private.pem.key dengan jalur menuju file kunci pribadi pada perangkat klien.

    • Ganti us-east-1 dengan Wilayah AWS di mana perangkat klien dan perangkat inti Anda beroperasi.

    python3 basic_discovery.py \ --thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --message 'Hello World!' \ --ca_file ~/certs/AmazonRootCA1.pem \ --cert ~/certs/device.pem.crt \ --key ~/certs/private.pem.key \ --region us-east-1 \ --verbosity Warn

    Aplikasi sampel penemuan mengirimkan pesan 10 kali dan terputus. Aplikasi ini juga berlangganan topik yang sama di mana ia menerbitkan pesan. Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

    Performing greengrass discovery... awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n'])]) Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883 Connected! Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 0}' Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 1}' ... Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 9}'

    Jika aplikasi mengeluarkan kesalahan, lihat Pemecahan masalah penemuan Greengrass.

    Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat PemantauanAWS IoT Greengrasslog.

Uji komunikasi (C++)

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di v2 for C++ AWS IoT Device SDK untuk menguji komunikasi antara perangkat klien dan perangkat inti.

Untuk membangun v2 for C++ AWS IoT Device SDK, perangkat harus mempunyai alat berikut:

  • C++ 11 atau yang lebih baru

  • CMake 3.1 atau yang lebih baru

  • Salah satu penyusun berikut:

    • GCC 4.8 atau yang lebih baru

    • Clang 3.9 atau yang lebih baru

    • MSVC 2015 atau yang lebih baru

Untuk menguji komunikasi (v2 for C++ AWS IoT Device SDK)

  1. Unduh dan bangun v2 for C++ AWS IoT Device SDK ke objek AWS IoT untuk terhubung sebagai perangkat klien.

    Di perangkat klien, lakukan hal berikut:

    1. Buat folder untuk workspace v2 for C++ AWS IoT Device SDK, dan ubah ke itu.

      cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
    2. Kloning v2 for C++ repository AWS IoT Device SDK untuk mengunduhnya. Bendera --recursive menentukan untuk men-download submodul.

      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
    3. Buat folder untuk output bangunan v2 for C++ AWS IoT Device SDK, dan ubah ke itu.

      mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
    4. Bangun v2 for C++ AWS IoT Device SDK.

      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
  2. Bangun aplikasi sampel penemuan Greengrass di v2 for C++ AWS IoT Device SDK. Lakukan hal berikut:

    1. Ubah ke folder sampel penemuan Greengrass di v2 for C++ AWS IoT Device SDK.

      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
    2. Buat folder untuk output build sampel penemuan Greengrass, dan ubah ke itu.

      mkdir build cd build
    3. Bangun sampel aplikasi penemuan Greengrass.

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut berlangganan topik clients/MyClientDevice1/hello/world dan menerbitkan pesan yang Anda masukkan pada baris perintah untuk topik yang sama.

    • GantiMyClientDevice1dengan nama objek perangkat klien.

    • Ganti~/sertifikat/AmazonRootCa1.pemdengan jalur ke sertifikat CA akar Amazon pada perangkat klien.

    • Ganti ~/certs/device.pem.crt dengan jalur ke sertifikat perangkat pada perangkat klien.

    • Ganti ~/certs/private.pem.key dengan jalur menuju file kunci pribadi pada perangkat klien.

    • Ganti us-east-1 dengan Wilayah AWS di mana perangkat klien dan perangkat inti Anda beroperasi.

    ./basic-discovery \ --thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --ca_file ~/certs/AmazonRootCA1.pem \ --cert ~/certs/device.pem.crt \ --key ~/certs/private.pem.key \ --region us-east-1

    Aplikasi sampel penemuan berlangganan topik dan meminta Anda untuk memasukkan pesan untuk dipublikasikan.

    Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883 Successfully subscribed to clients/MyClientDevice1/hello/world Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.

    Jika aplikasi mengeluarkan kesalahan, lihat Pemecahan masalah penemuan Greengrass.

  4. Masukkan pesan, seperti Hello World!.

    Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program. Hello World!

    Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

    Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!

    Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat PemantauanAWS IoT Greengrasslog.

Uji (JavaScript)

Di bagian ini, Anda menggunakan sampel penemuan Greengrass diAWS IoT Device SDKv2 JavaScriptuntuk menguji komunikasi antara perangkat klien dan perangkat inti.

penting

Untuk menggunakanAWS IoT Device SDKv2 JavaScript, perangkat harus menjalankan Node v10.0 atau yang lebih baru.

Untuk menguji komunikasi (AWS IoT Device SDKv2 JavaScript)

  1. Unduh dan instalAWS IoT Device SDKv2 JavaScriptkepadaAWS IoTuntuk terhubung sebagai perangkat klien.

    Di perangkat klien, lakukan hal berikut:

    1. KloningAWS IoT Device SDKv2 JavaScript repositori untuk mengunduhnya.

      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. InstalAWS IoT Device SDKv2 JavaScript.

      cd aws-iot-device-sdk-js-v2 npm install
  2. Ubah ke folder sampel penemuan Greengrass diAWS IoT Device SDKv2 JavaScript.

    cd samples/node/basic_discovery
  3. Instal sampel aplikasi penemuan Greengrass.

    npm install
  4. Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut mengirimkan pesan Hello World ke topik clients/MyClientDevice1/hello/world.

    • GantiMyClientDevice1dengan nama objek perangkat klien.

    • Ganti~/sertifikat/AmazonRootCa1.pemdengan jalur ke sertifikat CA akar Amazon pada perangkat klien.

    • Ganti ~/certs/device.pem.crt dengan jalur ke sertifikat perangkat pada perangkat klien.

    • Ganti ~/certs/private.pem.key dengan jalur menuju file kunci pribadi pada perangkat klien.

    • Ganti us-east-1 dengan Wilayah AWS di mana perangkat klien dan perangkat inti Anda beroperasi.

    node dist/index.js \ --thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --message 'Hello World!' \ --ca_file ~/certs/AmazonRootCA1.pem \ --cert ~/certs/device.pem.crt \ --key ~/certs/private.pem.key \ --region us-east-1 \ --verbose warn

    Aplikasi sampel penemuan mengirimkan pesan 10 kali dan terputus. Aplikasi ini juga berlangganan topik yang sama di mana ia menerbitkan pesan. Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

    Discovery Response: {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n"]}]} Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer. Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":1} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":2} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":3} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":4} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":5} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":6} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":7} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":8} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":9} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":10} Complete!

    Jika aplikasi mengeluarkan kesalahan, lihat Pemecahan masalah penemuan Greengrass.

    Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat PemantauanAWS IoT Greengrasslog.

Uji komunikasi (Java)

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di v2 for Java AWS IoT Device SDK untuk menguji komunikasi antara perangkat klien dan perangkat inti.

penting

Untuk membangun v2 for Java AWS IoT Device SDK, perangkat harus mempunyai alat berikut:

  • Java 8 atau yang lebih baru, dengan JAVA_HOME menunjuk ke folder Java.

  • Apache Maven

Untuk menguji komunikasi (v2 for Java AWS IoT Device SDK)

  1. Unduh dan instal v2 for Java AWS IoT Device SDK ke objek AWS IoT untuk terhubung sebagai perangkat klien.

    Di perangkat klien, lakukan hal berikut:

    1. Kloning v2 for Java repository AWS IoT Device SDK untuk mengunduhnya.

      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
    2. Ubah ke folder v2 for Java AWS IoT Device SDK.

    3. Bangun v2 for Java AWS IoT Device SDK.

      cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
  2. Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut berlangganan topik clients/MyClientDevice1/hello/world dan menerbitkan pesan yang Anda masukkan pada baris perintah untuk topik yang sama.

    • Ganti kedua contohMyClientDevice1dengan nama objek perangkat klien.

    • Ganti$ rumah/certs/AmazonRootCa1.pemdengan jalur ke sertifikat CA akar Amazon pada perangkat klien.

    • Ganti $HOME/certs/device.pem.crt dengan jalur ke sertifikat perangkat pada perangkat klien.

    • Ganti $HOME/certs/private.pem.key dengan jalur menuju file kunci privat pada perangkat klien.

    • Ganti us-east-1 dengan Wilayah AWS di mana perangkat klien Anda dan perangkat inti beroperasi.

    DISCOVERY_SAMPLE_ARGS="--thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --ca_file $HOME/certs/AmazonRootCA1.pem \ --cert $HOME/certs/device.pem.crt \ --key $HOME/certs/private.pem.key \ --region us-east-1" mvn exec:java -pl samples/Greengrass \ -Dexec.mainClass=greengrass.BasicDiscovery \ -Dexec.args="$DISCOVERY_SAMPLE_ARGS"

    Aplikasi sampel penemuan berlangganan topik dan meminta Anda untuk memasukkan pesan untuk dipublikasikan.

    Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Started a clean session Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:

    Jika aplikasi mengeluarkan kesalahan, lihat Pemecahan masalah penemuan Greengrass.

  3. Masukkan pesan, seperti Hello World!.

    Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program: Hello World!

    Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

    Message received on topic clients/MyClientDevice1/hello/world: Hello World!

    Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat PemantauanAWS IoT Greengrasslog.