Korzystanie z modeli IoT Plug and Play w rozwiązaniu IoT

W tym artykule opisano, jak w rozwiązaniu IoT można zidentyfikować identyfikator modelu urządzenia IoT Plug and Play, a następnie pobrać jego definicję modelu.

Istnieją dwie szerokie kategorie rozwiązania IoT:

  • Specjalnie utworzone rozwiązanie współpracuje ze znanym zestawem modeli dla urządzeń IoT Plug and Play, które będą łączyć się z rozwiązaniem. Te modele są używane podczas opracowywania rozwiązania.

  • Rozwiązanie oparte na modelu może współdziałać z modelem dowolnego urządzenia IoT Plug and Play. Tworzenie rozwiązania opartego na modelu jest bardziej złożone, ale zaletą jest to, że rozwiązanie współpracuje z dowolnymi urządzeniami, które mogą zostać dodane w przyszłości. Rozwiązanie IoT oparte na modelu pobiera model i używa go do określania telemetrii, właściwości i poleceń implementowanych przez urządzenie.

Aby użyć modelu IoT Plug and Play, rozwiązanie IoT:

  1. Identyfikuje identyfikator modelu modelu implementowany przez urządzenie, moduł lub moduł usługi IoT Edge połączony z rozwiązaniem.

  2. Używa identyfikatora modelu do pobrania definicji modelu połączonego urządzenia z repozytorium modelu lub magazynu niestandardowego.

Identyfikowanie identyfikatora modelu

Gdy urządzenie usługi IoT Plug and Play łączy się z usługą IoT Hub, rejestruje identyfikator modelu, który implementuje w usłudze IoT Hub.

Usługa IoT Hub powiadamia rozwiązanie o identyfikatorze modelu urządzenia w ramach przepływu połączenia urządzenia.

Rozwiązanie może uzyskać identyfikator modelu urządzenia IoT Plug and Play przy użyciu jednej z następujących trzech metod:

Uzyskiwanie interfejsu API bliźniaczej reprezentacji urządzenia

Rozwiązanie może użyć interfejsu API pobierania bliźniaczej reprezentacji urządzenia do pobierania identyfikatora modelu urządzenia IoT Plug and Play.

Porada

W przypadku modułów i modułów usługi IoT Edge użyj modułu ModuleClient.getTwin.

W poniższym fragmencie modelId odpowiedzi bliźniaczej reprezentacji urządzenia zawiera identyfikator modelu urządzenia IoT Plug and Play:

{
    "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": {...}
    }
}

Uzyskiwanie interfejsu API usługi Digital Twin

Rozwiązanie może użyć interfejsu API Get Digital Twin w celu pobrania identyfikatora modelu wdrożonego przez urządzenie IoT Plug and Play.

W poniższym fragmencie $metadata.$model odpowiedzi cyfrowej reprezentacji bliźniaczej zawiera identyfikator modelu urządzenia IoT Plug and Play:

{
    "$dtId": "sample-device",
    "$metadata": {
        "$model": "dtmi:com:example:TemperatureController;1",
        "serialNumber": {
            "lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
        }
    }
}

Powiadomienie o zdarzeniu zmiany cyfrowej reprezentacji bliźniaczej

Połączenie urządzenia powoduje powiadomienie o zmianie cyfrowej reprezentacji bliźniaczej . Rozwiązanie musi subskrybować to powiadomienie o zdarzeniu. Aby dowiedzieć się, jak włączyć routing dla zdarzeń cyfrowej reprezentacji bliźniaczej, zobacz Wysyłanie komunikatów z urządzenia do chmury do różnych punktów końcowych przy użyciu routingu komunikatów usługi IoT Hub.

Rozwiązanie może użyć zdarzenia pokazanego w poniższym fragmencie kodu, aby dowiedzieć się więcej o urządzeniu IoT Plug and Play, które łączy się i pobiera identyfikator 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"
  }
]

Pobieranie definicji modelu

Rozwiązanie używa identyfikatora modelu zidentyfikowanego powyżej w celu pobrania odpowiedniej definicji modelu.

Rozwiązanie może uzyskać definicję modelu przy użyciu jednej z następujących opcji:

Repozytorium modeli

Rozwiązania mogą używać repozytorium modeli do pobierania modeli. Konstruktorzy urządzeń lub konstruktorzy rozwiązań muszą wcześniej przekazać swoje modele do repozytorium, aby rozwiązanie mogło je pobrać.

Po zidentyfikowaniu identyfikatora modelu dla nowego połączenia urządzenia wykonaj następujące kroki:

  1. Pobierz definicję modelu przy użyciu identyfikatora modelu z repozytorium modelu. Aby uzyskać więcej informacji, zobacz Repozytorium modeli urządzeń.

  2. Korzystając z definicji modelu połączonego urządzenia, można wyliczyć możliwości urządzenia.

  3. Korzystając z wyliczeń możliwości urządzenia, można zezwolić użytkownikom na interakcję z urządzeniem.

Magazyn niestandardowy

Rozwiązania mogą przechowywać te definicje modelu w lokalnym systemie plików, w publicznym magazynie plików lub używać implementacji niestandardowej.

Po zidentyfikowaniu identyfikatora modelu dla nowego połączenia urządzenia wykonaj następujące kroki:

  1. Pobierz definicję modelu przy użyciu identyfikatora modelu z magazynu niestandardowego.

  2. Korzystając z definicji modelu połączonego urządzenia, można wyliczyć możliwości urządzenia.

  3. Korzystając z wyliczeń możliwości urządzenia, można zezwolić użytkownikom na interakcję z urządzeniem.

Następne kroki

Teraz, gdy wiesz już, jak zintegrować modele usługi IoT Plug and Play w rozwiązaniu IoT, oto kilka sugerowanych następnych kroków: