Použití IoT Hub zpráv k odesílání zpráv ze zařízení do cloudu do různých koncových bodů
Poznámka
Některé funkce uvedené v tomto článku, jako je zasílání zpráv z cloudu do zařízení, dvojčata zařízení a správa zařízení, jsou k dispozici ve službě IoT Hub pouze na úrovni Standard. Další informace o úrovních Basic a Standard služby IoT Hub najdete v návodu k výběru správné úrovně služby IoT Hub.
Směrování zpráv umožňuje posílat zprávy ze zařízení do cloudových služeb automatizovaným, škálovatelným a spolehlivým způsobem. Směrování zpráv lze použít pro:
Odesílání zpráv telemetrie zařízení a také událostí, konkrétně událostí životního cyklu zařízení, událostí změny dvojčete zařízení, událostí změny digitálního dvojčete a událostí stavu připojení zařízení do předdefinového koncového bodu a vlastních koncových bodů. Přečtěte si o koncových bodech směrování. Další informace o událostech odesílaných ze zařízení IoT Plug and Play najdete v tématu Principy IoT Plug and Play digitálních dvojčat.
Filtrování dat před jejich směrováním do různých koncových bodů pomocí bohatých dotazů Směrování zpráv umožňuje dotazovat se na vlastnosti zpráv a text zprávy a také na značky dvojčat zařízení a vlastnosti dvojčat zařízení. Přečtěte si další informace o používání dotazů při směrování zpráv.
IoT Hub ke koncovým bodům služby potřebuje oprávnění k zápisu, aby směrování zpráv fungovalo. Pokud nakonfigurujete koncové body prostřednictvím Azure Portal, přidávají se potřebná oprávnění. Nezapomeňte své služby nakonfigurovat tak, aby podporovaly očekávanou propustnost. Pokud například jako vlastní koncový bod používáte Event Hubs, musíte nakonfigurovat jednotky propustnosti pro toto centrum událostí, aby mohl zpracovávat příchozí přenosy událostí, které plánujete odesílat prostřednictvím směrování IoT Hub zpráv. Podobně při použití fronty Service Bus jako koncového bodu musíte nakonfigurovat maximální velikost, abyste zajistili, že fronta bude obsahovat všechna příchozí data, dokud ji spotřebiteli neskonfigurují. Při první konfiguraci řešení IoT možná budete muset monitorovat ostatní koncové body a provést potřebné úpravy skutečného zatížení.
Tento IoT Hub definuje společný formát pro všechny přenosy zpráv ze zařízení do cloudu, aby bylo zajištěna vzájemná funkční spolupráce mezi protokoly. Pokud zpráva odpovídá více trasám, které odkazují na stejný koncový bod, IoT Hub do tohoto koncového bodu pouze jednou. Proto není nutné konfigurovat odstranění duplicitních dat ve vaší frontě Service Bus tématu. V tomto kurzu se dozvíte, jak nakonfigurovat směrování zpráv.
Koncové body směrování
IoT Hub má výchozí integrovaný koncový bod (zprávy/události), který je kompatibilní s Event Hubs. Vlastní koncové body pro směrování zpráv můžete vytvořit propojením dalších služeb ve vašem předplatném s IoT Hub.
Každá zpráva se směruje do všech koncových bodů, jejichž dotazy směrování odpovídají. Jinými slovy, zpráva může být směrována do více koncových bodů.
Pokud má váš vlastní koncový bod konfigurace brány firewall, zvažte použití výjimky Důvěryhodné první strany Od Microsoftu.
IoT Hub aktuálně podporuje následující koncové body:
- Integrovaný koncový bod
- Azure Storage
- Service Bus Fronty a Service Bus témata
- Event Hubs
Integrovaný koncový bod jako koncový bod směrování
K příjmu zpráv typu zařízení-Event Hubs z integrovaného koncového bodu (zprávy/události) můžete použít standardní integrační Event Hubs a sdk. Po vytvoření trasy se data přesouvání do integrovaného koncového bodu zastaví, pokud se pro tento koncový bod nevytáčí trasa. I v případě, že nejsou vytvořeny žádné trasy, musí být povolena záložní trasa pro směrování zpráv do integrovaného koncového bodu. Záložní nastavení je ve výchozím nastavení povolené, pokud své centrum vytvoříte pomocí portálu nebo rozhraní příkazového řádku.
Azure Storage jako koncový bod směrování
Existují dvě služby úložiště, IoT Hub zprávy směrovat: Azure Blob Storage a Azure Data Lake Storage Gen2 (ADLS Gen2). Účty Azure Data Lake Storage jsou účty úložiště s povoleným hierarchickýmoborem názvů postavené na úložišti objektů blob. Oba tyto objekty blob používají pro své úložiště.
IoT Hub podporuje zápis dat do Azure Storage ve formátu Apache Avro a ve formátu JSON. Výchozí hodnota je AVRO. Při použití kódování JSON musíte ve vlastnostech systému zpráv nastavit contentType na application/json a contentEncoding na UTF-8. U obou těchto hodnot se velká a malá písmena nerozlišovat. Pokud kódování obsahu není nastavené, IoT Hub zprávy ve formátu kódování Base 64.
Formát kódování je možné nastavit pouze v případě, že je nakonfigurovaný koncový bod úložiště objektů blob. Nelze ho upravit pro existující koncový bod. Pokud chcete přepnout formáty kódování pro existující koncový bod, budete muset odstranit endoint a znovu ho vytvořit s formátem, který chcete. Jednou z užitečných strategií může být vytvoření nového vlastního koncového bodu s požadovaným formátem kódování a přidání paralelní trasy do tohoto koncového bodu. Tímto způsobem můžete ověřit data před odstraněním existujícího koncového bodu.
Formát kódování můžete vybrat pomocí příkazu IoT Hub Create or Update REST API, konkrétně RoutingStorageContainerProperties, Azure Portal, Azure CLI nebo Azure PowerShell. Následující obrázek ukazuje, jak vybrat formát kódování v Azure Portal.

IoT Hub dávky zpráv a zapisuje data do úložiště vždy, když dávka dosáhne určité velikosti nebo uplyne určitá doba. IoT Hub výchozí nastavení pro následující zásady vytváření názvů souborů:
{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
Můžete použít jakoukoli konvenci vytváření názvů souborů, musíte ale použít všechny uvedené tokeny. IoT Hub objekt blob zapíše do prázdného objektu blob, pokud neexistují žádná data k zápisu.
Doporučujeme vyjádřovat objekty blob nebo soubory a pak je iterovat, aby se zajistilo, že se všechny objekty blob nebo soubory čtou bez jakýchkoli předpokladů pro oddíly. Rozsah oddílů se může potenciálně změnit během převzetí služeb při selhání iniciované Microsoftem nebo IoT Hub ručního převzetí služeb při selhání. Pomocí rozhraní API pro seznam objektů blob můžete vytvořit výčet seznamu objektů blob nebo ADLS Gen2 seznam souborů v rozhraní API pro seznam objektů blob. Pokyny najdete v následující ukázce.
public void ListBlobsInContainer(string containerName, string iothub)
{
var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
if (cloudBlobContainer.Exists())
{
var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
foreach (IListBlobItem item in results)
{
Console.WriteLine(item.Uri);
}
}
}
Pokud chcete vytvořit účet úložiště kompatibilní s Azure Data Lake Gen2, vytvořte nový účet úložiště V2 a v poli Hierarchický obor názvů na kartě Upřesnit vyberte Povoleno, jak je znázorněno na následujícím obrázku:

Service Bus Fronty a Service Bus témata jako koncový bod směrování
Service Bus fronty a témata používané jako IoT Hub koncové body nesmí mít povolené relace nebo vyhledávání duplicit. Pokud je povolená která z těchto možností, zobrazí se koncový bod v okně Azure Portal.
Event Hubs jako koncový bod směrování
Kromě integrovaného koncového bodu kompatibilního Event Hubs můžete data také směrovat do vlastních koncových bodů typu Event Hubs.
Čtení směrovaných dat
Trasu můžete nakonfigurovat podle tohoto kurzu.
V následujících kurzech se dozvíte, jak číst zprávy z koncového bodu.
Čtení z integrovaného koncového bodu
Čtení ze služby Blob Storage
Čtení z Event Hubs
Čtení z Service Bus front
Čtení z Service Bus témat
Záložní trasa
Záložní trasa odesílá všechny zprávy, které nesplňuje podmínky dotazu na žádné z existujících tras, do integrovaného rozhraní Event Hubs (zprávy/události), která je kompatibilní s Event Hubs. Pokud je směrování zpráv zapnuté, můžete povolit funkci záložní trasy. Po vytvoření trasy přesstane tok dat do integrovaného koncového bodu, pokud se k tomu koncovému bodu nevytáčí trasa. Pokud neexistují žádné trasy k integrovanému koncovému bodu a je povolená záložní trasa, do integrovaného koncového bodu se budou odesílat pouze zprávy, které neodpovídají žádným podmínkám dotazu na trasách. Pokud se odstraní všechny existující trasy, musí být povolená záložní trasa pro příjem všech dat v integrovaném koncovém bodu.
Záložní trasu můžete povolit nebo zakázat v okně směrování Azure Portal->zpráv. Můžete také použít Azure Resource Manager pro FallbackRouteProperties a použít vlastní koncový bod pro záložní trasu.
Události bez telemetrie
Kromě telemetrie zařízení směrování zpráv také umožňuje odesílat události změny dvojčete zařízení, události životního cyklu zařízení, události změn digitálního dvojčete a události stavu připojení zařízení. Pokud se například vytvoří trasa se zdrojem dat nastaveným na události změny dvojčete zařízení , IoT Hub odešle zprávy koncovému bodu, který změnu ve dvojčete zařízení obsahuje. Podobně pokud se vytvoří trasa se zdrojem dat nastaveným na události životního cyklu zařízení, IoT Hub odešle zprávu s informací, jestli bylo zařízení odstraněno nebo vytvořeno. V rámci Azure IoT Plug and Playmůže vývojář vytvořit trasy se zdrojem dat nastaveným na události změny digitálního dvojčete a IoT Hub odesílá zprávy pokaždé, když je nastavená nebo změněná vlastnost digitálního dvojčete, digitální dvojče se nahradí nebo když dojde k události změny pro příslušné dvojče zařízení. Pokud se nakonec vytvoří trasa se zdrojem dat nastaveným na události stavu připojení zařízení , IoT Hub odešle zprávu s informací, jestli je zařízení připojené nebo odpojené.
IoT Hub se také integruje s Azure Event Grid pro publikování událostí zařízení pro podporu integrace v reálném čase a automatizace pracovních postupů založených na těchto událostech. Podívejte se na klíčové rozdíly mezi směrováním zpráv a Event Grid, abyste se dozvěděli, co je pro váš scénář nejlepší.
Omezení událostí stavu připojení zařízení
Pokud chcete přijímat události stavu připojení zařízení, musí zařízení volat buď telemetrii odesílání ze zařízení do cloudu, nebo operaci příjmu zpráv z cloudu do zařízení s IoT Hub. Pokud ale zařízení pro připojení ke službě IoT Hub používá protokol AMQP, doporučujeme, aby zařízení volalo operaci přijímání zpráv z cloudu na zařízení, jinak se oznámení o stavu připojení mohou zpozdit o několik minut. Pokud se vaše zařízení připojuje pomocí protokolu MQTT, IoT Hub udržuje propojení mezi cloudem a zařízením otevřené. Pokud chcete otevřít odkaz mezi cloudem a zařízením pro AMQP, zavolejte rozhraní API Receive Async.
Propojení zařízení-cloud zůstává otevřené, dokud zařízení odesílá telemetrii.
Pokud bliká připojení zařízení, což znamená, že pokud se zařízení připojuje a odpojuje často, IoT Hub neodesíleje všechny jednotlivé stavy připojení, ale publikuje aktuální stav připojení pořízený v pravidelných 60sekunových snímcích, dokud se blichání nezastaví. Příjem buď stejné události stavu připojení s různými pořadovámi čísly nebo různými událostmi stavu připojení, znamená to, že došlo ke změně stavu připojení zařízení.
Testování tras
Když vytvoříte novou trasu nebo upravíte existující trasu, měli byste dotaz na trasu otestovat s ukázkovou zprávou. Můžete otestovat jednotlivé trasy nebo otestovat všechny trasy najednou a během testu se do koncových bodů nesídí žádné zprávy. Azure Portal testování Azure Resource Manager, Azure PowerShell a Azure CLI. Výsledky pomáhají určit, jestli ukázková zpráva odpovídá dotazu, jestli se zpráva neshoduje s dotazem, nebo se test nespouštěl, protože ukázková zpráva nebo syntaxe dotazu není správná. Další informace najdete v tématu Testování trasy a testování všech tras.
Latence
Při směrování zpráv telemetrie zařízení-cloud pomocí integrovaných koncových bodů se po vytvoření první trasy mírně zvýší latence mezi zařízeními.
Ve většině případů je průměrné zvýšení latence menší než 500 ms. Latenci můžete monitorovat pomocí směrování: latence zpráv pro zprávy/události nebo d2c.endpoints.latency.builtIn.events IoT Hub metriky. Vytvoření nebo odstranění jakékoli trasy po první trase nemá vliv na koncovou latenci.
Monitorování a řešení potíží
IoT Hub několik metrik souvisejících se směrováním a koncovými body, abyste získali přehled o stavu centra a odesílaných zpráv. Seznam všech metrik monitorování IoT Hub podle funkční kategorie najdete v tématu Metriky v referenčních datech monitorování. Můžete sledovat chyby, ke kterým dochází při vyhodnocování dotazu směrování a stavu koncového bodu vnímané IoT Hub kategorií tras v protokolech IoT Hub prostředků. Další informace o používání metrik a protokolů prostředků s IoT Hub najdete v tématu Monitorování IoT Hub.
Stav koncových bodů REST API pomocí funkce Získat stav koncového bodu.
Další podrobnosti a podporu pro řešení potíží se směrováním najdete v průvodci odstraňováním potíží.
Další kroky
Informace o vytváření tras zpráv najdete v tématu IoT Hub zpráv zařízení-cloud pomocí tras.
Informace o nástroji SDK, které můžete použít k odesílání zpráv ze zařízení do cloudu, najdete v tématu Azure IoT SDK.