Oktatóanyag: IoT térbeli elemzés implementálása az Azure Térképek használatával

Az IoT-forgatókönyvekben gyakori a térben és időben előforduló releváns események rögzítése és nyomon követése. Ilyenek például a flottakezelés, az eszközkövetés, a mobilitás és az intelligens városi alkalmazások. Ez az oktatóanyag végigvezeti egy megoldáson, amely nyomon követi a használt autókölcsönzési mozgást az Azure Térképek API-k használatával.

Ebben az oktatóanyagban a következőket fogja tudni:

  • Azure Storage-fiók létrehozása az autókövetési adatok naplózásához.
  • Geofence feltöltése egy Azure Storage-fiókba.
  • Hozzon létre egy központot az Azure IoT Hubban, és regisztráljon egy eszközt.
  • Hozzon létre egy függvényt az Azure Functionsben, és implementálja az üzleti logikát az Azure Térképek térbeli elemzésen alapuló módon.
  • Előfizetés az IoT-eszközök telemetriai eseményeire az Azure-függvényből az Azure Event Griden keresztül.
  • Szűrje a telemetriai eseményeket az IoT Hub üzenet-útválasztásával.

Előfeltételek

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Tipp.

A teljes rentalCarSimulation C# projektet egyetlen ZIP-fájlként töltheti le a GitHubról, ha a minta gyökerére kattint, majd a zöld<>Kód gombra kattint, majd letölti a ZIP-t.

Ez az oktatóanyag a Postman-alkalmazást használja, de választhat egy másik API-fejlesztési környezetet.

Fontos

Az URL-példákban cserélje le {Your-Azure-Maps-Subscription-key} az Azure Térképek előfizetési kulcsára.

Használati eset: autókölcsönzés nyomon követése

Tegyük fel, hogy egy autókölcsönző vállalat szeretné naplózni a tartózkodási hely adatait, a megtett távolságokat és a bérelt autók állapotát. A vállalat ezt az információt is szeretné tárolni, amikor egy autó elhagyja a megfelelő engedélyezett földrajzi régiót.

A bérautók IoT-eszközökkel vannak felszerelve, amelyek rendszeresen telemetriai adatokat küldenek az IoT Hubnak. A telemetria tartalmazza az aktuális helyet, és jelzi, hogy az autó motorja fut-e. Az eszköz helyséma megfelel a térinformatikai adatok IoT Plug and Play sémájának. A kölcsönzött autó eszköz telemetriai sémája a következő JSON-kódhoz hasonlóan néz ki:

{
    "data": {
        "properties": {
            "Engine": "ON"
        },
        "systemProperties": {
            "iothub-content-type": "application/json",
            "iothub-content-encoding": "utf-8",
            "iothub-connection-device-id": "ContosoRentalDevice",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "636959817064335548",
            "iothub-enqueuedtime": "2019-06-18T00:17:20.608Z",
            "iothub-message-source": "Telemetry"
        },
        "body": {
            "location": {
                "type": "Point",
                "coordinates": [ -77.025988698005662, 38.9015330523316 ]
            }
        }
    }
}

Ebben az oktatóanyagban csak egy járművet követ nyomon. Az Azure-szolgáltatások beállítása után le kell töltenie a rentalCarSimulation C# projektet a járműszimulátor futtatásához. A teljes folyamat az eseménytől a függvény végrehajtásáig az alábbi lépésekben van összefoglalva:

  1. A járműben lévő eszköz telemetriai adatokat küld az IoT Hubnak.

  2. Ha az autómotor fut, a központ közzéteszi a telemetriai adatokat az Event Gridben.

  3. Az Azure-függvények az eszköz telemetriai eseményeire való esemény-előfizetése miatt aktiválódnak.

  4. A függvény naplózza a jármű eszközhelyének koordinátáit, az esemény időpontját és az eszköz azonosítóját. Ezt követően a Spatial Geofence Get API használatával állapítja meg, hogy az autó a geofizikán kívül hajtott-e. Ha a földrajzi határokon kívülre haladt, a függvény az eseménytől kapott helyadatokat egy blobtárolóba tárolja. A függvény lekérdezi a keresési cím fordítottját is, hogy a koordináták helyét egy utcacímre fordítsák, és az eszköz többi helyadataival együtt tárolják.

Az alábbi ábrán a rendszer magas szintű áttekintése látható.

A rendszer áttekintésének diagramja.

Az alábbi ábra kék színnel emeli ki a geofenciaterületet. A bérautó útvonalát zöld vonal jelzi.

Geofence útvonalat ábrázoló ábra.

Azure-tárfiók létrehozása

Az autós szabálysértések nyomon követésének adatainak tárolásához hozzon létre egy általános célú v2-tárfiókot az erőforráscsoportban. Ha még nem hozott létre erőforráscsoportot, kövesse az erőforráscsoportok létrehozására vonatkozó utasításokat. Nevezze el az erőforráscsoportot ContosoRental néven.

Tárfiók létrehozásához kövesse a tárfiók létrehozására vonatkozó utasításokat. Ebben az oktatóanyagban nevezze el a tárfiókot contosorentalstorage néven, de általában bármit elnevezhet, amit csak szeretne.

Ha sikeresen létrehozta a tárfiókot, létre kell hoznia egy tárolót a naplózási adatok tárolásához.

  1. Nyissa meg az újonnan létrehozott tárfiókot. Az Alapvető elemek szakaszban válassza a Tárolók hivatkozást.

    Képernyőkép a Blob Storage tárolóiról.

  2. A bal felső sarokban válassza a + Tároló lehetőséget. Megjelenik egy panel a böngésző jobb oldalán. Nevezze el a tároló contoso-rental-logs nevét, és válassza a Létrehozás lehetőséget.

    Blobtároló létrehozásának képernyőképe.

  3. Nyissa meg a tárfiók Hozzáférési kulcsok paneljét, és másolja a Tárfiók nevét és a Kulcs értéket a kulcs1 szakaszban. Mindkét értékre szüksége van a Függvény létrehozása és egy Event Grid-előfizetés hozzáadása szakaszban.

    Képernyőkép a tárfiók nevének és kulcsának másolásáról.

Geofence feltöltése az Azure Storage-fiókba

A geofence határozza meg a bérelt jármű hivatalos földrajzi területét. Az Azure-függvény geofence használatával állapítsa meg, hogy egy autó a földrajzi területen kívülre került-e.

Az Adatregisztrációs adatbázis létrehozása című cikkben ismertetett lépéseket követve töltse fel a geofence JSON-adatfájlt az Azure Storage-fiókjába, majd regisztrálja azt az Azure Térképek-fiókjában. Ügyeljen arra, hogy jegyezze fel az egyedi azonosító (udid) értékét, szüksége lesz rá. Így udid hivatkozhat a forráskódból az Azure Storage-fiókba feltöltött geofence-ra. A geoinformációs adatfájlokról további információt a Geofencing GeoJSON-adatok című témakörben talál.

IoT Hub létrehozása

Az IoT Hub biztonságos és megbízható kétirányú kommunikációt tesz lehetővé egy IoT-alkalmazás és az általa kezelt eszközök között. Ebben az oktatóanyagban információt szeretne kapni a járműben lévő eszközről a bérelt autó helyének meghatározásához. Ebben a szakaszban egy IoT Hubot hoz létre a ContosoRental erőforráscsoporton belül. Ez a központ felelős az eszköz telemetriai eseményeinek közzétételéért.

Ha IoT Hubot szeretne létrehozni a ContosoRental erőforráscsoportban, kövesse az IoT Hub létrehozásának lépéseit.

Eszköz regisztrálása az IoT Hubon

Az eszközök csak akkor tudnak csatlakozni az IoT Hubhoz, ha regisztrálva vannak az IoT Hub identitásjegyzékében. Hozzon létre egyetlen eszközt inVehicleDevice néven. Az eszköz IoT Hubon belüli létrehozásához és regisztrálásához kövesse az új eszköz regisztrálásának lépéseit az IoT Hubon. Mindenképpen másolja ki az eszköz elsődleges kapcsolati sztring. Erre később még szüksége lesz.

Függvény létrehozása és Event Grid-előfizetés hozzáadása

Az Azure Functions egy kiszolgáló nélküli számítási szolgáltatás, amely lehetővé teszi kis kódrészletek ("függvények") futtatását anélkül, hogy explicit módon ki kellene építenie vagy kezelnie kellene a számítási infrastruktúrát. További információ: Azure Functions.

Egy függvényt egy adott esemény aktivál. Event Grid-eseményindító által aktivált függvény létrehozása. Az eseményindító és a függvény közötti kapcsolat létrehozásához hozzon létre egy esemény-előfizetést az IoT Hub-eszköz telemetriai eseményeihez. Amikor eszköztelemetria-esemény történik, a függvény végpontként lesz meghívva, és megkapja a korábban az IoT Hubban regisztrált eszköz vonatkozó adatait.

Íme a függvény által tartalmazott C#-szkriptkód .

Most állítsa be az Azure-függvényt.

  1. Az Azure Portal irányítópultján válassza az Erőforrás létrehozása lehetőséget. Írja be a függvényalkalmazást a keresőmezőbe. Válassza a Függvényalkalmazás>létrehozása lehetőséget.

  2. A Függvényalkalmazás létrehozása lapon nevezze el a függvényalkalmazást. Az Erőforráscsoport területen válassza a ContosoRental elemet a legördülő listából. Válassza a .NET-et futtatókörnyezeti veremként. A lap alján válassza a Tovább: Tárolás lehetőséget >.

    Függvényalkalmazás létrehozásának képernyőképe.

  3. Storage-fiók esetén válassza ki az Azure Storage-fiók létrehozásakor létrehozott tárfiókot. Válassza az Áttekintés + létrehozás lehetőséget.

  4. Tekintse át a függvényalkalmazás részleteit, és válassza a Létrehozás lehetőséget.

  5. Az alkalmazás létrehozása után hozzá kell adnia egy függvényt. Nyissa meg a függvényalkalmazást. Válassza a Létrehozás az Azure Portalon gombot.

    Fontos

    Az Azure Event Hub-eseményindító és az Azure Event Grid-eseményindító-sablonok hasonló nevűek. Győződjön meg arról, hogy az Azure Event Grid-eseményindító sablont választja.

    Képernyőkép egy függvény azure portalon való létrehozásáról.

  6. Megjelenik a Függvény létrehozása panel. Görgessen le a Sablon kiválasztása panelen, és válassza az Azure Event Grid-eseményindítót , majd a Létrehozás gombot.

    Egy függvény létrehozásának képernyőképe.

  7. Adjon nevet a függvénynek. Ebben az oktatóanyagban használja a GetGeoFunction nevet, de általában bármilyen nevet használhat. Válassza a Függvény létrehozása lehetőséget.

  8. A bal oldali menüben válassza a Kód + Teszt panelt. Másolja és illessze be a C#-szkriptet a kódablakba.

    A kód beillesztésének másolása/képernyőképe a függvényablakba.

  9. A C# kódban cserélje le a következő paramétereket:

    • Cserélje le SUBSCRIPTION_KEY az Azure Térképek-fiók előfizetési kulcsára.
    • Cserélje le az UDID-t a udid geofence feltöltése az Azure Storage-fiókba feltöltött geofence-ra.
    • A CreateBlobAsync szkript függvénye eseményenként létrehoz egy blobot az adattárfiókban. Cserélje le a ACCESS_KEY, ACCOUNT_NAME és STORAGE_CONTAINER_NAME a tárfiók hozzáférési kulcsára, a fiók nevére és az adattároló tárolójára. Ezek az értékek akkor lettek létrehozva, amikor létrehozta a tárfiókot egy Azure-tárfiók létrehozásakor.
  10. A bal oldali menüben válassza az Integráció panelt. Válassza az Event Grid-eseményindítót a diagramon. Írja be az eseményindító nevét, az eventGridEvent nevet, és válassza az Event Grid-előfizetés létrehozása lehetőséget.

    Képernyőkép az esemény-előfizetés hozzáadásáról.

  11. Töltse ki az előfizetés adatait. Nevezze el az esemény-előfizetést. Eseményséma esetén válassza az Event Grid-séma lehetőséget. Témakörtípusok esetén válassza az Azure IoT Hub-fiókok lehetőséget. Erőforráscsoport esetén válassza ki az oktatóanyag elején létrehozott erőforráscsoportot. Erőforrás esetén válassza ki az "Azure IoT Hub létrehozása" szakaszban létrehozott IoT Hubot. Az eseménytípusokra való szűréshez válassza az Eszköz telemetria lehetőséget.

    A beállítások kiválasztása után a témakör típusa IoT Hubra változik. A rendszertémakör neve esetén ugyanazt a nevet használhatja, mint az erőforrás. Végül a Végpont részletei szakaszban válassza a Végpont kiválasztása lehetőséget. Fogadja el az összes beállítást, és válassza a Kijelölés megerősítése lehetőséget.

    Képernyőkép az esemény-előfizetés létrehozásáról.

  12. Tekintse át a beállításokat. Győződjön meg arról, hogy a végpont megadja a szakasz elején létrehozott függvényt. Válassza a Létrehozás lehetőséget.

    Képernyőkép az esemény-előfizetés létrehozásának megerősítéséről.

  13. Most visszatért az Eseményindító szerkesztése panelre. Válassza a Mentés lehetőséget.

Események szűrése az IoT Hub üzenet-útválasztásával

Amikor Event Grid-előfizetést ad hozzá az Azure-függvényhez, a rendszer automatikusan létrehoz egy üzenetkezelési útvonalat a megadott IoT Hubon. Az üzenet-útválasztással különböző adattípusokat irányíthat különböző végpontokra. Átirányíthatja például az eszköz telemetriai üzeneteit, az eszköz életciklus-eseményeit és az ikereszköz-változási eseményeket. További információ: Az IoT Hub üzenet-útválasztásának használata.

Képernyőkép az üzenet-útválasztásról az IoT Hubban.

A példaforgatókönyvben csak akkor szeretne üzeneteket kapni, ha a bérautó mozog. Hozzon létre egy útválasztási lekérdezést azoknak az eseményeknek a szűréséhez, ahol a Engine tulajdonság értéke "ON". Útválasztási lekérdezés létrehozásához válassza ki a RouteToEventGrid útvonalat, és cserélje le az útválasztási lekérdezést a "Engine='ON" kifejezésre. Ezután válassza a Mentés lehetőséget. Most az IoT Hub csak akkor teszi közzé az eszköz telemetriáját, ha a motor be van kapcsolva.

Képernyőkép a szűrő útválasztási üzeneteiről.

Tipp.

Az IoT-eszközökről a felhőbe irányuló üzeneteket többféleképpen is lekérdezheti. Az üzenet-útválasztás szintaxisáról az IoT Hub üzenet-útválasztása című témakörben olvashat bővebben.

Telemetriai adatok küldése az IoT Hubra

Amikor az Azure-függvény fut, telemetriaadatokat küldhet az IoT Hubnak, amely az Event Gridbe irányítja azokat. C#-alkalmazással szimulálhatja egy bérelt autó járművön belüli eszközének helyadatait. Az alkalmazás futtatásához .NET SDK 6.0-ra van szükség a fejlesztői számítógépen. A szimulált telemetriai adatok IoT Hubra való küldéséhez kövesse az alábbi lépéseket:

  1. Ha még nem tette meg, töltse le a rentalCarSimulation C# projektet.

  2. Nyissa meg a simulatedCar.cs fájlt egy tetszőleges szövegszerkesztőben, és cserélje le a connectionString fájl értékét az eszköz regisztrálásakor mentettre. Mentse a fájl módosításait.

  3. Győződjön meg arról, hogy a ASP.NET Core Runtime telepítve van a gépen. A helyi terminálablakban nyissa meg a C# projekt gyökérmappáját, és futtassa a következő parancsot a szimulált eszközalkalmazáshoz szükséges csomagok telepítéséhez:

    dotnet restore
    
  4. Ugyanazon a terminálon futtassa a következő parancsot a bérautó-szimulációs alkalmazás létrehozásához és futtatásához:

    dotnet run
    

A helyi terminálnak az alábbi képernyőképhez hasonlóan kell kinéznie.

Képernyőkép a terminálkimenetről.

Ha most nyitja meg a blobtárolót, négy blob jelenik meg azokhoz a helyekhez, ahol a jármű a földrajzi területen kívül volt.

A tárolón belüli blobok megtekintésének képernyőképe.

Az alábbi térkép négy, a geofencen kívüli járműhelyet ábrázol. Minden helyet rendszeres időközönként naplóztak.

Képernyőkép a szabálysértési térképről.

Az Azure Térképek és az IoT felfedezése

Az oktatóanyagban használt Azure Térképek API-k megismeréséhez lásd:

Az Azure Térképek REST API-k teljes listáját lásd:

Az IoT-hez Azure-tanúsítvánnyal rendelkező eszközök listájának lekéréséhez látogasson el a következőre:

Az erőforrások eltávolítása

Nincsenek olyan erőforrások, amelyek karbantartást igényelnek.

Következő lépések

Ha többet szeretne megtudni az eszközről a felhőbe irányuló telemetriai adatok küldéséről, és fordítva, tekintse meg a következőt: