Samouczek: Połączenie przykładową aplikację urządzenia IoT Plug and Play działającą w systemie Linux lub Windows do usługi IoT Hub

W tym samouczku pokazano, jak utworzyć przykładową aplikację urządzenia IoT Plug and Play, połączyć ją z centrum IoT i użyć narzędzia Eksplorator usługi Azure IoT, aby wyświetlić wysyłane dane telemetryczne. Przykładowa aplikacja jest napisana w języku C i jest zawarta w zestawie SDK urządzenia Usługi Azure IoT dla języka C. Konstruktor rozwiązań może użyć narzędzia Azure IoT Explorer, aby zrozumieć możliwości urządzenia IoT Plug and Play bez konieczności wyświetlania kodu urządzenia.

Przeglądaj kod

Wymagania wstępne

Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.

Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\".

Wymagania wstępne różnią się w zależności od systemu operacyjnego:

Linux

W tym samouczku założono, że używasz systemu Ubuntu Linux. Kroki opisane w tym samouczku zostały przetestowane przy użyciu systemu Ubuntu 18.04.

Aby ukończyć ten samouczek w systemie Linux, zainstaluj następujące oprogramowanie w lokalnym środowisku systemu Linux:

Zainstaluj bibliotekę GCC, git, narzędzie cmake i wszystkie wymagane zależności przy użyciu apt-get polecenia :

sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev

Sprawdź, czy wersja biblioteki ma wartość 2.8.12, a wersja GCC jest wyższa niż 4.4.7.cmake

cmake --version
gcc --version

Windows

Aby ukończyć ten samouczek w systemie Windows, zainstaluj następujące oprogramowanie w lokalnym środowisku systemu Windows:

Pobieranie kodu

W tym samouczku przygotujesz środowisko programistyczne, którego można użyć do sklonowania i skompilowania zestawu SDK języka C urządzenia usługi Azure IoT Hub.

Otwórz wiersz polecenia w wybranym katalogu. Wykonaj następujące polecenie, aby sklonować repozytorium GitHub zestawów SDK i bibliotek języka C usługi Azure IoT do tej lokalizacji:

git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init

Spodziewaj się, że wykonanie tej operacji potrwa kilka minut.

Kompilowanie kod

Możesz skompilować i uruchomić kod przy użyciu programu Visual Studio lub cmake w wierszu polecenia.

Korzystanie z programu Visual Studio

  1. Otwórz folder główny sklonowanego repozytorium. Po kilku sekundach obsługa narzędzia CMake w programie Visual Studio tworzy wszystko, co należy uruchomić i debugować projekt.

  2. Gdy program Visual Studio jest gotowy, w Eksplorator rozwiązań przejdź do przykładowego iothub_client/samples/pnp/pnp_simple_thermostat/.

  3. Kliknij prawym przyciskiem myszy plik pnp_simple_thermostat.c i wybierz polecenie Dodaj konfigurację debugowania. Wybierz pozycję Domyślne.

  4. Program Visual Studio otwiera plik launch.vs.json . Edytuj ten plik, jak pokazano w poniższym fragmencie kodu, aby ustawić wymagane zmienne środowiskowe. Zanotujesz identyfikator zakresu i klucz podstawowy rejestracji po zakończeniu konfigurowania środowiska na potrzeby przewodników Szybki start i samouczków dotyczących usługi IoT Plug and Play:

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c",
          "projectTarget": "",
          "name": "pnp_simple_thermostat.c",
          "env": {
            "IOTHUB_DEVICE_SECURITY_TYPE": "DPS",
            "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>",
            "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device",
            "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>"
          }
        }
      ]
    }
    
  5. Kliknij prawym przyciskiem myszy plik pnp_simple_thermostat.c i wybierz polecenie Ustaw jako element startowy.

  6. Aby śledzić wykonywanie kodu w programie Visual Studio, dodaj punkt przerwania do main funkcji w pliku pnp_simple_thermostat.c .

  7. Teraz możesz uruchomić i debugować przykład z menu Debugowanie .

Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Kompilowanie kodu przy użyciu narzędzia cmake

Aby skompilować kod, użyj narzędzia wiersza polecenia cmake:

  1. Utwórz podkatalog cmake w folderze głównym zestawu SDK urządzenia i przejdź do tego folderu:

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. Uruchom następujące polecenia, aby skompilować zestaw SDK i przykłady:

    cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF ..
    cmake --build .
    

Uruchamianie przykładu urządzenia

W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:

  • IOTHUB_DEVICE_SECURITY_TYPE z wartościąDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID z wartością my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
  • IOTHUB_DEVICE_DPS_ENDPOINT z wartością global.azure-devices-provisioning.net.

Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.

Aby uruchomić przykładową aplikację w zestawie SDK, która symuluje urządzenie IoT Plug and Play wysyłające dane telemetryczne do centrum IoT:

W folderze cmake przejdź do folderu zawierającego plik wykonywalny i uruchom go:

# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe

Napiwek

Aby śledzić wykonywanie kodu w programie Visual Studio w systemie Windows, dodaj punkt przerwania do main funkcji w pliku pnp_simple_thermostat.c .

Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Weryfikowanie kodu za pomocą eksploratora usługi Azure IoT

Po uruchomieniu przykładu klienta urządzenia użyj narzędzia Azure IoT Explorer, aby sprawdzić, czy działa.

  1. Otwórz eksploratora usługi Azure IoT.

  2. Jeśli na stronie Centra IoT nie dodano jeszcze połączenia z centrum IoT, wybierz pozycję + Dodaj połączenie. Wprowadź parametry połączenia dla utworzonego wcześniej centrum IoT, a następnie wybierz pozycję Zapisz.

  3. Na stronie IoT Plug and Play Ustawienia wybierz pozycję + Dodaj > folder lokalny i wybierz folder modele lokalne, w którym zapisano pliki modelu.

  4. Na stronie Centra IoT kliknij nazwę centrum, z którym chcesz pracować. Zostanie wyświetlona lista urządzeń zarejestrowanych w centrum IoT.

  5. Kliknij identyfikator urządzenia utworzonego wcześniej.

  6. W menu po lewej stronie są wyświetlane różne typy informacji dostępnych dla urządzenia.

  7. Wybierz pozycję Składniki usługi IoT Plug and Play, aby wyświetlić informacje o modelu dla urządzenia.

  8. Możesz wyświetlić różne składniki urządzenia. Domyślny składnik i wszystkie dodatkowe. Wybierz składnik do pracy.

  9. Wybierz stronę Telemetria, a następnie wybierz pozycję Uruchom, aby wyświetlić dane telemetryczne wysyłane przez urządzenie dla tego składnika.

  10. Wybierz stronę Właściwości (tylko do odczytu), aby wyświetlić właściwości tylko do odczytu zgłoszone dla tego składnika.

  11. Wybierz stronę Właściwości (zapisywalne), aby wyświetlić właściwości zapisywalne, które można zaktualizować dla tego składnika.

  12. Wybierz właściwość według jej nazwy, wprowadź nową wartość, a następnie wybierz pozycję Aktualizuj żądaną wartość.

  13. Aby wyświetlić nową wartość, wybierz przycisk Odśwież .

  14. Wybierz stronę Polecenia, aby wyświetlić wszystkie polecenia dla tego składnika.

  15. Wybierz polecenie, które chcesz przetestować, aby ustawić parametr, jeśli istnieje. Wybierz pozycję Wyślij polecenie , aby wywołać polecenie na urządzeniu. Urządzenie może odpowiedzieć na polecenie w oknie wiersza polecenia, w którym jest uruchomiony przykładowy kod.

Przeglądanie kodu

Ten przykład implementuje proste urządzenie termostatowe IoT Plug and Play. Model termostatu nie używa składników IoT Plug and Play. Plik modelu DTDL dla urządzenia termostatu definiuje dane telemetryczne, właściwości i polecenia implementuje urządzenie.

Kod urządzenia używa standardowej funkcji do nawiązywania połączenia z centrum IoT:

deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)

Urządzenie wysyła identyfikator modelu modelu DTDL, który implementuje w żądaniu połączenia. Urządzenie, które wysyła identyfikator modelu, to urządzenie IoT Plug and Play:

static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";

...

IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)

Kod, który aktualizuje właściwości, obsługuje polecenia i wysyła dane telemetryczne, jest identyczny z kodem dla urządzenia, które nie korzysta z konwencji IoT Plug and Play.

Kod używa biblioteki Parson do analizowania obiektów JSON w ładunkach wysyłanych z centrum IoT:

// JSON parser
#include "parson.h"

Czyszczenie zasobów

Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.

W tym samouczku pokazano, jak utworzyć przykładową aplikację urządzenia IoT Plug and Play, połączyć ją z centrum IoT i użyć narzędzia Eksplorator usługi Azure IoT, aby wyświetlić wysyłane dane telemetryczne. Przykładowa aplikacja jest napisana w języku C# i jest zawarta w zestawie SDK usługi Azure IoT dla języka C#. Konstruktor rozwiązań może użyć narzędzia Azure IoT Explorer, aby zrozumieć możliwości urządzenia IoT Plug and Play bez konieczności wyświetlania kodu urządzenia.

Przeglądaj kod

Wymagania wstępne

Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.

Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\".

Pobieranie kodu

W tym samouczku przygotujesz środowisko deweloperskie, którego można użyć do sklonowania i skompilowania zestawu SDK usługi Azure IoT dla repozytorium języka C#.

Otwórz wiersz polecenia w wybranym folderze. Uruchom następujące polecenie, aby sklonować repozytorium GitHub zestawu Microsoft Azure IoT SDK dla języka C# (.NET) do tej lokalizacji:

git clone  https://github.com/Azure/azure-iot-sdk-csharp

Kompilowanie kod

Teraz możesz skompilować przykład i uruchomić go. Uruchom następujące polecenia, aby skompilować przykład:

cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build

Uruchamianie przykładu urządzenia

Aby uruchomić przykład, uruchom następujące polecenie:

dotnet run

Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Weryfikowanie kodu za pomocą eksploratora usługi Azure IoT

Po uruchomieniu przykładu klienta urządzenia użyj narzędzia Azure IoT Explorer, aby sprawdzić, czy działa.

  1. Otwórz eksploratora usługi Azure IoT.

  2. Jeśli na stronie Centra IoT nie dodano jeszcze połączenia z centrum IoT, wybierz pozycję + Dodaj połączenie. Wprowadź parametry połączenia dla utworzonego wcześniej centrum IoT, a następnie wybierz pozycję Zapisz.

  3. Na stronie IoT Plug and Play Ustawienia wybierz pozycję + Dodaj > folder lokalny i wybierz folder modele lokalne, w którym zapisano pliki modelu.

  4. Na stronie Centra IoT kliknij nazwę centrum, z którym chcesz pracować. Zostanie wyświetlona lista urządzeń zarejestrowanych w centrum IoT.

  5. Kliknij identyfikator urządzenia utworzonego wcześniej.

  6. W menu po lewej stronie są wyświetlane różne typy informacji dostępnych dla urządzenia.

  7. Wybierz pozycję Składniki usługi IoT Plug and Play, aby wyświetlić informacje o modelu dla urządzenia.

  8. Możesz wyświetlić różne składniki urządzenia. Domyślny składnik i wszystkie dodatkowe. Wybierz składnik do pracy.

  9. Wybierz stronę Telemetria, a następnie wybierz pozycję Uruchom, aby wyświetlić dane telemetryczne wysyłane przez urządzenie dla tego składnika.

  10. Wybierz stronę Właściwości (tylko do odczytu), aby wyświetlić właściwości tylko do odczytu zgłoszone dla tego składnika.

  11. Wybierz stronę Właściwości (zapisywalne), aby wyświetlić właściwości zapisywalne, które można zaktualizować dla tego składnika.

  12. Wybierz właściwość według jej nazwy, wprowadź nową wartość, a następnie wybierz pozycję Aktualizuj żądaną wartość.

  13. Aby wyświetlić nową wartość, wybierz przycisk Odśwież .

  14. Wybierz stronę Polecenia, aby wyświetlić wszystkie polecenia dla tego składnika.

  15. Wybierz polecenie, które chcesz przetestować, aby ustawić parametr, jeśli istnieje. Wybierz pozycję Wyślij polecenie , aby wywołać polecenie na urządzeniu. Urządzenie może odpowiedzieć na polecenie w oknie wiersza polecenia, w którym jest uruchomiony przykładowy kod.

Przeglądanie kodu

Ten przykład implementuje proste urządzenie termostatowe IoT Plug and Play. Model, który implementuje ten przykład, nie używa składników usługi IoT Plug and Play. Plik modelu języka definicji usługi Digital Twins (DTDL) dla urządzenia termostatu definiuje dane telemetryczne, właściwości i polecenia implementowania urządzenia.

Kod urządzenia łączy się z centrum IoT Hub przy użyciu standardowej CreateFromConnectionString metody. Urządzenie wysyła identyfikator modelu modelu DTDL, który implementuje w żądaniu połączenia. Urządzenie, które wysyła identyfikator modelu, to urządzenie IoT Plug and Play:

private static void InitializeDeviceClientAsync()
{
  var options = new ClientOptions
  {
    ModelId = ModelId,
  };
  s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
  s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
  {
     s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
  });
}

Identyfikator modelu jest przechowywany w kodzie, jak pokazano w poniższym fragmencie kodu:

private const string ModelId = "dtmi:com:example:Thermostat;1";

Kod, który aktualizuje właściwości, obsługuje polecenia i wysyła dane telemetryczne, jest identyczny z kodem dla urządzenia, które nie korzysta z konwencji IoT Plug and Play.

W przykładzie użyto biblioteki JSON do analizowania obiektów JSON w ładunkach wysyłanych z centrum IoT:

using Newtonsoft.Json;

...

DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);

Czyszczenie zasobów

Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.

W tym samouczku pokazano, jak utworzyć przykładową aplikację urządzenia IoT Plug and Play, połączyć ją z centrum IoT i użyć narzędzia Eksplorator usługi Azure IoT, aby wyświetlić wysyłane dane telemetryczne. Przykładowa aplikacja jest napisana w języku Java i jest zawarta w zestawie SDK urządzenia usługi Azure IoT dla języka Java. Konstruktor rozwiązań może użyć narzędzia Azure IoT Explorer, aby zrozumieć możliwości urządzenia IoT Plug and Play bez konieczności wyświetlania kodu urządzenia.

Przeglądaj kod

Wymagania wstępne

Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.

Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\".

Aby ukończyć ten samouczek, zainstaluj następujące oprogramowanie w lokalnym środowisku programistycznym:

Pobieranie kodu

W tym samouczku przygotujesz środowisko programistyczne, którego można użyć do sklonowania i skompilowania zestawu SDK java urządzenia usługi Azure IoT Hub.

Otwórz wiersz polecenia w wybranym katalogu. Wykonaj następujące polecenie, aby sklonować repozytorium GitHub zestawów SDK i bibliotek Java usługi Azure IoT do tej lokalizacji:

git clone https://github.com/Azure/azure-iot-sdk-java.git

Kompilowanie kod

Przejdź do folderu głównego przykładu termostatu w sklonowanym repozytorium zestawu Java SDK i skompiluj go:

cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package

Uruchamianie przykładu urządzenia

W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:

  • IOTHUB_DEVICE_SECURITY_TYPE z wartościąDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID z wartością my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
  • IOTHUB_DEVICE_DPS_ENDPOINT z wartością global.azure-devices-provisioning.net.

Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.

W folderze /device/iot-device-samples/pnp-device-sample/termostat-device-sample uruchom aplikację:

mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"

Urządzenie jest teraz gotowe do odbierania poleceń i aktualizacji właściwości i zaczął wysyłać dane telemetryczne do centrum. Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Weryfikowanie kodu za pomocą eksploratora usługi Azure IoT

Po uruchomieniu przykładu klienta urządzenia użyj narzędzia Azure IoT Explorer, aby sprawdzić, czy działa.

  1. Otwórz eksploratora usługi Azure IoT.

  2. Jeśli na stronie Centra IoT nie dodano jeszcze połączenia z centrum IoT, wybierz pozycję + Dodaj połączenie. Wprowadź parametry połączenia dla utworzonego wcześniej centrum IoT, a następnie wybierz pozycję Zapisz.

  3. Na stronie IoT Plug and Play Ustawienia wybierz pozycję + Dodaj > folder lokalny i wybierz folder modele lokalne, w którym zapisano pliki modelu.

  4. Na stronie Centra IoT kliknij nazwę centrum, z którym chcesz pracować. Zostanie wyświetlona lista urządzeń zarejestrowanych w centrum IoT.

  5. Kliknij identyfikator urządzenia utworzonego wcześniej.

  6. W menu po lewej stronie są wyświetlane różne typy informacji dostępnych dla urządzenia.

  7. Wybierz pozycję Składniki usługi IoT Plug and Play, aby wyświetlić informacje o modelu dla urządzenia.

  8. Możesz wyświetlić różne składniki urządzenia. Domyślny składnik i wszystkie dodatkowe. Wybierz składnik do pracy.

  9. Wybierz stronę Telemetria, a następnie wybierz pozycję Uruchom, aby wyświetlić dane telemetryczne wysyłane przez urządzenie dla tego składnika.

  10. Wybierz stronę Właściwości (tylko do odczytu), aby wyświetlić właściwości tylko do odczytu zgłoszone dla tego składnika.

  11. Wybierz stronę Właściwości (zapisywalne), aby wyświetlić właściwości zapisywalne, które można zaktualizować dla tego składnika.

  12. Wybierz właściwość według jej nazwy, wprowadź nową wartość, a następnie wybierz pozycję Aktualizuj żądaną wartość.

  13. Aby wyświetlić nową wartość, wybierz przycisk Odśwież .

  14. Wybierz stronę Polecenia, aby wyświetlić wszystkie polecenia dla tego składnika.

  15. Wybierz polecenie, które chcesz przetestować, aby ustawić parametr, jeśli istnieje. Wybierz pozycję Wyślij polecenie , aby wywołać polecenie na urządzeniu. Urządzenie może odpowiedzieć na polecenie w oknie wiersza polecenia, w którym jest uruchomiony przykładowy kod.

Przeglądanie kodu

Ten przykład implementuje proste urządzenie termostatowe IoT Plug and Play. Model, który implementuje ten przykład, nie używa składników usługi IoT Plug and Play. Plik modelu DTDL dla urządzenia termostatu definiuje dane telemetryczne, właściwości i polecenia implementuje urządzenie.

Kod urządzenia używa klasy standardowej DeviceClient do nawiązywania połączenia z centrum IoT Hub. Urządzenie wysyła identyfikator modelu modelu DTDL, który implementuje w żądaniu połączenia. Urządzenie, które wysyła identyfikator modelu, to urządzenie IoT Plug and Play:

private static void initializeDeviceClient() throws URISyntaxException, IOException {
    ClientOptions options = new ClientOptions();
    options.setModelId(MODEL_ID);
    deviceClient = new DeviceClient(deviceConnectionString, protocol, options);

    deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
        log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);

        if (throwable != null) {
            log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
            throwable.printStackTrace();
        }
    }, deviceClient);

    deviceClient.open();
}

Identyfikator modelu jest przechowywany w kodzie, jak pokazano w poniższym fragmencie kodu:

private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";

Kod, który aktualizuje właściwości, obsługuje polecenia i wysyła dane telemetryczne, jest identyczny z kodem dla urządzenia, które nie korzysta z konwencji IoT Plug and Play.

W przykładzie użyto biblioteki JSON do analizowania obiektów JSON w ładunkach wysyłanych z centrum IoT:

import com.google.gson.Gson;

...

Date since = new Gson().fromJson(jsonRequest, Date.class);

Czyszczenie zasobów

Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.

W tym samouczku pokazano, jak utworzyć przykładową aplikację urządzenia IoT Plug and Play, połączyć ją z centrum IoT i użyć narzędzia Eksplorator usługi Azure IoT, aby wyświetlić wysyłane dane telemetryczne. Przykładowa aplikacja jest napisana w Node.js i jest zawarta w zestawie SDK urządzeń usługi Azure IoT dla Node.js. Konstruktor rozwiązań może użyć narzędzia Azure IoT Explorer, aby zrozumieć możliwości urządzenia IoT Plug and Play bez konieczności wyświetlania kodu urządzenia.

Przeglądaj kod

Wymagania wstępne

Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.

Ten samouczek można uruchomić w systemie Linux lub Windows. Polecenia powłoki w tym samouczku są zgodne z konwencją systemu Linux dla separatorów ścieżek "/", jeśli obserwujesz w systemie Windows, pamiętaj, aby zamienić te separatory na "\".

Aby ukończyć ten samouczek, musisz Node.js na komputerze deweloperskim. Najnowszą zalecaną wersję dla wielu platform można pobrać z nodejs.org.

Możesz sprawdzić bieżącą wersję środowiska Node.js na komputerze deweloperskim przy użyciu następującego polecenia:

node --version

Pobieranie kodu

W tym samouczku przygotujesz środowisko programistyczne, którego można użyć do sklonowania i skompilowania zestawu SDK urządzeń usługi Azure IoT Hub na potrzeby Node.js.

Otwórz wiersz polecenia w wybranym katalogu. Wykonaj następujące polecenie, aby sklonować zestaw SDK usługi Microsoft Azure IoT dla repozytorium Node.js GitHub do tej lokalizacji:

git clone https://github.com/Azure/azure-iot-sdk-node

Instalowanie wymaganych bibliotek

Zestaw SDK urządzenia służy do kompilowania dołączonego przykładowego kodu. Utworzona aplikacja symuluje urządzenie łączące się z centrum IoT Hub. Aplikacja wysyła dane telemetryczne i właściwości i odbiera polecenia.

  1. W lokalnym oknie terminalu przejdź do folderu sklonowanego repozytorium i przejdź do folderu /azure-iot-sdk-node/device/samples/javascript . Następnie uruchom następujące polecenie, aby zainstalować wymagane biblioteki:

    npm install
    

Uruchamianie przykładowego urządzenia

Ten przykład implementuje proste urządzenie termostatowe IoT Plug and Play. Model, który implementuje ten przykład, nie używa składników usługi IoT Plug and Play. Plik modelu DTDL dla urządzenia termostatu definiuje dane telemetryczne, właściwości i polecenia implementuje urządzenie.

Otwórz plik pnp_simple_thermostat.js. W tym pliku można zobaczyć, jak wykonać następujące czynności:

  1. Zaimportuj wymagane interfejsy.
  2. Napisz procedurę obsługi aktualizacji właściwości i procedurę obsługi poleceń.
  3. Obsługa poprawek żądanych właściwości i wysyłanie danych telemetrycznych.
  4. Opcjonalnie aprowizacja urządzenia przy użyciu usługi Azure Device Provisioning Service (DPS).

W funkcji main można zobaczyć, jak wszystko się łączy:

  1. Utwórz urządzenie na podstawie parametry połączenia lub zaaprowizuj je przy użyciu usługi DPS).
  2. Użyj opcji modelID, aby określić model urządzenia IoT Plug and Play.
  3. Włącz program obsługi poleceń.
  4. Wysyłanie danych telemetrycznych z urządzenia do centrum.
  5. Pobierz bliźniacze reprezentację urządzeń i zaktualizuj zgłoszone właściwości.
  6. Włącz procedurę obsługi aktualizacji żądanej właściwości.

W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:

  • IOTHUB_DEVICE_SECURITY_TYPE z wartościąDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID z wartością my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
  • IOTHUB_DEVICE_DPS_ENDPOINT z wartością global.azure-devices-provisioning.net.

Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.

Uruchom przykładową aplikację, aby symulować urządzenie IoT Plug and Play, które wysyła dane telemetryczne do centrum IoT. Aby uruchomić przykładową aplikację, użyj następującego polecenia:

node pnp_simple_thermostat.js

Zobaczysz następujące dane wyjściowe wskazujące, że urządzenie zaczęło wysyłać dane telemetryczne do centrum i jest teraz gotowe do odbierania poleceń i aktualizacji właściwości.

Komunikaty potwierdzenia urządzenia

Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Weryfikowanie kodu za pomocą eksploratora usługi Azure IoT

Po uruchomieniu przykładu klienta urządzenia użyj narzędzia Azure IoT Explorer, aby sprawdzić, czy działa.

  1. Otwórz eksploratora usługi Azure IoT.

  2. Jeśli na stronie Centra IoT nie dodano jeszcze połączenia z centrum IoT, wybierz pozycję + Dodaj połączenie. Wprowadź parametry połączenia dla utworzonego wcześniej centrum IoT, a następnie wybierz pozycję Zapisz.

  3. Na stronie IoT Plug and Play Ustawienia wybierz pozycję + Dodaj > folder lokalny i wybierz folder modele lokalne, w którym zapisano pliki modelu.

  4. Na stronie Centra IoT kliknij nazwę centrum, z którym chcesz pracować. Zostanie wyświetlona lista urządzeń zarejestrowanych w centrum IoT.

  5. Kliknij identyfikator urządzenia utworzonego wcześniej.

  6. W menu po lewej stronie są wyświetlane różne typy informacji dostępnych dla urządzenia.

  7. Wybierz pozycję Składniki usługi IoT Plug and Play, aby wyświetlić informacje o modelu dla urządzenia.

  8. Możesz wyświetlić różne składniki urządzenia. Domyślny składnik i wszystkie dodatkowe. Wybierz składnik do pracy.

  9. Wybierz stronę Telemetria, a następnie wybierz pozycję Uruchom, aby wyświetlić dane telemetryczne wysyłane przez urządzenie dla tego składnika.

  10. Wybierz stronę Właściwości (tylko do odczytu), aby wyświetlić właściwości tylko do odczytu zgłoszone dla tego składnika.

  11. Wybierz stronę Właściwości (zapisywalne), aby wyświetlić właściwości zapisywalne, które można zaktualizować dla tego składnika.

  12. Wybierz właściwość według jej nazwy, wprowadź nową wartość, a następnie wybierz pozycję Aktualizuj żądaną wartość.

  13. Aby wyświetlić nową wartość, wybierz przycisk Odśwież .

  14. Wybierz stronę Polecenia, aby wyświetlić wszystkie polecenia dla tego składnika.

  15. Wybierz polecenie, które chcesz przetestować, aby ustawić parametr, jeśli istnieje. Wybierz pozycję Wyślij polecenie , aby wywołać polecenie na urządzeniu. Urządzenie może odpowiedzieć na polecenie w oknie wiersza polecenia, w którym jest uruchomiony przykładowy kod.

Czyszczenie zasobów

Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.

W tym samouczku pokazano, jak utworzyć przykładową aplikację urządzenia IoT Plug and Play, połączyć ją z centrum IoT i użyć narzędzia Eksplorator usługi Azure IoT, aby wyświetlić wysyłane dane telemetryczne. Przykładowa aplikacja jest napisana dla języka Python i jest zawarta w zestawie SDK urządzeń usługi Azure IoT Hub dla języka Python. Konstruktor rozwiązań może użyć narzędzia Azure IoT Explorer, aby zrozumieć możliwości urządzenia IoT Plug and Play bez konieczności wyświetlania kodu urządzenia.

Przeglądaj kod

Wymagania wstępne

Przed kontynuowaniem upewnij się, że skonfigurowano środowisko, w tym centrum IoT Hub.

Do ukończenia tego samouczka potrzebny jest język Python zainstalowany na komputerze deweloperskim. Zapoznaj się z zestawem SDK języka Python usługi Azure IoT, aby zapoznać się z bieżącymi wymaganiami dotyczącymi wersji języka Python. Możesz sprawdzić wersję języka Python za pomocą następującego polecenia:

python --version

Najnowszą zalecaną wersję dla wielu platform można pobrać z python.org.

W lokalnym środowisku języka Python zainstaluj pakiet w następujący sposób:

pip install azure-iot-device

Sklonuj repozytorium IoT zestawu SDK języka Python:

git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python

Uruchamianie przykładowego urządzenia

Folder azure-iot-sdk-python/samples/pnp zawiera przykładowy kod urządzenia IoT Plug and Play. W tym samouczku jest używany plik simple_thermostat.py . Ten przykładowy kod implementuje urządzenie zgodne z usługą IoT Plug and Play i korzysta z biblioteki klienta urządzenia języka Python usługi Azure IoT.

Otwórz plik simple_thermostat.py w edytorze tekstów. Zwróć uwagę na to, jak to zrobić:

  1. Definiuje pojedynczy identyfikator modelu bliźniaczej reprezentacji urządzenia (DTMI), który unikatowo reprezentuje termostat. Jednostka DTMI musi być znana użytkownikowi i różni się w zależności od scenariusza implementacji urządzenia. W przypadku bieżącej próbki model reprezentuje termostat, który ma dane telemetryczne, właściwości i polecenia skojarzone z temperaturą monitorowania.

  2. Ma funkcje do definiowania implementacji obsługi poleceń. Te programy obsługi służą do definiowania sposobu, w jaki urządzenie odpowiada na żądania poleceń.

  3. Ma funkcję definiującą odpowiedź polecenia. Utworzysz funkcje odpowiedzi polecenia, aby wysłać odpowiedź z powrotem do centrum IoT.

  4. Definiuje funkcję odbiornika klawiatury wejściowej, aby umożliwić zamknięcie aplikacji.

  5. Ma funkcję główną. Funkcja główna :

    1. Używa zestawu SDK urządzenia do tworzenia klienta urządzenia i nawiązywania połączenia z centrum IoT Hub.

    2. Aktualizacje właściwości. Model termostatu definiuje targetTemperature i maxTempSinceLastReboot jako dwie właściwości termostatu. Właściwości są aktualizowane przy użyciu metody zdefiniowanej patch_twin_reported_properties w obiekcie device_client.

    3. Uruchamia nasłuchiwanie żądań poleceń przy użyciu funkcji execute_command_listener . Funkcja konfiguruje odbiornik do nasłuchiwania poleceń pochodzących z usługi. Podczas konfigurowania odbiornika należy podać wartości method_name, user_command_handleri create_user_response_handler.

      • Funkcja user_command_handler definiuje, co powinno zrobić urządzenie po odebraniu polecenia.
      • Funkcja create_user_response_handler tworzy odpowiedź, która ma zostać wysłana do centrum IoT, gdy polecenie zostanie wykonane pomyślnie. Tę odpowiedź można wyświetlić w portalu.
    4. Rozpoczyna wysyłanie danych telemetrycznych. Pnp_send_telemetry jest definiowana w pliku pnp_methods.py. Przykładowy kod używa pętli do wywoływania tej funkcji co osiem sekund.

    5. Wyłącza wszystkie odbiorniki i zadania oraz istnieje pętla po naciśnięciu klawisza Q lub q.

W obszarze Konfigurowanie środowiska utworzono cztery zmienne środowiskowe w celu skonfigurowania przykładu pod kątem używania usługi Device Provisioning Service (DPS) do nawiązywania połączenia z centrum IoT:

  • IOTHUB_DEVICE_SECURITY_TYPE z wartościąDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE z zakresem identyfikatora usługi DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID z wartością my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY przy użyciu klucza podstawowego rejestracji.
  • IOTHUB_DEVICE_DPS_ENDPOINT z wartością global.azure-devices-provisioning.net.

Aby dowiedzieć się więcej na temat przykładowej konfiguracji, zobacz przykładowy plik readme.

Po wyświetleniu kodu użyj następującego polecenia, aby uruchomić przykład:

python simple_thermostat.py

Zobaczysz następujące dane wyjściowe, które wskazują, że urządzenie wysyła dane telemetryczne do centrum i jest teraz gotowe do odbierania poleceń i aktualizacji właściwości:

Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message

Zachowaj przykład uruchomiony podczas wykonywania następnych kroków.

Weryfikowanie kodu za pomocą eksploratora usługi Azure IoT

Po uruchomieniu przykładu klienta urządzenia użyj narzędzia Azure IoT Explorer, aby sprawdzić, czy działa.

  1. Otwórz eksploratora usługi Azure IoT.

  2. Jeśli na stronie Centra IoT nie dodano jeszcze połączenia z centrum IoT, wybierz pozycję + Dodaj połączenie. Wprowadź parametry połączenia dla utworzonego wcześniej centrum IoT, a następnie wybierz pozycję Zapisz.

  3. Na stronie IoT Plug and Play Ustawienia wybierz pozycję + Dodaj > folder lokalny i wybierz folder modele lokalne, w którym zapisano pliki modelu.

  4. Na stronie Centra IoT kliknij nazwę centrum, z którym chcesz pracować. Zostanie wyświetlona lista urządzeń zarejestrowanych w centrum IoT.

  5. Kliknij identyfikator urządzenia utworzonego wcześniej.

  6. W menu po lewej stronie są wyświetlane różne typy informacji dostępnych dla urządzenia.

  7. Wybierz pozycję Składniki usługi IoT Plug and Play, aby wyświetlić informacje o modelu dla urządzenia.

  8. Możesz wyświetlić różne składniki urządzenia. Domyślny składnik i wszystkie dodatkowe. Wybierz składnik do pracy.

  9. Wybierz stronę Telemetria, a następnie wybierz pozycję Uruchom, aby wyświetlić dane telemetryczne wysyłane przez urządzenie dla tego składnika.

  10. Wybierz stronę Właściwości (tylko do odczytu), aby wyświetlić właściwości tylko do odczytu zgłoszone dla tego składnika.

  11. Wybierz stronę Właściwości (zapisywalne), aby wyświetlić właściwości zapisywalne, które można zaktualizować dla tego składnika.

  12. Wybierz właściwość według jej nazwy, wprowadź nową wartość, a następnie wybierz pozycję Aktualizuj żądaną wartość.

  13. Aby wyświetlić nową wartość, wybierz przycisk Odśwież .

  14. Wybierz stronę Polecenia, aby wyświetlić wszystkie polecenia dla tego składnika.

  15. Wybierz polecenie, które chcesz przetestować, aby ustawić parametr, jeśli istnieje. Wybierz pozycję Wyślij polecenie , aby wywołać polecenie na urządzeniu. Urządzenie może odpowiedzieć na polecenie w oknie wiersza polecenia, w którym jest uruchomiony przykładowy kod.

Czyszczenie zasobów

Jeśli skończysz z przewodnikami Szybki start i samouczkami, zobacz Czyszczenie zasobów.

Jeśli tworzysz aplikacje dla urządzeń ograniczonych, możesz użyć usługi IoT Plug and Play z:

Ten artykuł zawiera linki i zasoby dla tych ograniczonych scenariuszy.

Wymagania wstępne

Wiele poniższych przykładów wymaga określonego urządzenia sprzętowego, a wymagania wstępne są inne dla każdego z przykładów. Postępuj zgodnie z linkiem do odpowiedniego przykładu, aby uzyskać szczegółowe instrukcje dotyczące wymagań wstępnych, konfiguracji i kompilacji.

Korzystanie z zestawu SDK dla osadzonego języka C

Zestaw SDK dla osadzonego języka C oferuje lekkie rozwiązanie do łączenia ograniczonych urządzeń z usługami Azure IoT, w tym przy użyciu konwencji IoT Plug and Play. Poniższe linki zawierają przykłady dla urządzeń opartych na mcU oraz do celów edukacyjnych i debugowania.

Korzystanie z urządzenia opartego na jednostkach MCU

Aby zapoznać się z kompletnym samouczkiem dotyczącym używania zestawu SDK dla osadzonego języka C, usługi Device Provisioning Service i usługi IoT Plug and Play na komputerze MCU, zobacz Repurpose PIC-IoT Wx Development Board w celu Połączenie do platformy Azure za pośrednictwem usługi IoT Hub Device Provisioning Service.

Przykłady wprowadzające

Zestaw SDK dla osadzonego repozytorium języka C zawiera kilka przykładów , które pokazują, jak używać usługi IoT Plug and Play:

Uwaga

Te przykłady są wyświetlane w systemach Windows i Linux w celach edukacyjnych i debugowania. W scenariuszu produkcyjnym próbki są przeznaczone tylko dla urządzeń ograniczonych.

Korzystanie ze środowiska Eclipse ThreadX

Środowisko Eclipse ThreadX zawiera uproszczoną warstwę, która dodaje natywną łączność z usługami w chmurze Azure IoT. Ta warstwa udostępnia prosty mechanizm łączenia ograniczonych urządzeń z usługą Azure IoT podczas korzystania z zaawansowanych funkcji środowiska Eclipse ThreadX. Aby dowiedzieć się więcej, zobacz Omówienie środowiska Eclipse ThreadX.

Łańcuchy narzędzi

Przykłady środowiska Eclipse ThreadX są dostarczane z różnymi rodzajami środowisk IDE i kombinacji łańcucha narzędzi, takich jak:

Przykłady

W poniższej tabeli wymieniono przykłady pokazujące, jak rozpocząć pracę na różnych urządzeniach przy użyciu środowiska Eclipse ThreadX i usługi IoT Plug and Play:

Producent Urządzenie Przykłady
Microchip ATSAME54-XPRO GCC/CMake • IARMPLAB
MXCHIP AZ3166 GCC/CMake
NXP MIMXRT1060-EVK GCC/CMake • IARMCUXpresso
STMicroelectronics 32F746GDISCOVERY IARSTM32Cube
STMicroelectronics B-L475E-IOT01 GCC/CMake • IARSTM32Cube
STMicroelectronics B-L4S5I-IOT01 GCC/CMake • IARSTM32Cube

Następne kroki

W tym samouczku przedstawiono sposób łączenia urządzenia IoT Plug and Play z centrum IoT Hub. Aby dowiedzieć się więcej na temat tworzenia rozwiązania, które współdziała z urządzeniami IoT Plug and Play, zobacz: