Megosztás a következőn keresztül:


Oktatóanyag: Adatok küldése transzparens átjárón keresztül

A következőkre vonatkozik:igen ikon IoT Edge 1.1

Fontos

Az IoT Edge 1.1 támogatási dátumának vége 2022. december 13.,. A termék, szolgáltatás, technológia vagy API támogatásáról a Microsoft-termékek életciklusa című leírásból tájékozódhat. További információ az IoT Edge legújabb verziójára való frissítésről: IoT Edge frissítése.

Ebben a cikkben ismét szimulált eszközként használjuk a fejlesztési virtuális gépet. Ahelyett azonban, hogy közvetlenül az IoT Hubra küldené az adatokat, az eszköz transzparens átjáróként konfigurált IoT Edge-eszköznek küld adatokat.

Figyeljük az IoT Edge-eszköz működését, miközben a szimulált eszköz adatokat küld. Miután az eszköz fut, a tárfiókban lévő adatokat megvizsgálva ellenőrizhetjük, hogy minden a várt módon működött-e.

Ezt a lépést általában egy felhő- vagy eszközfejlesztő hajtja végre.

Az oktatóanyag ezen szakaszában a következőket sajátíthatja el:

  • Alsóbb rétegbeli eszköz létrehozása és futtatása.
  • Ellenőrizze, hogy a létrehozott adatok tárolása az Azure Blob Storage-ban történik-e.
  • Ellenőrizze, hogy a gépi tanulási modell besorolta-e az eszközadatokat.

Előfeltételek

Ez a cikk az Azure Machine Learning IoT Edge-en való használatával kapcsolatos oktatóanyagok sorozatának része. A sorozat minden cikke az előző cikkben szereplő munkára épül. Ha közvetlenül ehhez a cikkhez jutott, először látogasson el a első cikkére a sorozatban.

Eszköz csatlakozó áttekintése

Használja újra a DeviceHarness-projektet az alsóbb rétegbeli eszköz szimulálásához. Az átlátszó átjáróhoz való csatlakozáshoz két további dolog szükséges:

  • Regisztrálja a tanúsítványt, hogy a lejjebb lévő IoT-eszköz megbízzon az IoT Edge futtatási környezet által használt hitelesítésszolgáltatóban. Esetünkben az alsóbb rétegbeli eszköz a fejlesztési virtuális gép.
  • Adja hozzá az edge gateway teljes tartománynevét (FQDN) az eszköz kapcsolati karakterláncához.

Tekintse meg a kódot, és nézze meg, hogyan implementálják ezt a két elemet.

  1. A fejlesztői gépen nyissa meg a Visual Studio Code-ot.

  2. Fájl>Mappa megnyitása... a C:\source\IoTEdgeAndMlSample\DeviceHarness megnyitásához.

  3. Tekintse meg az InstallCertificate() metódust Program.cs.

  4. Vegye figyelembe, hogy ha a kód megtalálja a tanúsítvány elérési útját, meghívja a CertificateManager.InstallCACert metódust a tanúsítvány számítógépre való telepítéséhez.

  5. Most tekintse meg a GetIotHubDevice metódust a TurbofanDevice osztályban.

  6. Amikor a felhasználó a "-g" beállítással megadja az átjáró teljes tartománynevét, a rendszer ezt az értéket változóként adja át ennek a gatewayFqdn metódusnak, amely hozzá lesz fűzve az eszköz kapcsolati sztringéhez.

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

Alsóbb rétegbeli eszköz létrehozása és futtatása

  1. Ha a DeviceHarness projekt továbbra is nyitva van a Visual Studio Code-ban, hozza létre a projektet. A Terminál menüben válassza a Build feladat futtatása , majd a Build lehetőséget.

  2. Keresse meg a peremhálózati átjáró teljes tartománynevét (FQDN) az IoT Edge-eszközére (Linux rendszerű virtuális gépre) az Azure Portalon, és másolja át a DNS-név értékét az áttekintési oldalról.

  3. Indítsa el az IoT-eszközt (Linux rendszerű virtuális gépet), ha még nem fut.

  4. Nyissa meg a Visual Studio Code terminált. A Terminál menüben válassza az Új terminál lehetőséget, és futtassa a következő parancsot az IoT Edge-eszközről (Linux rendszerű virtuális gépről) másolt DNS-névre cserélve <edge_device_fqdn> :

    dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1
    
  5. Az alkalmazás megpróbálja telepíteni a tanúsítványt a fejlesztői gépre. Ha igen, fogadja el a biztonsági figyelmeztetést.

  6. Amikor a rendszer kéri az IoT Hub kapcsolati sztringjének megadását, kattintson a három pontra (...) az Azure IoT Hub-eszközök panelén, és válassza az IoT Hub kapcsolati sztringjének másolása lehetőséget. Illessze be az értéket a terminálba.

  7. A kimenet a következőképpen jelenik meg:

    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
    

    Vegye figyelembe a "GatewayHostName" hozzáadását az eszköz kapcsolati sztringjére, amely miatt az eszköz az IoT Hubon keresztül kommunikál az IoT Edge transzparens átjárón keresztül.

Kimenet ellenőrzése

IoT Edge-eszköz kimenete

Az avroFileWriter modul kimenete könnyen megfigyelhető az IoT Edge-eszköz megvizsgálásával.

  1. Kapcsolódjon SSH-n keresztül az IoT Edge virtuális gépre.

  2. Keresse meg a lemezre írt fájlokat.

    find /data/avrofiles -type f
    
  3. A parancs kimenete a következő példához hasonlóan fog kinézni:

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

    A futtatás időzítésétől függően több fájl is lehet.

  4. Ügyeljen az időbélyegekre. Az avroFileWriter modul feltölti a fájlokat a felhőbe, ha az utolsó módosítási idő több mint 10 perc a múltban (lásd az MODIFIED_FILE_TIMEOUT uploader.py az avroFileWriter modulban).

  5. A 10 perc eltelte után a modulnak fel kell töltenie a fájlokat. Ha a feltöltés sikeres, törli a fájlokat a lemezről.

Azure Storage

Az alsóbb rétegbeli eszköz adatainak küldésével azokat a tárfiókokat tekinthetjük meg, ahol az adatok átirányítására számítunk.

  1. A fejlesztői gépen nyissa meg a Visual Studio Code-ot.

  2. A tárterület ablakának "AZURE STORAGE" paneljén navigáljon a fára a tárfiók megkereséséhez.

  3. Bontsa ki a Blob Containers csomópontot.

  4. Az oktatóanyag előző részében végzett munkából arra számítunk, hogy a ruldata-tárolónak tartalmaznia kell az RUL-jal rendelkező üzeneteket. Bontsa ki a ruldata csomópontot.

  5. Egy vagy több blobfájl neve a következő lesz: <IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.

  6. Kattintson a jobb gombbal az egyik fájlra, és válassza a Blob letöltése lehetőséget a fájl fejlesztői gépre való mentéséhez.

  7. Ezután bontsa ki az uploadturbofanfiles csomópontot . Az előző cikkben ezt a helyet állítottuk be célként az avroFileWriter modul által feltöltött fájlok számára.

  8. Kattintson a jobb gombbal a fájlokra, és a Blob letöltése gombra kattintva mentse a fájlt a fejlesztőgépre.

Az Avro-fájl tartalmának olvasása

Tartalmaztunk egy egyszerű parancssori segédprogramot egy Avro-fájl olvasásához és a fájlban lévő üzenetek JSON-sztringjének visszaadására. Ebben a szakaszban telepítjük és futtatjuk.

  1. Nyisson meg egy terminált a Visual Studio Code-ban (Terminál>új terminál).

  2. Telepítse a HubAvroReadert:

    pip install c:\source\IoTEdgeAndMlSample\HubAvroReader
    
  3. A hubavroreader használatával olvassa el a ruldata-ból letöltött Avro-fájlt.

    hubavroreader <avro file with ath> | more
    
  4. Vegye figyelembe, hogy az üzenet törzse a vártnak megfelelően néz ki az eszközazonosítóval és az előrejelzett RUL-val.

    {
        "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. Futtassa ugyanazt a parancsot, amely az uploadturbofanfiles fájlból letöltött Avro-fájlt adja át.

  6. A vártnak megfelelően ezek az üzenetek tartalmazzák az eredeti üzenet érzékelőadatait és működési beállításait. Ezek az adatok felhasználhatók az RUL-modell továbbfejlesztésére a peremeszközön.

    {
        "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>"
    }
    

Erőforrások tisztítása

Ha az ebben a végpontok közötti oktatóanyagban használt erőforrásokat szeretné megismerni, várjon, amíg el nem végzi a létrehozott erőforrások törlését. Ellenkező esetben a következő lépésekkel törölheti őket:

  1. Törölje a fejlesztői virtuális gép, az IoT Edge virtuális gép, az IoT Hub, a tárfiók, a gépi tanulási munkaterület szolgáltatás (és a létrehozott erőforrások: tárolóregisztrációs adatbázis, Application Insights, key vault, tárfiók) tárolásához létrehozott erőforráscsoport(ok) törlését.

  2. Törölje a gépi tanulási projektet az Azure Notebooksban.

  3. Ha helyileg klónozta az adattárat, zárja be a helyi adattárra hivatkozó Bármely PowerShell- vagy VS Code-ablakot, majd törölje az adattár könyvtárát.

  4. Ha helyileg hozott létre tanúsítványokat, törölje a c:\edgeCertificates mappát.

Következő lépések

Ebben a cikkben a fejlesztési virtuális gépünkkel szimuláltunk egy alsóbb rétegbeli eszközt, amely érzékelőt és működési adatokat küld az IoT Edge-eszköznek. Ellenőriztük, hogy az eszközön lévő modulok átirányították, besorolták, megőrizték és feltöltötte az adatokat a peremeszköz valós idejű működésének vizsgálatával, valamint a tárfiókba feltöltött fájlok megtekintésével.

Az IoT Edge képességeinek megismeréséhez próbálkozzon a következő oktatóanyagkal: