Sdílet prostřednictvím


Kurz: Implementace prostorové analýzy IoT pomocí Azure Maps

Ve scénáři IoT je běžné zaznamenávat a sledovat relevantní události, ke kterým dochází v prostoru a čase. Mezi příklady patří správa vozového parku, sledování prostředků, mobilita a aplikace inteligentních měst. Tento kurz vás provede řešením, které sleduje pohyby aut pomocí rozhraní API služby Azure Maps.

V tomto kurzu:

  • Vytvořte účet úložiště Azure pro protokolování dat sledování aut.
  • Nahrajte geografickoufenci do účtu úložiště Azure.
  • Vytvořte centrum ve službě Azure IoT Hub a zaregistrujte zařízení.
  • Vytvořte funkci ve službě Azure Functions a implementte obchodní logiku založenou na prostorové analýze Azure Maps.
  • Přihlaste se k odběru událostí telemetrie zařízení IoT z funkce Azure prostřednictvím Azure Event Gridu.
  • Vyfiltrujte telemetrické události pomocí směrování zpráv ioT Hubu.

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Tip

Celý projekt rentalCarSimulation C# si můžete stáhnout z GitHubu jako jeden soubor ZIP tak, že přejdete do kořenového adresáře ukázky a vyberete zelené tlačítko Kód a pak stáhnete ZIP.

Tento kurz používá aplikaci bruno , ale můžete zvolit jiné vývojové prostředí rozhraní API.

Důležité

V příkladech adres URL nahraďte {Your-Azure-Maps-Subscription-key} klíčem předplatného Azure Maps.

Případ použití: půjčovna aut sledování

Řekněme, že autopůjčovna chce protokolovat informace o poloze, vzdálenost cestování a provozní stav pro své pronájem aut. Společnost chce tyto informace uložit také pokaždé, když auto opustí správnou autorizovanou geografickou oblast.

Pronájem aut jsou vybavena zařízeními IoT, která pravidelně odesílají telemetrická data do IoT Hubu. Telemetrie zahrnuje aktuální umístění a označuje, jestli je motor auta spuštěný. Schéma umístění zařízení dodržuje schéma ioT technologie Plug and Play pro geoprostorová data. Schéma telemetrie zařízení pronájem auta vypadá jako následující kód JSON:

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

V tomto kurzu sledujete pouze jedno vozidlo. Po nastavení služeb Azure je potřeba stáhnout projekt rentalCarSimulation C#, aby se spustil simulátor vozidla. Celý proces od události po spuštění funkce je shrnutý v následujících krocích:

  1. Zařízení ve vozidle odesílá telemetrická data do IoT Hubu.

  2. Pokud je motor auta spuštěný, centrum publikuje telemetrická data do Event Gridu.

  3. Funkce Azure se aktivuje kvůli odběru událostí telemetrických událostí zařízení.

  4. Funkce zaznamená souřadnice polohy zařízení vozidla, čas události a ID zařízení. Pak pomocí rozhraní API Spatial Geofence Get určí, jestli auto jelo mimo geofence. Pokud se přesune mimo hranice geografické zóny, uloží funkce data o poloze přijatá z události do kontejneru objektů blob. Funkce se také dotazuje na zpětnou adresu vyhledávání, aby přeložil umístění souřadnic na adresu ulice a ukládá ho se zbývajícími daty o poloze zařízení.

Následující diagram znázorňuje základní přehled systému.

Diagram přehledu systému

Následující obrázek zvýrazňuje oblast geografické zóny modře. Trasa pro pronájem auta je označená zelenou linkou.

Obrázek znázorňující trasu geografické zóny

Vytvoření účtu úložiště Azure

Pokud chcete ukládat data sledování porušení pravidel, vytvořte ve skupině prostředků účet úložiště pro obecné účely verze 2. Pokud jste skupinu prostředků nevytvořili, postupujte podle pokynů ve vytváření skupin prostředků. Pojmenujte skupinu prostředků ContosoRental.

Pokud chcete vytvořit účet úložiště, postupujte podle pokynů v části Vytvoření účtu úložiště. V tomto kurzu pojmenujte účet úložiště contosorentalstorage, ale obecně ho můžete pojmenovat libovolným způsobem.

Po úspěšném vytvoření účtu úložiště je potřeba vytvořit kontejner pro ukládání dat protokolování.

  1. Přejděte na nově vytvořený účet úložiště. V části Základy vyberte odkaz Kontejnery.

    Snímek obrazovky s kontejnery pro úložiště objektů blob

  2. V levém horním rohu vyberte + Kontejner. Na pravé straně prohlížeče se zobrazí panel. Pojmenujte kontejner contoso-rental-logs a vyberte Vytvořit.

    Snímek obrazovky s vytvořením kontejneru objektů blob

  3. Přejděte do podokna Přístupové klíče v účtu úložiště a zkopírujte název účtu úložiště a hodnotu klíče v části klíč1 . Obě tyto hodnoty potřebujete v části Vytvořit funkci a přidat oddíl odběru Event Gridu.

    Snímek obrazovky s názvem a klíčem účtu úložiště kopírování

Nahrání geografické zóny do účtu úložiště Azure

Geofence definuje autorizovanou geografickou oblast pro naše pronájem vozidla. Pomocí geografické zóny ve funkci Azure zjistěte, jestli se auto přesunulo mimo oblast geografické zóny.

Postupujte podle kroků popsaných v článku Vytvoření registru dat a nahrajte datový soubor JSON geofence do účtu úložiště Azure a pak ho zaregistrujte ve svém účtu Azure Maps. Nezapomeňte si poznamenat hodnotu jedinečného identifikátoru (udid) a budete ji potřebovat. Způsob udid , jakým odkazujete na geografickoufenci, kterou jste nahráli do účtu úložiště Azure ze zdrojového kódu. Další informace o datových souborech geofence naleznete v tématu Geofencing GeoJSON data.

Vytvoření centra IoT

IoT Hub umožňuje zabezpečenou a spolehlivou obousměrnou komunikaci mezi aplikací IoT a zařízeními, která spravuje. Pro účely tohoto kurzu chcete získat informace z vašeho zařízení ve vozidle, abyste zjistili umístění pronájem auta. V této části vytvoříte centrum IoT ve skupině prostředků ContosoRental . Toto centrum zodpovídá za publikování událostí telemetrie zařízení.

Pokud chcete vytvořit centrum IoT ve skupině prostředků ContosoRental , postupujte podle kroků v vytvoření centra IoT.

Registrace zařízení ve službě IoT Hub

Zařízení se nemůžou připojit k centru IoT, pokud nejsou zaregistrovaná v registru identit služby IoT Hub. Vytvořte jedno zařízení s názvem InVehicleDevice. Pokud chcete vytvořit a zaregistrovat zařízení v centru IoT, postupujte podle kroků v registraci nového zařízení v centru IoT. Nezapomeňte zkopírovat primární připojovací řetězec zařízení. Budete ho totiž potřebovat později.

Vytvoření funkce a přidání odběru Event Gridu

Azure Functions je bezserverová výpočetní služba, která umožňuje spouštět malé části kódu ("funkce"), aniž byste museli explicitně zřizovat nebo spravovat výpočetní infrastrukturu. Další informace najdete v tématu Azure Functions.

Funkce se aktivuje určitou událostí. Vytvořte funkci aktivovanou triggerem Event Gridu. Vytvořte relaci mezi triggerem a funkcí vytvořením odběru událostí pro události telemetrie zařízení IoT Hubu. Když dojde k události telemetrie zařízení, vaše funkce se volá jako koncový bod a přijímá relevantní data pro zařízení, které jste předtím zaregistrovali ve službě IoT Hub.

Tady je kód skriptu jazyka C#, který vaše funkce obsahuje.

Teď nastavte funkci Azure.

  1. Na řídicím panelu webu Azure Portal vyberte Vytvořit prostředek. Do vyhledávacího textového pole zadejte aplikaci funkcí. Vyberte Vytvořit aplikaci>funkcí.

  2. Na stránce pro vytvoření aplikace funkcí pojmenujte svou aplikaci funkcí. V části Skupina prostředků vyberte v rozevíracím seznamu ContosoRental . Jako zásobník modulu runtime vyberte .NET. V dolní části stránky vyberte Další: Úložiště >.

    Snímek obrazovky s vytvořením aplikace funkcí

  3. V části Účet úložiště vyberte účet úložiště, který jste vytvořili v části Vytvoření účtu úložiště Azure. Vyberte Zkontrolovat a vytvořit.

  4. Zkontrolujte podrobnosti aplikace funkcí a vyberte Vytvořit.

  5. Po vytvoření aplikace do ní přidáte funkci. Přejděte do aplikace funkcí. Vyberte tlačítko Vytvořit na webu Azure Portal.

    Důležité

    Trigger centra událostí Azure a šablony triggerů služby Azure Event Grid mají podobné názvy. Ujistěte se, že jste vybrali šablonu triggeru služby Azure Event Grid.

    Snímek obrazovky s vytvořením funkce na webu Azure Portal

  6. Zobrazí se panel Vytvořit funkci . Posuňte se dolů na panel Vybrat šablonu a vyberte trigger služby Azure Event Grid a pak vyberte tlačítko Vytvořit .

    Snímek obrazovky s vytvořením funkce

  7. Pojmenujte funkci. V tomto kurzu použijte název GetGeoFunction, ale obecně můžete použít libovolný název, který se vám líbí. Vyberte Vytvořit funkci.

  8. V nabídce vlevo vyberte podokno Kód a testování . Zkopírujte a vložte skript jazyka C# do okna kódu.

    Kopírovat/Snímek obrazovky s vložením kódu do okna funkce

  9. V kódu jazyka C# nahraďte následující parametry:

    • Nahraďte SUBSCRIPTION_KEY klíčem předplatného účtu Azure Maps.
    • Nahraďte identifikátor UDID geofencem udid , který jste nahráli do svého účtu úložiště Azure.
    • Funkce CreateBlobAsync ve skriptu vytvoří objekt blob na událost v účtu úložiště dat. Nahraďte ACCESS_KEY, ACCOUNT_NAME a STORAGE_CONTAINER_NAME přístupovým klíčem, názvem účtu a kontejnerem úložiště dat. Tyto hodnoty se vygenerovaly při vytváření účtu úložiště v části Vytvoření účtu úložiště Azure.
  10. V nabídce vlevo vyberte podokno Integrace . V diagramu vyberte trigger Event Gridu. Zadejte název triggeru, eventGridEvent a vyberte Vytvořit odběr Event Gridu.

    Snímek obrazovky s přidáním odběru událostí

  11. Vyplňte podrobnosti o předplatném. Pojmenujte odběr události. V případě schématu událostí vyberte schéma Event Gridu. V části Typy témat vyberte účty Azure IoT Hubu. V části Skupina prostředků vyberte skupinu prostředků, kterou jste vytvořili na začátku tohoto kurzu. V části Prostředek vyberte centrum IoT, které jste vytvořili v části Vytvoření centra Azure IoT. Jako filtr na typy událostí vyberte Telemetrie zařízení.

    Po výběru těchto možností se zobrazí změna typu tématu na IoT Hub. Jako název systémového tématu můžete použít stejný název jako váš prostředek. Nakonec v části Podrobnosti o koncovém bodu vyberte Vybrat koncový bod. Přijměte všechna nastavení a vyberte Potvrdit výběr.

    Snímek obrazovky s vytvořením odběru událostí

  12. Zkontrolujte nastavení. Ujistěte se, že koncový bod určuje funkci, kterou jste vytvořili na začátku této části. Vyberte Vytvořit.

    Snímek obrazovky s potvrzením vytvoření odběru událostí

  13. Teď jste zpátky na panelu Upravit aktivační událost . Zvolte Uložit.

Filtrování událostí pomocí směrování zpráv ioT Hubu

Když do funkce Azure přidáte odběr služby Event Grid, v zadaném centru IoT se automaticky vytvoří trasa zasílání zpráv. Směrování zpráv umožňuje směrovat různé datové typy do různých koncových bodů. Můžete například směrovat telemetrické zprávy zařízení, události životního cyklu zařízení a události změny dvojčete zařízení. Další informace najdete v tématu Použití směrování zpráv ioT Hubu.

Snímek obrazovky se směrováním zpráv ve službě IoT Hub

Ve vašem ukázkovém scénáři chcete přijímat zprávy pouze při přesouvání vozu s půjčováním. Vytvořte směrovací dotaz pro filtrování událostí, ve kterých se Engine vlastnost rovná hodnotě ON. Pokud chcete vytvořit směrovací dotaz, vyberte trasu RouteToEventGrid a nahraďte dotaz Směrování slovem Engine='ON'. Pak vyberte Uložit. Centrum IoT teď publikuje jenom telemetrii zařízení, ve které je modul zapnutý.

Snímek obrazovky se zprávami směrování filtru

Tip

Existují různé způsoby dotazování zpráv typu zařízení-cloud IoT. Další informace o syntaxi směrování zpráv najdete v tématu Směrování zpráv ve službě IoT Hub.

Odesílání telemetrických dat do IoT Hubu

Když je funkce Azure spuštěná, můžete teď odesílat telemetrická data do centra IoT, která je směruje do Event Gridu. Pomocí aplikace jazyka C# můžete simulovat údaje o poloze pro zařízení v autopůjčním vozidle. Ke spuštění aplikace potřebujete na vývojovém počítači sadu .NET SDK 6.0 . K odesílání simulovaných telemetrických dat do centra IoT postupujte takto:

  1. Pokud jste to ještě neudělali, stáhněte si projekt rentalCarSimulation C#.

  2. simulatedCar.cs Otevřete soubor v textovém editoru podle vašeho výběru a nahraďte hodnotu hodnotouconnectionString, kterou jste uložili při registraci zařízení. Uložte změny souboru.

  3. Ujistěte se, že máte na počítači nainstalovaný modul ASP.NET Core Runtime. V okně místního terminálu přejděte do kořenové složky projektu C# a spuštěním následujícího příkazu nainstalujte požadované balíčky pro aplikaci simulovaného zařízení:

    dotnet restore
    
  4. Ve stejném terminálu spusťte následující příkaz, který sestaví a spustí aplikaci simulace pronájem vozu:

    dotnet run
    

Místní terminál by měl vypadat jako na následujícím snímku obrazovky.

Snímek obrazovky s výstupem terminálu

Pokud teď otevřete kontejner úložiště objektů blob, uvidíte čtyři objekty blob pro umístění, kde bylo vozidlo mimo geografickoufenci.

Snímek obrazovky s zobrazením objektů blob uvnitř kontejneru

Následující mapa ukazuje čtyři body umístění vozidel mimo geofence. Každé umístění se protokolovalo v pravidelných časových intervalech.

Snímek obrazovky s mapou porušení

Prozkoumání Azure Maps a IoT

Pokud chcete prozkoumat rozhraní API služby Azure Maps používaná v tomto kurzu, přečtěte si:

Úplný seznam rozhraní REST API služby Azure Maps najdete tady:

Pokud chcete získat seznam zařízení, která jsou certifikovaná pro IoT, navštivte:

Vyčištění prostředků

Nejsou k dispozici žádné prostředky, které by vyžadovaly vyčištění.

Další kroky

Další informace o tom, jak odesílat telemetrická data ze zařízení do cloudu a naopak, najdete tady: