Toky zařízení ioT Hubu (Preview)

Datové proudy zařízení Azure IoT Hub usnadňují vytváření zabezpečených obousměrných tunelů TCP pro různé scénáře komunikace typu cloud-zařízení. Stream zařízení je zprostředkován koncovým bodem streamování ioT Hubu, který funguje jako proxy mezi vaším zařízením a koncovými body služby. Toto nastavení, které je znázorněno v následujícím diagramu, je zvlášť užitečné, když jsou zařízení za bránou firewall sítě nebo se nacházejí uvnitř privátní sítě. Datové proudy zařízení IoT Hubu tak pomáhají řešit potřebu zákazníků, aby se zařízení IoT dostala způsobem, který je přívětivý pro bránu firewall, a bez nutnosti široce otevírat příchozí nebo odchozí síťové porty brány firewall.

Pomocí streamů zařízení ioT Hubu zůstanou zařízení zabezpečená a budou muset otevírat odchozí připojení TCP ke koncovému bodu streamování ioT Hubu pouze přes port 443. Po vytvoření datového proudu budou mít aplikace na straně služby a na straně zařízení každý programový přístup k objektu klienta WebSocket pro odesílání a přijímání nezpracovaných bajtů do sebe. Záruky spolehlivosti a řazení poskytované tímto tunelem jsou v souladu s protokolem TCP.

Zaměstnanecké výhody

Streamy zařízení ioT Hubu poskytují následující výhody:

  • Zabezpečené připojení vhodné pro bránu firewall: Zařízení IoT se dají dostat z koncových bodů služby bez otevření portu příchozí brány firewall v zařízení nebo hraniční síti (přes port 443 je potřeba jenom odchozí připojení ke službě IoT Hub).

  • Ověřování: Strany tunelu zařízení i služby musí být ověřeny ve službě IoT Hub pomocí odpovídajících přihlašovacích údajů.

  • Šifrování: Ve výchozím nastavení streamy zařízení IoT Hubu používají připojení s povoleným protokolem TLS. Tím zajistíte, že se provoz vždy zašifruje bez ohledu na to, jestli aplikace používá šifrování, nebo ne.

  • Jednoduchost připojení: V mnoha případech použití datových proudů zařízení eliminuje potřebu komplexního nastavení virtuálních privátních sítí, aby bylo možné připojení k zařízením IoT.

  • Kompatibilita se zásobníkem PROTOKOLU TCP/IP: Streamy zařízení ioT Hubu můžou obsahovat provoz aplikací TCP/IP. To znamená, že tuto funkci může využívat široká škála proprietárních protokolů i protokolů založených na standardech.

  • Snadné použití v nastaveních privátní sítě: Služba může komunikovat se zařízením odkazováním na JEHO ID zařízení, nikoli IP adresou zařízení. To je užitečné v situacích, kdy se zařízení nachází v privátní síti a má privátní IP adresu nebo je její IP adresa přiřazena dynamicky a není známo straně služby.

Pracovní postupy datových proudů zařízení

Datový proud zařízení se zahájí, když služba požádá o připojení k zařízení zadáním ID zařízení. Tento pracovní postup se týká zejména modelu komunikace klienta/serveru, včetně SSH a RDP, kde se uživatel hodlá vzdáleně připojit k serveru SSH nebo RDP spuštěného na zařízení pomocí klientského programu SSH nebo RDP.

Proces vytváření datových proudů zařízení zahrnuje vyjednávání mezi hlavními koncovými body zařízení, služby, centra IoT Hub. Zatímco hlavní koncový bod služby IoT Hub orchestruje vytvoření datového proudu zařízení, koncový bod streamování zpracovává provoz, který proudí mezi službou a zařízením.

Tok vytvoření datového proudu zařízení

Programové vytvoření datového proudu zařízení pomocí sady SDK zahrnuje následující kroky, které jsou také znázorněny na následujícím obrázku:

  1. Aplikace zařízení předem zaregistruje zpětné volání, aby byla upozorněna na to, kdy se do zařízení inicializoval nový datový proud zařízení. Tento krok se obvykle provádí, když se zařízení spustí a připojí se ke službě IoT Hub.

  2. Program na straně služby inicializuje datový proud zařízení v případě potřeby zadáním ID zařízení (nikoli IP adresy).

  3. IoT Hub upozorní program na straně zařízení vyvoláním zpětného volání zaregistrovaného v kroku 1. Zařízení může přijmout nebo odmítnout žádost o zahájení streamu. Tato logika může být specifická pro váš scénář aplikace. Pokud zařízení žádost o datový proud odmítne, IoT Hub odpovídajícím způsobem informuje službu; v opačném případě postupujte podle následujících kroků.

  4. Zařízení vytvoří zabezpečené odchozí připojení TCP ke koncovému bodu streamování přes port 443 a upgraduje připojení na webSocket. Adresa URL koncového bodu streamování i přihlašovací údaje, které se mají použít k ověření, poskytuje ioT Hub zařízení v rámci požadavku odeslaného v kroku 3.

  5. Služba je upozorněna na výsledek přijetí datového proudu a pokračuje vytvořením vlastního klienta WebSocket do koncového bodu streamování. Podobně přijímá adresu URL koncového bodu streamování a ověřovací informace ze služby IoT Hub.

Ve výše uvedeném procesu handshake:

  • Proces handshake se musí dokončit do 60 sekund (krok 2 až 5), jinak by handshake selhal s vypršením časového limitu a služba bude odpovídajícím způsobem upozorněna.

  • Po dokončení toku vytvoření datového proudu bude koncový bod streamování fungovat jako proxy server a bude přenášet provoz mezi službou a zařízením přes příslušné webSockety.

  • Zařízení i služba potřebují odchozí připojení k hlavnímu koncovému bodu služby IoT Hub i koncový bod streamování přes port 443. Adresa URL těchto koncových bodů je k dispozici na kartě Přehled na portálu služby IoT Hub.

  • Záruky spolehlivosti a řazení zavedeného datového proudu jsou v souladu s protokolem TCP.

  • Všechna připojení ke službě IoT Hub a koncovému bodu streamování používají protokol TLS a jsou šifrovaná.

Tok ukončení

Vytvořený datový proud se ukončí, když dojde k odpojení některého z připojení TCP k bráně (službou nebo zařízením). To může probíhat dobrovolně tak, že webSocket zavřete buď na zařízení nebo v programech služeb, nebo neúmyslně v případě vypršení časového limitu připojení k síti nebo selhání procesu. Po ukončení připojení zařízení nebo služby ke koncovému bodu streamování se ostatní připojení TCP také (v případě potřeby) ukončí a služba a zařízení zodpovídají za opětovné vytvoření datového proudu.

Požadavky na připojení

Zařízení i strany služby streamu zařízení musí být schopné navazovat připojení s povoleným protokolem TLS ke službě IoT Hub a koncovému bodu streamování. To vyžaduje odchozí připojení přes port 443 k těmto koncovým bodům. Název hostitele přidružený k těmto koncovým bodům najdete na kartě Přehled služby IoT Hub, jak je znázorněno na následujícím obrázku:

Informace o koncových bodech je možné načíst také pomocí Azure CLI v části vlastností centra, konkrétně property.hostname pomocí klíčů a property.deviceStreams klíčů centra.

az iot hub devicestream show --name <YourIoTHubName>

Výstupem je objekt JSON všech koncových bodů, ke kterým se zařízení a služba vašeho centra možná musí připojit, aby bylo možné vytvořit datový proud zařízení.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Poznámka:

Ujistěte se, že jste nainstalovali Azure CLI verze 2.0.57 nebo novější. Nejnovější verzi si můžete stáhnout ze stránky Instalace Azure CLI .

Povolení odchozího připojení ke koncovým bodům streamování zařízení

Jak je uvedeno na začátku tohoto článku, vaše zařízení během procesu inicializace datových proudů zařízení vytvoří odchozí připojení ke koncovému bodu streamování ioT Hubu. Brány firewall v zařízení nebo jeho síti musí umožňovat odchozí připojení k bráně streamování přes port 443 (upozorňujeme, že komunikace probíhá přes připojení WebSocket, které je šifrované pomocí protokolu TLS).

Název hostitele koncového bodu streamování zařízení najdete na portálu Azure IoT Hub na kartě Přehled.

Případně můžete tyto informace najít pomocí Azure CLI:

az iot hub devicestream show --name <YourIoTHubName>

Poznámka:

Ujistěte se, že jste nainstalovali Azure CLI verze 2.0.57 nebo novější. Nejnovější verzi si můžete stáhnout ze stránky Instalace Azure CLI .

Řešení potíží prostřednictvím protokolů prostředků Toky zařízení

Azure Monitor můžete nastavit tak, aby shromažďovala protokoly prostředků pro datové proudy zařízení generované vaší službou IoT Hub. To může být velmi užitečné ve scénářích řešení potíží.

Pomocí následujících kroků vytvořte nastavení diagnostiky pro odesílání protokolů streamů zařízení pro ioT Hub do protokolů služby Azure Monitor:

  1. Na webu Azure Portal přejděte do centra IoT. V levém podokně v části Monitorování vyberte Nastavení diagnostiky. Pak vyberte Přidat nastavení diagnostiky.

  2. Zadejte název nastavení diagnostiky a v seznamu protokolů vyberte Zařízení Toky. Pak vyberte Odeslat do Log Analytics. Provedete vás výběrem existujícího pracovního prostoru služby Log Analytics nebo vytvořením nového pracovního prostoru.

    Enable device streams logs

  3. Po vytvoření nastavení diagnostiky pro odesílání protokolů streamů zařízení do pracovního prostoru služby Log Analytics můžete k protokolům přistupovat tak , že v levém podokně centra IoT na webu Azure Portal vyberete Protokoly v části Monitorování . Protokoly datových proudů zařízení se zobrazí v AzureDiagnostics tabulce a mají Category=DeviceStreams. Mějte na paměti, že zobrazení protokolů v tabulce může trvat několik minut.

    Jak je znázorněno níže, identita cílového zařízení a výsledek operace jsou k dispozici také v protokolech.

Další informace o používání služby Azure Monitor se službou IoT Hub najdete v tématu Monitorování IoT Hubu. Informace o všech protokolech prostředků, metrikách a tabulkách dostupných pro IoT Hub najdete v tématu Monitorování referenčních informací k datům služby Azure IoT Hub.

Regionální dostupnost

Ve verzi Public Preview jsou streamy zařízení IoT Hubu dostupné v oblastech USA – střed, USA – východ, USA – východ, Severní Evropa a Jihovýchodní Asie. Ujistěte se, že centrum vytvoříte v jedné z těchto oblastí.

Dostupnost sady SDK

Dvě strany každého datového proudu (na straně zařízení a služby) používají k vytvoření tunelu sadu SDK služby IoT Hub. Ve verzi Public Preview si zákazníci můžou vybrat z následujících jazyků sady SDK:

  • Sada SDK jazyka C a C# podporuje datové proudy zařízení na straně zařízení.

  • Sada NodeJS a C# SDK podporují streamy zařízení na straně služby.

Další kroky

Další informace o datových proudech zařízení najdete na následujících odkazech.