Kurz: implementace prostorových analýz 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 loďstva, sledování prostředků, mobilita a aplikace pro inteligentní město. tento kurz vás provede řešením, které sleduje využitý pohyb auta pomocí Azure Maps rozhraní api.
V tomto kurzu provedete tyto kroky:
- Vytvořte účet úložiště Azure pro protokolování dat sledování auta.
- Upload geografická ochranná služba pro Azure Maps datovou službu pomocí rozhraní API pro Upload dat.
- Vytvořte centrum v Azure IoT Hub a zaregistrujte zařízení.
- vytvořte funkci v Azure Functions, implementujte obchodní logiku na základě Azure Maps prostorových analýz.
- Přihlaste se k odběru událostí telemetrie zařízení IoT pomocí služby Azure Functions prostřednictvím Azure Event Grid.
- Vyfiltrujte události telemetrie pomocí IoT Hub směrování zpráv.
Požadavky
Přihlaste se k webu Azure Portal.
Získejte primární klíč předplatného, označovaný také jako primární klíč nebo klíč předplatného. Další informace najdete v tématu Správa ověřování v Azure Maps.
Vytvořte skupinu prostředků. V tomto kurzu pojmenujte naši skupinu prostředků ContosoRental, ale můžete si vybrat libovolný název.
Stáhněte projekt RentalCarSimulation C#.
V tomto kurzu se používá aplikace po aplikaci, ale můžete zvolit jiné vývojové prostředí API.
Případ použití: sledování auta pronájmu
Řekněme, že společnost pro nájem auta chce do protokolu zaprotokolovat informace o poloze, ujeté vzdálenosti a stavu spuštění pro své půjčovny automobilů. Společnost také chce tyto informace uložit vždy, když automobil opustí správnou geografickou oblast.
Půjčovna vozidel jsou vybavená zařízeními IoT, která pravidelně odesílají data telemetrie IoT Hub. Telemetrie zahrnuje aktuální umístění a označuje, jestli je modul auta spuštěný. Schéma umístění zařízení dodržuje schéma IoT technologie Plug and Play pro geoprostorové údaje. Schéma telemetrie zařízení automobilového auta vypadá jako v následujícím kódu 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 jenom jedno vozidlo. Po nastavení služeb Azure budete muset stáhnout projekt RentalCarSimulation C# , aby se spustil simulátor vozidla. Celý proces, od události až po spuštění funkce, je shrnutý v následujících krocích:
Zařízení v rámci vozidla odesílá data telemetrie IoT Hub.
Pokud je modul auta spuštěný, centrum publikuje data telemetrie a Event Grid.
Aktivuje se funkce Azure Function z důvodu jejich odběru událostí telemetrie zařízení.
Funkce zaznamená souřadnice umístění zařízení vozidlo, čas události a ID zařízení. Pak použije rozhraní API prostorového geografického zobrazení k určení, jestli je automobil řízený mimo geografickou oblast. Pokud se provedlo cestování mimo hranice geografické oblasti, funkce uloží data umístění přijatá z události do kontejneru objektů BLOB. Funkce také dotazuje adresu hledání zpět , aby přeložila umístění souřadnic na ulici a ukládá je do zbytku dat o umístění zařízení.
Následující diagram znázorňuje přehled systému na nejvyšší úrovni.
Následující obrázek zvýrazňuje oblast geografického rozkladu modře. Trasa k půjčovně aut je označena zelenou čárou.
Vytvoření účtu úložiště Azure
Pokud chcete uložit data sledování narušení auta, vytvořte ve skupině prostředků účet úložiště pro obecné účely v2 . Pokud jste ještě nevytvořili skupinu prostředků, postupujte podle pokynů v části Vytvoření skupiny prostředků. V tomto kurzu 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 sami.
Po úspěšném vytvoření účtu úložiště je nutné vytvořit kontejner pro uložení dat protokolování.
Přejít na nově vytvořený účet úložiště. V části základy vyberte odkaz kontejnery .
V levém horním rohu vyberte + kontejner. Panel se zobrazí na pravé straně prohlížeče. Pojmenujte kontejner Contoso-pronájem-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 Storage a hodnotu klíče do oddílu klíč1 . Obě tyto hodnoty budete potřebovat v části Vytvoření funkce Azure a přidání předplatného Event Grid.
Upload geografickou ochranou
V dalším kroku odešlete geografickou ochranou do Azure Mapsu aplikaci po odeslání. Geografická oblast definuje oprávněnou geografickou oblast pro naše vozidlo pronájmu. K určení, jestli se automobil přesunul mimo oblast geografické oblasti, budete používat geografickou oblast ve službě Azure Function.
pomocí těchto kroků nahrajte geografickou ochranou pomocí rozhraní Azure Maps Data Upload API:
Otevřete aplikaci pro vystavování, znovu vyberte Nový . V okně vytvořit nové vyberte požadavek HTTP a zadejte název žádosti.
na kartě tvůrce vyberte metodu POST HTTP a zadejte následující adresu URL pro nahrání geografického ohraničení do rozhraní Data Upload API. Nezapomeňte nahradit
{Your-Azure-Maps-Primary-Subscription-key}primární klíč předplatného.https://us.atlas.microsoft.com/mapData?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=2.0&dataFormat=geojsonV cestě URL
geojsonhodnota sdataFormatparametrem představuje formát dat odesílaných.Jako formát vstupu vyberte tělo > raw a v rozevíracím seznamu zvolte JSON . Otevřete datový soubor JSONa zkopírujte kód JSON do části text. Vyberte Odeslat.
Vyberte Odeslat a počkejte na zpracování žádosti. Po dokončení žádosti přejít na kartu hlavičky odpovědi. Zkopírujte hodnotu klíče umístění operace , což je
status URL.https://us.atlas.microsoft.com/mapData/operations/{operationId}?api-version=2.0Chcete-li zjistit stav volání rozhraní API, vytvořte požadavek Get http na
status URL. K adrese URL pro ověření budete muset připojit primární klíč předplatného. Požadavek Get by měl vypadat jako následující adresa URL:https://us.atlas.microsoft.com/mapData/{operationId}/status?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}Po úspěšném dokončení žádosti vyberte v okně odpověď kartu hlavičky . Zkopírujte hodnotu klíče umístění prostředku , což je
resource location URL.resource location URLObsahuje jedinečný identifikátor (udid) nahraných dat. Zkopírujte si houdidpro pozdější použití v tomto kurzu.
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 ze zařízení v rámci vozidla, abyste zjistili umístění půjčovny. V této části vytvoříte centrum IoT v rámci skupiny prostředků ContosoRental . Tento rozbočovač bude zodpovědný za publikování událostí telemetrie zařízení.
Pokud chcete ve skupině prostředků ContosoRental vytvořit centrum IoT, postupujte podle kroků v části Vytvoření služby IoT Hub.
Registrace zařízení ve službě IoT Hub
Zařízení se nemůžou připojit ke službě IoT Hub, pokud se nezaregistrují v registru identit centra IoT. Tady vytvoříte jedno zařízení s názvem, InVehicleDevice. Pokud chcete zařízení vytvořit a zaregistrovat v rámci služby IoT Hub, postupujte podle kroků v části Registrace nového zařízení ve službě IoT Hub. Nezapomeňte zkopírovat primární připojovací řetězec vašeho zařízení. Budete ho potřebovat později.
Vytvoření funkce a přidání předplatného Event Grid
Azure Functions je výpočetní služba bez serveru, která umožňuje spustit malé části kódu ("funkce") bez nutnosti explicitně zřizovat nebo spravovat výpočetní infrastrukturu. Další informace najdete v tématu Azure Functions.
Funkce se aktivuje určitou událostí. Tady vytvoříte funkci, která se aktivuje triggerem Event Grid triggerem. Vytvořte vztah mezi triggerem a funkcí vytvořením odběru událostí pro IoT Hub telemetrie zařízení. 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 v IoT Hub.
Tady je kód skriptu jazyka C#, který bude vaše funkce obsahovat.
Teď nastavte funkci Azure.
Na řídicím Azure Portal vyberte Vytvořit prostředek. Do textového pole hledání zadejte Function App. Vyberte Function App > Create.
Na stránce pro vytvoření aplikace funkcí pojmete aplikaci funkcí. V části Skupina prostředků vyberte z rozevíracího seznamu ContosoRental. Jako Zásobník modulu runtime vyberte .NET. Jako Verzi vyberte 3.1. V dolní části stránky vyberte Další: Hostování >.
Pro Storage ú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 podokno Funkce. V horní části stránky vyberte + Přidat. Zobrazí se panel šablony funkce. Posuňte se dolů na panelu a vyberte Azure Event Grid trigger.
Důležité
Trigger centra událostí Azure a šablony triggerů Azure Event Grid mají podobné názvy. Nezapomeňte vybrat šablonu Azure Event Grid triggeru.
Pojmete funkci. V tomto kurzu použijete název GetGeoFunction, ale obecně můžete použít libovolný název. Vyberte Create function (Vytvořit funkci).
V nabídce vlevo vyberte podokno Kód + testování. Zkopírujte skript jazyka C# a vložte ho do okna kódu.
V kódu C# nahraďte následující parametry:
- Nahraďte SUBSCRIPTION_KEY primárním klíčem předplatného vašeho Mapy účtu Azure.
- Nahraďte UDID
udidgeofence, kterou jste nahráli v Upload geografické oblasti. - Funkce
CreateBlobAsyncve skriptu vytvoří objekt blob pro každou událost v účtu úložiště dat. Nahraďte ACCESS_KEY, ACCOUNT_NAME a STORAGE_CONTAINER_NAME přístupový klíč účtu úložiště, název účtu a kontejner úložiště dat. Tyto hodnoty se vygenerovaly při vytvoření účtu úložiště v tématu Vytvoření účtu úložiště Azure.
V nabídce vlevo vyberte podokno Integrace. V Event Grid vyberte Aktivační událost. Zadejte název triggeru eventGridEvent a vyberte Vytvořit Event Grid předplatného.
Vyplňte podrobnosti o předplatném. Pojmete odběr události. V seznamu Schéma událostí vyberte Event Grid Schématu událostí. V části Typy témat vyberte Azure IoT Hub Účty. 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. U možnosti Filtrovat na Typy událostí vyberte Telemetrie zařízení.
Po výběru těchto možností uvidíte změnu 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. Vyberte Uložit.
Filtrování událostí pomocí směrování IoT Hub zpráv
Když do funkce Azure Event Grid předplatné, 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 zprávy telemetrie 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í IoT Hub zpráv.
V tomto příkladu chcete dostávat zprávy jenom v případě, že se auto pronajímá. Vytvořte dotaz směrování pro filtrování událostí, kde Engine se vlastnost rovná ON. Pokud chcete vytvořit dotaz směrování, vyberte trasu RouteToEventGrid a nahraďte dotaz směrování řetězcem "Engine='ON". Pak vyberte Uložit. Centrum IoT teď publikuje jenom telemetrii zařízení, ve které je modul.
Tip
Existují různé způsoby dotazování zpráv IoT ze zařízení do cloudu. Další informace o syntaxi směrování zpráv najdete v tématu IoT Hub směrování zpráv.
Odesílání telemetrických dat do IoT Hub
Když je funkce Azure spuštěná, můžete teď odesílat telemetrická data do centra IoT, které je bude směrovat do Event Grid. Pomocí aplikace v jazyce C# můžete simulovat údaje o poloze auta, které se nachází ve vozidlech. Ke spuštění aplikace potřebujete na vývojovém počítači .NET Core SDK verze 2.1.0 nebo novější. Pomocí následujícího postupu odešlete simulovaná telemetrická data do centra IoT:
Pokud jste to ještě neudělali, stáhněte si projekt rentalCarSimulation jazyka C#.
Otevřete soubor v textovém editoru podle vašeho výběru a nahraďte hodnotu hodnotou , kterou jste uložili
simulatedCar.csconnectionStringpři registraci zařízení. Uložte změny souboru.Ujistěte se, že na svém počítači máte nainstalované .NET Core. 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 restoreVe stejném terminálu spusťte následující příkaz, který sestaví a spustí aplikaci simulace aut pro půjčování aut:
dotnet run
Místní terminál by měl vypadat jako v následujícím příkladu.
Pokud teď otevřete kontejner úložiště objektů blob, uvidíte čtyři objekty blob pro umístění, kde se vozidlo nachází mimo geografickou polohu.
Následující mapa ukazuje čtyři body polohy vozidel mimo geofence. Každé umístění se protokoluje v pravidelných časových intervalech.
Prozkoumání Azure Mapy a IoT
Pokud chcete prozkoumat rozhraní API služby Azure Mapy použitá v tomto kurzu, projděte si:
Úplný seznam rozhraní REST API služby Azure Mapy najdete v těchto tématu:
Seznam zařízení, která jsou v Azure Certified for IoT, získáte na webu:
Vyčištění prostředků
Nejsou k dispozici žádné prostředky, které vyžadují vyčištění.
Další kroky
Další informace o tom, jak odeslat telemetrii ze zařízení do cloudu a druhý postup, najdete v těchto tématech: