Tutorial: Mengirim data melalui gateway transparan

Berlaku untuk:yes icon IoT Edge 1.1

Dalam artikel ini, kami sekali lagi menggunakan VM pengembangan sebagai perangkat simulasi. Namun, daripada mengirim data langsung ke Hub IoT, perangkat mengirim data ke perangkat IoT Edge yang dikonfigurasi sebagai gateway transparan.

Kami memantau operasi perangkat IoT Edge saat perangkat yang disimulasikan mengirimkan data. Setelah perangkat selesai berjalan, kami melihat data di akun penyimpanan kami untuk memvalidasi semuanya bekerja seperti yang diharapkan.

Langkah ini biasanya dilakukan oleh pengembang cloud atau perangkat.

Di bagian tutorial ini, Anda belajar cara:

  • Buat dan jalankan perangkat node leaf.
  • Verifikasi bahwa data yang dihasilkan disimpan di penyimpanan Azure Blob Anda.
  • Validasi bahwa model pembelajaran mesin mengklasifikasikan data perangkat.

Prasyarat

Artikel ini merupakan bagian dari rangkaian tutorial tentang menggunakan Azure Machine Learning di Azure IoT Edge. Setiap artikel dalam rangkaian membuat pekerjaan di artikel sebelumnya. Jika Anda telah tiba di artikel ini secara langsung, kunjungi artikel pertama dalam seri ini.

Tinjau harness perangkat

Gunakan kembali proyek DeviceHarness untuk menyimulasikan perangkat hilir (atau node leaf). Menyambungkan ke gateway transparan memerlukan dua hal tambahan:

  • Daftarkan sertifikat untuk membuat perangkat IoT hilir mempercayai otoritas sertifikat yang digunakan oleh runtime IoT Edge. Dalam kasus kami, perangkat hilir adalah VM pengembangan.
  • Tambahkan gateway tepi nama domain yang sepenuhnya memenuhi syarat (FQDN) ke string koneksi perangkat.

Lihat kode untuk melihat cara menerapkan kedua item ini.

  1. Pada komputer pengembangan Anda, buka Visual Studio Code.

  2. Gunakan FileBuka>Folder... untuk membuka C:\source\IoTEdgeAndMlSample\DeviceHarness.

  3. Lihatlah metode InstallCertificate() di Program.cs.

  4. Perhatikan bahwa jika kode menemukan jalur sertifikat, kode akan memanggil metode CertificateManager.InstallCACert untuk menginstal sertifikat pada komputer.

  5. Sekarang, lihat metode GetIotHubDevice pada kelas TurbofanDevice.

  6. Ketika pengguna menentukan FQDN gateway menggunakan opsi “-g”, nilai tersebut diteruskan ke metode ini sebagai variabel gatewayFqdn, yang ditambahkan ke string koneksi perangkat.

    connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
    

Buat dan jalankan perangkat node leaf

  1. Dengan proyek DeviceHarness yang masih terbuka di Visual Studio Code, buat proyek. Dari menu Terminal, pilih Jalankan Tugas Bangun dan pilih Bangun.

  2. Temukan nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk gateway tepi Anda dengan mengarahkan ke perangkat IoT Edge (VM Linux) di portal Microsoft Azure dan menyalin nilai untuk nama DNS dari halaman gambaran umum.

  3. Mulai perangkat IoT Anda (VM Linux) jika belum berjalan.

  4. Buka terminal Visual Studio Code. Dari menu Terminal, pilih Terminal Baru dan jalankan perintah berikut, ganti <edge_device_fqdn> dengan nama DNS yang Anda salin dari perangkat IoT Edge (VM Linux):

    dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1
    
  5. Aplikasi ini mencoba untuk menginstal sertifikat ke komputer pengembangan Anda. Ketika itu terjadi, terima peringatan keamanan.

  6. Ketika diminta untuk string koneksi Hub IoT, klik elipsis ( ... ) pada panel perangkat Azure IoT Hub dan pilih Salin String Koneksi Hub IoT. Tempelkan nilai ke terminal.

  7. Anda akan melihat output seperti:

    Found existing device: Client_001
    Using device connection string: HostName=<your hub>.azure-devices.net;DeviceId=Client_001;SharedAccessKey=xxxxxxx; GatewayHostName=iotedge-xxxxxx.<region>.cloudapp.azure.com
    Device: 1 Message count: 50
    Device: 1 Message count: 100
    Device: 1 Message count: 150
    Device: 1 Message count: 200
    Device: 1 Message count: 250
    

    Perhatikan penambahan “GatewayHostName” ke string koneksi perangkat, yang menyebabkan perangkat berkomunikasi melalui Hub IoT melalui gateway transparan IoT Edge.

Periksa output

Output perangkat IoT Edge

Output dari modul avroFileWriter dapat mudah diamati dengan melihat perangkat IoT Edge.

  1. SSH ke dalam komputer virtual IoT Edge Anda.

  2. Cari file yang ditulis ke cakram.

    find /data/avrofiles -type f
    
  3. Output perintah akan terlihat seperti contoh berikut:

    /data/avrofiles/2019/4/18/22/10.avro
    

    Anda dapat memiliki lebih dari satu file bergantung pada waktu eksekusi.

  4. Perhatikan stempel waktu. Modul avroFileWriter mengunggah file ke cloud setelah waktu modifikasi terakhir lebih dari 10 menit sebelumnya (lihat MODIFIED_FILE_TIMEOUT dalam uploader.py dalam modul avroFileWriter).

  5. Setelah 10 menit berlalu, modul harus mengunggah file. Jika unggahan berhasil, unggahan akan menghapus file dari cakram.

Azure Storage

Kami dapat mengamati hasil pengiriman data perangkat node leaf dengan melihat akun penyimpanan di mana kami mengharapkan data dirutekan.

  1. Pada komputer pengembangan Anda, buka Visual Studio Code.

  2. Di panel “PENYIMPANAN AZURE” di jendela jelajahi, arahkan pohon untuk menemukan akun penyimpanan Anda.

  3. Memperluas simpul Kontainer Blob.

  4. Dari pekerjaan yang kami lakukan di bagian tutorial sebelumnya, kami berharap bahwa kontainer ruldata harus memuat pesan dengan RUL. Memperluas node ruldata.

  5. Anda akan melihat satu atau beberapa file blob bernama: <IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.

  6. Klik kanan pada salah satu file dan pilih Unduh Blob untuk menyimpan file ke komputer pengembangan Anda.

  7. Selanjutnya, perluas simpul uploadturbofanfiles. Pada artikel sebelumnya, kami menetapkan lokasi ini sebagai target untuk file yang diunggah oleh modul avroFileWriter.

  8. Klik kanan pada file dan pilih Unduh Blob untuk menyimpan file ke komputer pengembangan Anda.

Baca konten file Avro

Kami memasukkan utilitas baris perintah sederhana untuk membaca file Avro dan mengembalikan string JSON dari pesan dalam file. Di bagian ini, kami akan menginstal dan menjalankannya.

  1. Buka terminal di Visual Studio Code (Terminal>Baru terminal).

  2. Instal hubavroreader:

    pip install c:\source\IoTEdgeAndMlSample\HubAvroReader
    
  3. Gunakan hubavroreader untuk membaca file Avro yang Anda unduh dari ruldata.

    hubavroreader <avro file with ath> | more
    
  4. Perhatikan bahwa isi pesan terlihat seperti yang kami harapkan dengan ID perangkat dan RUL yang diprediksi.

    {
        "Body": {
            "ConnectionDeviceId": "Client_001",
            "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987",
            "CycleTime": 1.0,
            "PredictedRul": 170.1723693909444
        },
        "EnqueuedTimeUtc": "<time>",
        "Properties": {
            "ConnectionDeviceId": "Client_001",
            "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987",
            "CreationTimeUtc": "01/01/0001 00:00:00",
            "EnqueuedTimeUtc": "01/01/0001 00:00:00"
        },
        "SystemProperties": {
            "connectionAuthMethod": "{\"scope\":\"module\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "connectionDeviceGenerationId": "636857841798304970",
            "connectionDeviceId": "aaTurbofanEdgeDevice",
            "connectionModuleId": "turbofanRouter",
            "contentEncoding": "utf-8",
            "contentType": "application/json",
            "correlationId": "3d0bc256-b996-455c-8930-99d89d351987",
            "enqueuedTime": "<time>",
            "iotHubName": "mledgeiotwalkthroughhub"
        }
    }
    
  5. Jalankan perintah yang sama melewati file Avro yang Anda unduh dari uploadturbofanfiles.

  6. Seperti yang diharapkan, pesan-pesan ini memuat semua data sensor dan pengaturan operasi dari pesan asli. Data ini dapat digunakan untuk meningkatkan model RUL pada perangkat edge kami.

    {
        "Body": {
            "CycleTime": 1.0,
            "OperationalSetting1": -0.0005000000237487257,
            "OperationalSetting2": 0.00039999998989515007,
            "OperationalSetting3": 100.0,
            "PredictedRul": 170.17236328125,
            "Sensor1": 518.6699829101562,
            "Sensor10": 1.2999999523162842,
            "Sensor11": 47.29999923706055,
            "Sensor12": 522.3099975585938,
            "Sensor13": 2388.010009765625,
            "Sensor14": 8145.31982421875,
            "Sensor15": 8.424599647521973,
            "Sensor16": 0.029999999329447746,
            "Sensor17": 391.0,
            "Sensor18": 2388.0,
            "Sensor19": 100.0,
            "Sensor2": 642.3599853515625,
            "Sensor20": 39.11000061035156,
            "Sensor21": 23.353700637817383,
            "Sensor3": 1583.22998046875,
            "Sensor4": 1396.8399658203125,
            "Sensor5": 14.619999885559082,
            "Sensor6": 21.610000610351562,
            "Sensor7": 553.969970703125,
            "Sensor8": 2387.9599609375,
            "Sensor9": 9062.169921875
        },
            "ConnectionDeviceId": "Client_001",
            "CorrelationId": "70df0c98-0958-4c8f-a422-77c2a599594f",
            "CreationTimeUtc": "0001-01-01T00:00:00+00:00",
            "EnqueuedTimeUtc": "<time>"
    }
    

Bersihkan sumber daya

Jika Anda berencana untuk mengeksplorasi sumber daya yang digunakan oleh tutorial ujung ke ujung ini, tunggu sampai Anda selesai membersihkan sumber daya yang Anda buat. Jika tidak, gunakan langkah berikut untuk menghapusnya:

  1. Hapus grup(-grup) sumber daya yang dibuat untuk menahan Dev VM, IoT Edge VM, IoT Hub, akun penyimpanan, layanan ruang kerja pembelajaran mesin (dan sumber daya yang dibuat: registri kontainer, Application Insights, brankas kunci, akun penyimpanan).

  2. Hapus proyek pembelajaran mesin di Azure Notebooks.

  3. Jika Anda mengkloning repositori secara lokal, tutup jendela PowerShell atau Visual Studio Code yang mengacu pada repositori lokal, lalu hapus direktori repositori.

  4. Jika Anda membuat sertifikat secara lokal, hapus folder c:\edgeCertificates.

Langkah berikutnya

Dalam artikel ini, kami menggunakan VM pengembangan kami untuk menyimulasikan sensor pengiriman perangkat node leaf dan data operasi ke perangkat IoT Edge kami. Kami memvalidasi bahwa modul pada perangkat dirutekan, diklasifikasikan, bertahan, dan mengunggah data dengan memeriksa operasi real-time perangkat edge dan dengan melihat file yang diunggah ke akun penyimpanan.

Untuk terus mempelajari tentang kemampuan IoT Edge, coba tutorial berikutnya: