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.
- Účet Azure Maps
- Klíč předplatného
- Skupina prostředků
- Projekt rentalCarSimulation C#
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:
Zařízení ve vozidle odesílá telemetrická data do IoT Hubu.
Pokud je motor auta spuštěný, centrum publikuje telemetrická data do Event Gridu.
Funkce Azure se aktivuje kvůli odběru událostí telemetrických událostí zařízení.
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.
Následující obrázek zvýrazňuje oblast geografické zóny modře. Trasa pro pronájem auta je označená zelenou linkou.
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í.
Přejděte na nově vytvořený účet úložiště. V části Základy vyberte odkaz Kontejnery.
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.
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.
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.
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í.
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ě >.
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.
Zkontrolujte podrobnosti aplikace funkcí a vyberte Vytvořit.
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.
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 .
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.
V nabídce vlevo vyberte podokno Kód a testování . Zkopírujte a vložte skript jazyka C# do okna kódu.
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.
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.
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.
Zkontrolujte nastavení. Ujistěte se, že koncový bod určuje funkci, kterou jste vytvořili na začátku této části. Vyberte Vytvořit.
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.
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ý.
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:
Pokud jste to ještě neudělali, stáhněte si projekt rentalCarSimulation C#.
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.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
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.
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.
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.
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: