Použití modelů technologie Plug and Play IoT v řešení IoT
Tento článek popisuje, jak v řešení IoT identifikovat ID modelu technologie Plug and Play zařízení IoT a pak načíst jeho definici modelu.
Existují dvě široké kategorie řešení IoT:
Účelově vytvořené řešení funguje se známou sadou modelů pro zařízení ioT technologie Plug and Play, která se k řešení připojují. Tyto modely použijete při vývoji řešení.
Modelem řízené řešení funguje s modelem libovolného zařízení ioT technologie Plug and Play. Vytvoření modelem řízeného řešení je složitější, ale výhodou je, že vaše řešení funguje s všechna zařízení přidaná v budoucnu. Modelem řízené řešení IoT načte model a používá ho k určení telemetrie, vlastností a příkazů, které zařízení implementuje.
Pokud chcete použít model technologie Plug and Play IoT, řešení IoT:
Identifikuje ID modelu modelu implementovaného modulem IoT technologie Plug and Play zařízení, modulem nebo modulem IoT Edge připojeným k řešení.
Pomocí ID modelu načte definici modelu připojeného zařízení z úložiště modelu nebo vlastního úložiště.
Identifikace ID modelu
Když se zařízení IoT technologie Plug and Play připojí ke službě IoT Hub, zaregistruje ID modelu, který implementuje ve službě IoT Hub.
IoT Hub oznámí řešení ID modelu zařízení jako součást toku připojení zařízení.
Řešení může získat ID modelu zařízení IoT technologie Plug and Play pomocí jedné z následujících tří metod:
Získání rozhraní API dvojčete zařízení
Řešení může k načtení ID modelu zařízení technologie Plug and Play zařízení použít rozhraní Get Device Twin API.
Tip
Pro moduly a moduly IoT Edge použijte ModuleClient.getTwin.
V následujícím fragmentu modelId
odpovědi dvojčete zařízení obsahuje ID modelu technologie Plug and Play zařízení IoT:
{
"deviceId": "sample-device",
"etag": "AAAAAAAAAAc=",
"deviceEtag": "NTk0ODUyODgx",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "2020-07-17T06:12:26.8402249Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"modelId": "dtmi:com:example:TemperatureController;1",
"version": 15,
"properties": {...}
}
}
Získání rozhraní API služby Digital Twin
Řešení může pomocí rozhraní GET Digital Twin API načíst ID modelu implementovaného zařízením IoT technologie Plug and Play.
V následujícím fragmentu $metadata.$model
odpovědi digitálního dvojčete obsahuje ID modelu zařízení technologie Plug and Play IoT:
{
"$dtId": "sample-device",
"$metadata": {
"$model": "dtmi:com:example:TemperatureController;1",
"serialNumber": {
"lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
}
}
}
Oznámení události změny digitálního dvojčete
Výsledkem připojení zařízení je oznámení události změny digitálního dvojčete. Řešení se musí přihlásit k odběru tohoto oznámení události. Informace o povolení směrování pro události digitálního dvojčete najdete v tématu Použití směrování zpráv služby IoT Hub k odesílání zpráv typu zařízení-cloud do různých koncových bodů.
Řešení může použít událost zobrazenou v následujícím fragmentu kódu, abyste se dozvěděli o zařízení IoT technologie Plug and Play, které se připojuje, a získalo JEHO ID modelu:
iothub-connection-device-id:sample-device
iothub-enqueuedtime:7/22/2020 8:02:27 PM
iothub-message-source:digitalTwinChangeEvents
correlation-id:100f322dc2c5
content-type:application/json-patch+json
content-encoding:utf-8
[
{
"op": "replace",
"path": "/$metadata/$model",
"value": "dtmi:com:example:TemperatureController;1"
}
]
Načtení definice modelu
Řešení používá ID modelu identifikované dříve k načtení odpovídající definice modelu.
Řešení může získat definici modelu pomocí jedné z následujících možností:
Úložiště modelů
Řešení můžou načítat modely DTDL z úložiště modelů zařízení (DMR). DMR je veřejné úložiště hostované Microsoftem, které obsahuje kolekci kurátorovaných modelů DTDL. Veřejné modely zařízení uložené v DMR jsou k dispozici všem uživatelům, kteří můžou využívat a integrovat své aplikace z veřejného koncového bodu https://devicemodels.azure.com.
Po identifikaci ID modelu pro nové připojení zařízení postupujte takto:
Načtěte definici modelu pomocí ID modelu z úložiště modelu. Další informace najdete v tématu Řešení modelů.
Pomocí definice modelu připojeného zařízení můžete zobrazit výčet funkcí zařízení.
Pomocí výčtových funkcí zařízení můžete uživatelům povolit interakci se zařízením.
Řešení modelů
Konvence DMR zahrnují další artefakty pro zjednodušení spotřeby hostovaných modelů. Tyto funkce jsou volitelné pro vlastní nebo privátní úložiště.
- Index. Všechny dostupné DTMI jsou vystaveny prostřednictvím indexu složeného posloupností souborů JSON, například:https://devicemodels.azure.com/index.page.2.json
- Rozbalené. Soubor se všemi závislostmi je k dispozici pro každé rozhraní, například: https://devicemodels.azure.com/dtmi/com/example/temperaturecontroller-1.expanded.json
- Metadata Tento soubor zveřejňuje klíčové atributy úložiště a pravidelně se aktualizuje pomocí nejnovějšího publikovaného snímku modelů. Zahrnuje funkce, které úložiště implementuje, například jestli jsou k dispozici soubory indexu modelu nebo rozšířeného modelu. K metadatům DMR se dostanete na adrese https://devicemodels.azure.com/metadata.json
Pokud chcete prostřednictvím kódu programu přistupovat k veřejným modelům DTDL v DMR, můžete použít ModelsRepositoryClient
dostupné v balíčku NuGet Azure.IoT.ModelsRepository. Tento klient je ve výchozím nastavení nakonfigurovaný tak, aby dotazoval veřejné zobrazení dynamické správy dostupné v devicemodels.azure.com a lze ho nakonfigurovat pro libovolné vlastní úložiště.
Klient přijímá DTMI
jako vstup a vrací slovník se všemi požadovanými rozhraními:
using Azure.IoT.ModelsRepository;
var client = new ModelsRepositoryClient();
ModelResult models = client.GetModel("dtmi:com:example:TemperatureController;1");
models.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));
Očekávaný výstup zobrazí DTMI
tři rozhraní nalezená v řetězci závislostí:
dtmi:com:example:TemperatureController;1
dtmi:com:example:Thermostat;1
dtmi:azure:DeviceManagement:DeviceInformation;1
ModelsRepositoryClient
Dá se nakonfigurovat tak, aby dotazoval vlastní dmR - k dispozici prostřednictvím https--- a určit rozlišení závislostí pomocí příznakuModelDependencyResolution
:
- Deaktivováno. Vrátí pouze zadané rozhraní bez jakékoli závislosti.
- Povolený Vrátí všechna rozhraní v řetězci závislostí.
Tip
Vlastní úložiště nemusí soubor vystavit .expanded.json
. Pokud tento soubor není k dispozici, klient se vrátí ke zpracování jednotlivých závislostí místně.
Následující ukázkový kód ukazuje, jak inicializovat ModelsRepositoryClient
pomocí vlastní základní adresy URL úložiště, v tomto případě pomocí raw
adres URL z rozhraní API GitHubu bez použití expanded
formuláře, protože není k dispozici v koncovém raw
bodu. Inicializuje AzureEventSourceListener
se ke kontrole požadavku HTTP prováděného klientem:
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
var client = new ModelsRepositoryClient(
new Uri("https://raw.githubusercontent.com/Azure/iot-plugandplay-models/main"));
ModelResult model = await client.GetModelAsync(
"dtmi:com:example:TemperatureController;1",
dependencyResolution: ModelDependencyResolution.Enabled);
model.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));
V úložišti GitHub sady Azure SDK jsou k dispozici další ukázky: Azure.Iot.ModelsRepository/samples.
Vlastní úložiště
Řešení můžou tyto definice modelu ukládat v místním systému souborů, ve veřejném úložišti souborů nebo používat vlastní implementaci.
Po identifikaci ID modelu pro nové připojení zařízení postupujte takto:
Načtěte definici modelu pomocí ID modelu z vlastního úložiště.
Pomocí definice modelu připojeného zařízení můžete zobrazit výčet funkcí zařízení.
Pomocí výčtových funkcí zařízení můžete uživatelům povolit interakci se zařízením.
Další kroky
Teď, když jste se dozvěděli, jak integrovat modely IoT technologie Plug and Play do řešení IoT, je několik navrhovaných dalších kroků: