Megosztás a következőn keresztül:


Oktatóanyag: IoT Plug and Play több összetevős eszközalkalmazás csatlakoztatása Linux vagy Windows rendszeren az IoT Hubhoz

Ez az oktatóanyag bemutatja, hogyan hozhat létre egy minta IoT Plug and Play-eszközalkalmazást összetevőkkel, hogyan csatlakoztathatja azt az IoT Hubhoz, és hogyan tekintheti meg a központnak küldött információkat az Azure IoT Explorer eszközzel. A mintaalkalmazás C nyelven van megírva, és szerepel a C-hez készült Azure IoT-eszköz SDK-ban. A megoldáskészítők az Azure IoT Explorer eszközzel megismerhetik az IoT Plug and Play-eszközök képességeit anélkül, hogy bármilyen eszközkódot meg kellene tekinteniük.

Kód tallózása

Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • Töltse le a mintakódot.
  • Hozza létre a mintakódot.
  • Futtassa a mintaeszköz-alkalmazást, és ellenőrizze, hogy csatlakozik-e az IoT Hubhoz.
  • Tekintse át a forráskódot.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is elvégezheti. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az előfeltételek az operációs rendszertől függően eltérnek:

Linux

Ez az oktatóanyag feltételezi, hogy Ubuntu Linuxot használ. Az oktatóanyag lépéseit az Ubuntu 18.04-ben teszteltük.

Az oktatóanyag Linuxon való elvégzéséhez telepítse a következő szoftvert a helyi Linux-környezetbe:

Telepítse a GCC-t, a Gitet, a cmake-t és az összes szükséges függőséget a apt-get következő paranccsal:

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

Ellenőrizze, hogy a verziószáma cmake meghaladja-e a 2.8.12-es verziót, és hogy a GCC verziója a 4.4.7-esnél magasabb-e.

cmake --version
gcc --version

Windows

Az oktatóanyag Windows rendszeren való elvégzéséhez telepítse a következő szoftvert a helyi Windows-környezetbe:

A kód letöltése

Ha elvégezte az oktatóanyagot: Csatlakoztassa a Linuxon vagy Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (C), már letöltötte a kódot.

Ebben az oktatóanyagban egy fejlesztési környezetet készít elő, a segítségével klónozhat és létrehozhatja az Azure IoT Hub Device C SDK-t.

Nyisson meg egy parancssort egy tetszőleges mappában. Hajtsa végre a következő parancsot az Azure IoT C SDK-k és -tárak GitHub-adattárának klónozásához erre a helyre:

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

A művelet végrehajtása várhatóan több percet vesz igénybe.

A kód létrehozása és futtatása

A kódot a Visual Studióval vagy cmake a parancssorban hozhatja létre és futtathatja.

A Visual Studio használata

  1. Nyissa meg a klónozott adattár gyökérmappáját. Néhány másodperc elteltével a Visual Studio CMake-támogatása minden szükséges eszközt létrehoz a projekt futtatásához és hibakereséséhez.

  2. Ha a Visual Studio készen áll, a Megoldáskezelő lépjen a minta iothub_client/samples/pnp/pnp_temperature_controller/.

  3. Kattintson a jobb gombbal a pnp_temperature_controller.c fájlra, és válassza a Hibakeresési konfiguráció hozzáadása lehetőséget. Válassza az Alapértelmezett lehetőséget.

  4. A Visual Studio megnyitja a launch.vs.json fájlt. Szerkessze ezt a fájlt az alábbi kódrészletben látható módon a szükséges környezeti változók beállításához. Jegyezte fel a hatókör azonosítóját és a regisztrációs elsődleges kulcsot, amikor befejezte a környezet beállítását az IoT Plug and Play gyorsútmutatóihoz és oktatóanyagaihoz:

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "iothub_client\\samples\\pnp\\pnp_temperature_controller\\pnp_temperature_controller.c",
          "projectTarget": "",
          "name": "pnp_temperature_controller.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. Kattintson a jobb gombbal a pnp_temperature_controller.c fájlra, és válassza a Beállítás indítási elemként lehetőséget.

  6. A Visual Studióban a kódvégrehajtás nyomon követéséhez adjon hozzá egy töréspontot a main függvényhez a pnp_temperature_controller.c fájlban.

  7. Most már futtathatja és hibakeresésre használhatja a mintát a Hibakeresés menüből.

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

Használat cmake a parancssorban

A minta létrehozása:

  1. Hozzon létre egy cmake almappát a klónozott eszköz SDK gyökérmappájában, és keresse meg a mappát:

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. Futtassa az alábbi parancsokat az SDK-hoz és mintákhoz tartozó projektfájlok létrehozásához és létrehozásához:

    cmake ..
    cmake --build .
    

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_SECURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

A minta futtatása:

  1. A cmake mappából keresse meg a végrehajtható fájlt tartalmazó mappát, és futtassa azt:

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

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

A kód ellenőrzése az Azure IoT Explorer használatával

Az eszközügyfél-minta elindítása után az Azure IoT Explorer eszközzel ellenőrizze, hogy működik-e.

  1. Nyissa meg az Azure IoT Explorert.

  2. Az IoT Hubs lapon, ha még nem adott hozzá kapcsolatot az IoT Hubhoz, válassza a + Kapcsolat hozzáadása lehetőséget. Adja meg a korábban létrehozott IoT Hub kapcsolati sztring, és válassza a Mentés lehetőséget.

  3. Az IoT Plug and Play Beállítások lapján válassza a + Helyi mappa hozzáadása > lehetőséget, és válassza ki azt a helyi modellmappát, ahová a modellfájlokat mentette.

  4. Az IoT Hubs lapon kattintson a használni kívánt központ nevére. Megjelenik az IoT Hubon regisztrált eszközök listája.

  5. Kattintson a korábban létrehozott eszköz eszközazonosítójára .

  6. A bal oldali menüben az eszközhöz elérhető különböző típusú információk láthatók.

  7. Válassza az IoT Plug and Play-összetevőket az eszköz modelladatainak megtekintéséhez.

  8. Megtekintheti az eszköz különböző összetevőit. Az alapértelmezett összetevő és a továbbiak. Válasszon ki egy összetevőt, amellyel dolgozni szeretne.

  9. Válassza a Telemetriai lapot, majd a Start gombra kattintva megtekintheti az eszköz által az összetevőhöz küldött telemetriai adatokat.

  10. Válassza a Tulajdonságok (írásvédett) lapot az összetevőhöz jelentett írásvédett tulajdonságok megtekintéséhez.

  11. Válassza a Tulajdonságok (írható) lapot az összetevőhöz frissíthető írható tulajdonságok megtekintéséhez.

  12. Válasszon ki egy tulajdonságot a neve alapján, adjon meg egy új értéket, és válassza a Kívánt érték frissítése lehetőséget.

  13. Az új érték megjelenítéséhez válassza a Frissítés gombot.

  14. Válassza a Parancsok lapot az összetevő összes parancsának megtekintéséhez.

  15. Válassza ki azt a parancsot, amelyet tesztelni szeretne, és ha van ilyen, állítsa be a paramétert. Válassza a Küldés parancsot az eszköz parancsának meghívásához. Az eszköz a parancsra válaszolva jelenik meg a parancssori ablakban, ahol a mintakód fut.

A kód áttekintése

Ez a minta egy IoT Plug and Play hőmérsékletvezérlő eszközt implementál. Ez a minta egy több összetevőt tartalmazó modellt implementál. A hőmérsékleti eszköz Digital Twins Definition Language (DTDL) modellfájlja határozza meg az eszköz által implementált telemetriát, tulajdonságokat és parancsokat.

Az IoT Plug and Play segédfüggvényei

Ebben a példában a kód néhány segédfüggvényt használ a /common mappából:

pnp_device_client_ll tartalmazza az IoT Plug and Play csatlakoztatási metódusát a model-id következő paraméterrel: PnP_CreateDeviceClientLLHandle.

pnp_protocol: az IoT Plug and Play segédfüggvényeket tartalmazza:

  • PnP_CreateReportedProperty
  • PnP_CreateReportedPropertyWithStatus
  • PnP_ParseCommandName
  • PnP_CreateTelemetryMessageHandle
  • PnP_ProcessTwinData
  • PnP_CopyPayloadToString
  • PnP_CreateDeviceClientLLHandle_ViaDps

Ezek a segédfüggvények elég általánosak ahhoz, hogy a saját projektjében használják őket. Ez a minta a modell minden összetevőjének megfelelő három fájlban használja őket:

  • pnp_deviceinfo_component
  • pnp_temperature_controller
  • pnp_thermostat_component

A pnp_deviceinfo_component fájlban például a SendReportedPropertyForDeviceInformation függvény két segédfüggvényt használ:

if ((jsonToSend = PnP_CreateReportedProperty(componentName, propertyName, propertyValue)) == NULL)
{
    LogError("Unable to build reported property response for propertyName=%s, propertyValue=%s", propertyName, propertyValue);
}
else
{
    const char* jsonToSendStr = STRING_c_str(jsonToSend);
    size_t jsonToSendStrLen = strlen(jsonToSendStr);

    if ((iothubClientResult = IoTHubDeviceClient_LL_SendReportedState(deviceClientLL, (const unsigned char*)jsonToSendStr, jsonToSendStrLen, NULL, NULL)) != IOTHUB_CLIENT_OK)
    {
        LogError("Unable to send reported state for property=%s, error=%d", propertyName, iothubClientResult);
    }
    else
    {
        LogInfo("Sending device information property to IoTHub.  propertyName=%s, propertyValue=%s", propertyName, propertyValue);
    }
}

A minta minden összetevője ezt a mintát követi.

Kódfolyamat

A main függvény inicializálja a kapcsolatot, és elküldi a modellazonosítót:

deviceClient = CreateDeviceClientAndAllocateComponents();

A kód az IoT Hubhoz való csatlakozásra, beállításként való beállításramodelId, valamint az eszköz metódusának és ikereszköz-visszahívás-kezelőinek beállítására szolgál PnP_CreateDeviceClientLLHandle a közvetlen metódusokhoz és az ikereszköz-frissítésekhez:

g_pnpDeviceConfiguration.deviceMethodCallback = PnP_TempControlComponent_DeviceMethodCallback;
g_pnpDeviceConfiguration.deviceTwinCallback = PnP_TempControlComponent_DeviceTwinCallback;
g_pnpDeviceConfiguration.modelId = g_temperatureControllerModelId;
...

deviceClient = PnP_CreateDeviceClientLLHandle(&g_pnpDeviceConfiguration);

&g_pnpDeviceConfiguration a kapcsolati adatokat is tartalmazza. A környezeti változó IOTHUB_DEVICE_SECURITY_TYPE határozza meg, hogy a minta egy kapcsolati sztring vagy az eszközkiépítési szolgáltatás használatával csatlakozik-e az IoT Hubhoz.

Amikor az eszköz modellazonosítót küld, IoT Plug and Play-eszköz lesz.

A visszahíváskezelők használata esetén az eszköz reagál az ikerfrissítésekre és a közvetlen metódushívásokra:

  • Az ikereszköz visszahívása esetén a függvény meghívja PnP_TempControlComponent_DeviceTwinCallback a PnP_ProcessTwinData függvényt az adatok feldolgozására. PnP_ProcessTwinData A látogatói minta használatával elemzi a JSON-t, majd meglátogatja az egyes tulajdonságokat, és meghívja PnP_TempControlComponent_ApplicationPropertyCallback az egyes elemeket.

  • A parancsok visszahívásához a függvény a PnP_TempControlComponent_DeviceMethodCallback segédfüggvény használatával elemzi a parancsokat és az összetevők nevét:

    PnP_ParseCommandName(methodName, &componentName, &componentNameSize, &pnpCommandName);
    

    A PnP_TempControlComponent_DeviceMethodCallback függvény ezután meghívja az összetevő parancsát:

    LogInfo("Received PnP command for component=%.*s, command=%s", (int)componentNameSize, componentName, pnpCommandName);
    if (strncmp((const char*)componentName, g_thermostatComponent1Name, g_thermostatComponent1Size) == 0)
    {
        result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle1, pnpCommandName, rootValue, response, responseSize);
    }
    else if (strncmp((const char*)componentName, g_thermostatComponent2Name, g_thermostatComponent2Size) == 0)
    {
        result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle2, pnpCommandName, rootValue, response, responseSize);
    }
    else
    {
        LogError("PnP component=%.*s is not supported by TemperatureController", (int)componentNameSize, componentName);
        result = PNP_STATUS_NOT_FOUND;
    }
    

A main függvény inicializálja az IoT Hubnak küldött írásvédett tulajdonságokat:

PnP_TempControlComponent_ReportSerialNumber_Property(deviceClient);
PnP_DeviceInfoComponent_Report_All_Properties(g_deviceInfoComponentName, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle1, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle2, deviceClient);

A main függvény egy ciklust ad meg az egyes összetevők esemény- és telemetriai adatainak frissítéséhez:

while (true)
{
    PnP_TempControlComponent_SendWorkingSet(deviceClient);
    PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle1, deviceClient);
    PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle2, deviceClient);
}

A PnP_ThermostatComponent_SendTelemetry függvény bemutatja, hogyan használhatja a PNP_THERMOSTAT_COMPONENT szerkezetet. A minta ezt a szerkezetet használja a két termosztát információinak tárolására a hőmérséklet-vezérlőben. A kód a függvény használatával PnP_CreateTelemetryMessageHandle készíti elő és küldi el az üzenetet:

messageHandle = PnP_CreateTelemetryMessageHandle(pnpThermostatComponent->componentName, temperatureStringBuffer);
...
iothubResult = IoTHubDeviceClient_LL_SendEventAsync(deviceClientLL, messageHandle, NULL, NULL);

A main függvény végül megsemmisíti a különböző összetevőket, és bezárja a kapcsolatot a központtal.

Ez az oktatóanyag bemutatja, hogyan hozhat létre egy minta IoT Plug and Play-eszközalkalmazást összetevőkkel, hogyan csatlakoztathatja azt az IoT Hubhoz, és hogyan tekintheti meg a központnak küldött információkat az Azure IoT Explorer eszközzel. A mintaalkalmazás C# nyelven van megírva, és a C#-hoz készült Azure IoT-eszköz SDK része. A megoldáskészítők az Azure IoT Explorer eszközzel megismerhetik az IoT Plug and Play-eszközök képességeit anélkül, hogy bármilyen eszközkódot meg kellene tekinteniük.

Kód tallózása

Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • Töltse le a mintakódot.
  • Hozza létre a mintakódot.
  • Futtassa a mintaeszköz-alkalmazást, és ellenőrizze, hogy csatlakozik-e az IoT Hubhoz.
  • Tekintse át a forráskódot.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is futtathatja. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az SDK-adattár klónozása a mintakóddal

Ha elvégezte az oktatóanyagot: Csatlakoztassa a Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (C#), már klónozta az adattárat.

Klónozza a C# GitHub-adattárhoz készült Azure IoT-minták mintáit. Nyisson meg egy parancssort egy tetszőleges mappában. Futtassa a következő parancsot a Microsoft Azure IoT SDK for .NET GitHub-adattár klónozásához:

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

A kód létrehozása

Most már létrehozhatja és futtathatja a mintát. A minta létrehozásához futtassa a következő parancsokat:

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

Az eszközminta futtatása

A minta futtatásához futtassa a következő parancsot:

dotnet run

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

Az Azure IoT Explorer használata a kód ellenőrzéséhez

Az eszközügyfél-minta elindítása után az Azure IoT Explorer eszközzel ellenőrizze, hogy működik-e.

  1. Nyissa meg az Azure IoT Explorert.

  2. Az IoT Hubs lapon, ha még nem adott hozzá kapcsolatot az IoT Hubhoz, válassza a + Kapcsolat hozzáadása lehetőséget. Adja meg a korábban létrehozott IoT Hub kapcsolati sztring, és válassza a Mentés lehetőséget.

  3. Az IoT Plug and Play Beállítások lapján válassza a + Helyi mappa hozzáadása > lehetőséget, és válassza ki azt a helyi modellmappát, ahová a modellfájlokat mentette.

  4. Az IoT Hubs lapon kattintson a használni kívánt központ nevére. Megjelenik az IoT Hubon regisztrált eszközök listája.

  5. Kattintson a korábban létrehozott eszköz eszközazonosítójára .

  6. A bal oldali menüben az eszközhöz elérhető különböző típusú információk láthatók.

  7. Válassza az IoT Plug and Play-összetevőket az eszköz modelladatainak megtekintéséhez.

  8. Megtekintheti az eszköz különböző összetevőit. Az alapértelmezett összetevő és a továbbiak. Válasszon ki egy összetevőt, amellyel dolgozni szeretne.

  9. Válassza a Telemetriai lapot, majd a Start gombra kattintva megtekintheti az eszköz által az összetevőhöz küldött telemetriai adatokat.

  10. Válassza a Tulajdonságok (írásvédett) lapot az összetevőhöz jelentett írásvédett tulajdonságok megtekintéséhez.

  11. Válassza a Tulajdonságok (írható) lapot az összetevőhöz frissíthető írható tulajdonságok megtekintéséhez.

  12. Válasszon ki egy tulajdonságot a neve alapján, adjon meg egy új értéket, és válassza a Kívánt érték frissítése lehetőséget.

  13. Az új érték megjelenítéséhez válassza a Frissítés gombot.

  14. Válassza a Parancsok lapot az összetevő összes parancsának megtekintéséhez.

  15. Válassza ki azt a parancsot, amelyet tesztelni szeretne, és ha van ilyen, állítsa be a paramétert. Válassza a Küldés parancsot az eszköz parancsának meghívásához. Az eszköz a parancsra válaszolva jelenik meg a parancssori ablakban, ahol a mintakód fut.

A kód áttekintése

Ez a minta egy IoT Plug and Play hőmérsékletvezérlő eszközt implementál. Az a modell, amelyet ez a minta implementál, több összetevőt használ. A hőmérsékleti eszköz Digital Twins Definition Language (DTDL) modellfájlja határozza meg az eszköz által implementált telemetriát, tulajdonságokat és parancsokat.

Az eszközkód a standard CreateFromConnectionString módszerrel csatlakozik az IoT Hubhoz. Az eszköz elküldi a kapcsolatkérésben implementált DTDL-modell modellazonosítóját. A modellazonosítót küldő eszköz egy IoT Plug and Play-eszköz:

private static DeviceClient InitializeDeviceClient(string hostname, IAuthenticationMethod authenticationMethod)
{
    var options = new ClientOptions
    {
        ModelId = ModelId,
    };

    var deviceClient = DeviceClient.Create(hostname, authenticationMethod, TransportType.Mqtt, options);
    deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
    {
        s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
    });

    return deviceClient;
}

A modellazonosítót a kód tárolja az alábbi kódrészletben látható módon:

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

Miután az eszköz csatlakozott az IoT Hubhoz, a kód regisztrálja a parancskezelőket. A reboot parancs az alapértelmezett összetevőben van definiálva. A getMaxMinReport parancs a két termosztát-összetevő mindegyikében definiálva van:

await _deviceClient.SetMethodHandlerAsync("reboot", HandleRebootCommandAsync, _deviceClient, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat1*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat1, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat2*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat2, cancellationToken);

A két termosztát-összetevőhöz külön kezelők tartoznak a kívánt tulajdonságfrissítésekhez:

_desiredPropertyUpdateCallbacks.Add(Thermostat1, TargetTemperatureUpdateCallbackAsync);
_desiredPropertyUpdateCallbacks.Add(Thermostat2, TargetTemperatureUpdateCallbackAsync);

A mintakód telemetriát küld az egyes termosztát-összetevőkről:

await SendTemperatureAsync(Thermostat1, cancellationToken);
await SendTemperatureAsync(Thermostat2, cancellationToken);

A SendTemperatureTelemetryAsync metódus az PnpHelper osztály használatával hoz létre üzeneteket az egyes összetevőkhöz:

using Message msg = PnpHelper.CreateIothubMessageUtf8(telemetryName, JsonConvert.SerializeObject(currentTemperature), componentName);

Az PnpHelper osztály más, több összetevős modellel használható mintamódszereket is tartalmaz.

Az Azure IoT Explorer eszközzel megtekintheti a két termosztát-összetevő telemetriáját és tulajdonságait:

Több összetevős eszköz az Azure IoT Explorerben

Az Azure IoT Explorer eszközzel parancsokat is meghívhat a két termosztát-összetevőben vagy az alapértelmezett összetevőben.

Ez az oktatóanyag bemutatja, hogyan hozhat létre egy minta IoT Plug and Play-eszközalkalmazást összetevőkkel, hogyan csatlakoztathatja azt az IoT Hubhoz, és hogyan tekintheti meg a központnak küldött információkat az Azure IoT Explorer eszközzel. A mintaalkalmazás Java nyelven van megírva, és a Java-hoz készült Azure IoT-eszköz SDK része. A megoldáskészítők az Azure IoT Explorer eszközzel megismerhetik az IoT Plug and Play-eszközök képességeit anélkül, hogy bármilyen eszközkódot meg kellene tekinteniük.

Kód tallózása

Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • Töltse le a mintakódot.
  • Hozza létre a mintakódot.
  • Futtassa a mintaeszköz-alkalmazást, és ellenőrizze, hogy csatlakozik-e az IoT Hubhoz.
  • Tekintse át a forráskódot.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is futtathatja. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az oktatóanyag elvégzéséhez telepítse a következő szoftvert a helyi fejlesztési környezetben:

A kód letöltése

Ha elvégezte az oktatóanyagot: Csatlakoztassa a minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (Java), már klónozta az adattárat.

Nyisson meg egy parancssort a választott könyvtárban. Hajtsa végre a következő parancsot az Azure IoT Java SDK-k és -tárak GitHub-adattárának klónozásához erre a helyre:

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

A művelet végrehajtása várhatóan több percet vesz igénybe.

A kód létrehozása

Keresse meg a hőmérséklet-vezérlő minta gyökérmappáját a klónozott Java SDK-adattárban, és hozza létre:

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

Az eszközminta futtatása

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_SECURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintaalkalmazás futtatásához keresse meg a /device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample mappát, és futtassa a következő parancsot:

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

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

Az Azure IoT Explorer használata a kód ellenőrzéséhez

Az eszközügyfél-minta elindítása után az Azure IoT Explorer eszközzel ellenőrizze, hogy működik-e.

  1. Nyissa meg az Azure IoT Explorert.

  2. Az IoT Hubs lapon, ha még nem adott hozzá kapcsolatot az IoT Hubhoz, válassza a + Kapcsolat hozzáadása lehetőséget. Adja meg a korábban létrehozott IoT Hub kapcsolati sztring, és válassza a Mentés lehetőséget.

  3. Az IoT Plug and Play Beállítások lapján válassza a + Helyi mappa hozzáadása > lehetőséget, és válassza ki azt a helyi modellmappát, ahová a modellfájlokat mentette.

  4. Az IoT Hubs lapon kattintson a használni kívánt központ nevére. Megjelenik az IoT Hubon regisztrált eszközök listája.

  5. Kattintson a korábban létrehozott eszköz eszközazonosítójára .

  6. A bal oldali menüben az eszközhöz elérhető különböző típusú információk láthatók.

  7. Válassza az IoT Plug and Play-összetevőket az eszköz modelladatainak megtekintéséhez.

  8. Megtekintheti az eszköz különböző összetevőit. Az alapértelmezett összetevő és a továbbiak. Válasszon ki egy összetevőt, amellyel dolgozni szeretne.

  9. Válassza a Telemetriai lapot, majd a Start gombra kattintva megtekintheti az eszköz által az összetevőhöz küldött telemetriai adatokat.

  10. Válassza a Tulajdonságok (írásvédett) lapot az összetevőhöz jelentett írásvédett tulajdonságok megtekintéséhez.

  11. Válassza a Tulajdonságok (írható) lapot az összetevőhöz frissíthető írható tulajdonságok megtekintéséhez.

  12. Válasszon ki egy tulajdonságot a neve alapján, adjon meg egy új értéket, és válassza a Kívánt érték frissítése lehetőséget.

  13. Az új érték megjelenítéséhez válassza a Frissítés gombot.

  14. Válassza a Parancsok lapot az összetevő összes parancsának megtekintéséhez.

  15. Válassza ki azt a parancsot, amelyet tesztelni szeretne, és ha van ilyen, állítsa be a paramétert. Válassza a Küldés parancsot az eszköz parancsának meghívásához. Az eszköz a parancsra válaszolva jelenik meg a parancssori ablakban, ahol a mintakód fut.

A kód áttekintése

Ez a minta egy IoT Plug and Play hőmérsékletvezérlő eszközt implementál. Az a modell, amelyet ez a minta implementál, több összetevőt használ. A hőmérsékleti eszköz Digital Twins Definition Language (DTDL) modellfájlja határozza meg az eszköz által implementált telemetriát, tulajdonságokat és parancsokat.

Az eszközkód a standard DeviceClient osztály használatával csatlakozik az IoT Hubhoz. Az eszköz elküldi a kapcsolatkérésben implementált DTDL-modell modellazonosítóját. A modellazonosítót küldő eszköz egy IoT Plug and Play-eszköz:

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();
}

A modellazonosítót a kód tárolja az alábbi kódrészletben látható módon:

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

Miután az eszköz csatlakozott az IoT Hubhoz, a kód regisztrálja a parancskezelőket.

deviceClient.subscribeToDeviceMethod(new MethodCallback(), null, new MethodIotHubEventCallback(), null);

A két termosztát-összetevőhöz külön kezelők tartoznak a kívánt tulajdonságfrissítésekhez:

deviceClient.startDeviceTwin(new TwinIotHubEventCallback(), null, new GenericPropertyUpdateCallback(), null);
Map<Property, Pair<TwinPropertyCallBack, Object>> desiredPropertyUpdateCallback = Stream.of(
        new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
                new Property(THERMOSTAT_1, null),
                new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_1)),
        new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
                new Property(THERMOSTAT_2, null),
                new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_2))
).collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));

deviceClient.subscribeToTwinDesiredProperties(desiredPropertyUpdateCallback);

A mintakód telemetriát küld az egyes termosztát-összetevőkről:

sendTemperatureReading(THERMOSTAT_1);
sendTemperatureReading(THERMOSTAT_2);

A sendTemperatureReading metódus az PnpHelper osztály használatával hoz létre üzeneteket az egyes összetevőkhöz:

Message message = PnpHelper.createIotHubMessageUtf8(telemetryName, currentTemperature, componentName);

Az PnpHelper osztály más, több összetevős modellel használható mintamódszereket is tartalmaz.

Az Azure IoT Explorer eszközzel megtekintheti a két termosztát-összetevő telemetriáját és tulajdonságait:

Több összetevős eszköz az Azure IoT Explorerben

Az Azure IoT Explorer eszközzel parancsokat is meghívhat a két termosztát-összetevőben vagy az alapértelmezett összetevőben.

Ez az oktatóanyag bemutatja, hogyan hozhat létre egy minta IoT Plug and Play-eszközalkalmazást összetevőkkel, hogyan csatlakoztathatja azt az IoT Hubhoz, és hogyan tekintheti meg a központnak küldött információkat az Azure IoT Explorer eszközzel. A mintaalkalmazás Node.js íródott, és az Azure IoT Hub Device SDK for Node.js része. A megoldáskészítők az Azure IoT Explorer eszközzel megismerhetik az IoT Plug and Play-eszközök képességeit anélkül, hogy bármilyen eszközkódot meg kellene tekinteniük.

Kód tallózása

Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • Töltse le a mintakódot.
  • Futtassa a mintaeszköz-alkalmazást, és ellenőrizze, hogy csatlakozik-e az IoT Hubhoz.
  • Tekintse át a forráskódot.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Az oktatóanyag elvégzéséhez Node.js kell a fejlesztői gépen. A legújabb ajánlott verziót több platformra is letöltheti a nodejs.org.

A Node.js aktuális verzióját a következő paranccsal ellenőrizheti a fejlesztői gépen:

node --version

A kód letöltése

Ha elvégezte az oktatóanyagot: Csatlakoztassa a Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (Node), már klónozta az adattárat.

Nyisson meg egy parancssort a választott könyvtárban. Hajtsa végre a következő parancsot a Microsoft Azure IoT SDK klónozásához Node.js GitHub-adattárhoz erre a helyre:

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

A szükséges kódtárak telepítése

Az eszköz SDK-jával hozza létre a mellékelt mintakódot. A buildelt alkalmazás egy Plug and Play-eszközt szimulál több összetevővel, amelyek egy IoT Hubhoz csatlakoznak. Az alkalmazás telemetriát és tulajdonságokat küld, és parancsokat fogad.

  1. Egy helyi terminálablakban lépjen a klónozott adattár mappájába, és keresse meg az /azure-iot-sdk-node/device/samples/javascript mappát. Ezután futtassa a következő parancsot a szükséges kódtárak telepítéséhez:
npm install

Ez a parancs telepíti a minták mappában való futtatásához szükséges megfelelő npm-fájlokat.

A kód áttekintése

Nyissa meg az azure-iot-sdk-node/device/samples/javascript mappát.

Az azure-iot-sdk-node/device/samples/javascript mappa tartalmazza az IoT Plug and Play hőmérsékletvezérlő eszköz mintakódját.

A pnp_temperature_controller.js fájlban lévő kód egy IoT Plug and Play hőmérsékletvezérlő eszközt implementál. Az a modell, amelyet ez a minta implementál, több összetevőt használ. A hőmérsékleti eszköz Digital Twins Definition Language (DTDL) modellfájlja határozza meg az eszköz által implementált telemetriát, tulajdonságokat és parancsokat.

Nyissa meg a pnp_temperature_controller.js fájlt egy tetszőleges kódszerkesztőben. A mintakód a következő lépéseket mutatja be:

  • Adja meg a modelId implementálható eszköz DTMI-jét. Ez a DTMI felhasználó által definiált, és meg kell egyeznie a hőmérséklet-vezérlő DTDL-modelljének DTMI-ével.

  • Implementálja a hőmérséklet-vezérlő DTDL-modelljében definiált összetevőket. A valós hőmérséklet-vezérlő összetevőinek ezt a két interfészt kell implementálniuk. Ez a két felület már közzé van téve egy központi adattárban. Ebben a mintában a két interfész a következő:

    • Termosztát
    • Az Azure által kifejlesztett eszközinformációk
  • Adja meg az összetevők nevét. Ez a minta két termosztáttal és egy eszközinformációs összetevővel rendelkezik.

  • Adja meg azoknak a parancsoknak a parancsneveit, amelyekre az eszköz válaszol.

  • Határozza meg az állandót serialNumber . Az serialNumber adott eszköz javítva van.

  • Adja meg a parancskezelőket.

  • Adja meg a parancsválaszok küldéséhez szükséges függvényeket.

  • Segédfüggvények definiálása parancskérések naplózásához.

  • Adjon meg egy segédfüggvényt a tulajdonságok létrehozásához.

  • Adjon meg egy figyelőt a tulajdonságfrissítésekhez.

  • Adjon meg egy függvényt, amely telemetriát küld erről az eszközről. Mind a termosztátok, mind az alapértelmezett összetevő telemetriát küld. Ez a függvény paraméterként kapja meg az összetevő nevét.

  • Definiáljon egy függvényt main , amely:

    • Az eszköz SDK használatával hoz létre egy eszközügyfélt, és csatlakozik az IoT Hubhoz. Az eszköz biztosítja azt, hogy az modelId IoT Hub IoT Plug and Play-eszközként azonosíthassa az eszközt.

    • A függvény használatával megkezdi a parancskérések figyelését onDeviceMethod . A függvény beállít egy figyelőt a szolgáltatás parancskéréseihez:

      • Az eszköz DTDL-je határozza meg a parancsokat és getMaxMinReport a reboot parancsokat.
      • A commandHandler függvény meghatározza, hogy az eszköz hogyan reagál egy parancsra.
    • Elkezdi a telemetriai adatok küldését az és sendTelemetrya használatávalsetInterval.

    • A függvény használatával helperCreateReportedPropertiesPatch hozza létre a tulajdonságokat, és updateComponentReportedProperties frissíti a tulajdonságokat.

    • A tulajdonságfrissítések figyelésére használható desiredPropertyPatchListener .

    • Letiltja az összes figyelőt és feladatot, és kilép a ciklusból a Q vagy a q billentyű lenyomásakor.

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_SECURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

Most, hogy megismerte a kódot, futtassa a mintát a következő paranccsal:

node pnp_temperature_controller.js

Az alábbi kimenet azt jelzi, hogy az eszköz megkezdte a telemetriai adatok küldését a központba, és készen áll a parancsok és a tulajdonságfrissítések fogadására.

Eszközmegerősítő üzenetek

A minta futásának fenntartása a következő lépések végrehajtása során.

Az Azure IoT Explorer használata a kód ellenőrzéséhez

Az eszközügyfél-minta elindítása után az Azure IoT Explorer eszközzel ellenőrizze, hogy működik-e.

  1. Nyissa meg az Azure IoT Explorert.

  2. Az IoT Hubs lapon, ha még nem adott hozzá kapcsolatot az IoT Hubhoz, válassza a + Kapcsolat hozzáadása lehetőséget. Adja meg a korábban létrehozott IoT Hub kapcsolati sztring, és válassza a Mentés lehetőséget.

  3. Az IoT Plug and Play Beállítások lapján válassza a + Helyi mappa hozzáadása > lehetőséget, és válassza ki azt a helyi modellmappát, ahová a modellfájlokat mentette.

  4. Az IoT Hubs lapon kattintson a használni kívánt központ nevére. Megjelenik az IoT Hubon regisztrált eszközök listája.

  5. Kattintson a korábban létrehozott eszköz eszközazonosítójára .

  6. A bal oldali menüben az eszközhöz elérhető különböző típusú információk láthatók.

  7. Válassza az IoT Plug and Play-összetevőket az eszköz modelladatainak megtekintéséhez.

  8. Megtekintheti az eszköz különböző összetevőit. Az alapértelmezett összetevő és a továbbiak. Válasszon ki egy összetevőt, amellyel dolgozni szeretne.

  9. Válassza a Telemetriai lapot, majd a Start gombra kattintva megtekintheti az eszköz által az összetevőhöz küldött telemetriai adatokat.

  10. Válassza a Tulajdonságok (írásvédett) lapot az összetevőhöz jelentett írásvédett tulajdonságok megtekintéséhez.

  11. Válassza a Tulajdonságok (írható) lapot az összetevőhöz frissíthető írható tulajdonságok megtekintéséhez.

  12. Válasszon ki egy tulajdonságot a neve alapján, adjon meg egy új értéket, és válassza a Kívánt érték frissítése lehetőséget.

  13. Az új érték megjelenítéséhez válassza a Frissítés gombot.

  14. Válassza a Parancsok lapot az összetevő összes parancsának megtekintéséhez.

  15. Válassza ki azt a parancsot, amelyet tesztelni szeretne, és ha van ilyen, állítsa be a paramétert. Válassza a Küldés parancsot az eszköz parancsának meghívásához. Az eszköz a parancsra válaszolva jelenik meg a parancssori ablakban, ahol a mintakód fut.

Ez az oktatóanyag bemutatja, hogyan hozhat létre egy minta IoT Plug and Play-eszközalkalmazást összetevőkkel, hogyan csatlakoztathatja azt az IoT Hubhoz, és hogyan tekintheti meg a központnak küldött információkat az Azure IoT Explorer eszközzel. A mintaalkalmazás Pythonban van megírva, és szerepel a Pythonhoz készült Azure IoT-eszköz SDK-ban. A megoldáskészítők az Azure IoT Explorer eszközzel megismerhetik az IoT Plug and Play-eszközök képességeit anélkül, hogy bármilyen eszközkódot meg kellene tekinteniük.

Kód tallózása

Az oktatóanyag során az alábbi lépéseket fogja végrehajtani:

  • Töltse le a mintakódot.
  • Futtassa a mintaeszköz-alkalmazást, és ellenőrizze, hogy csatlakozik-e az IoT Hubhoz.
  • Tekintse át a forráskódot.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is futtathatja. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az oktatóanyag elvégzéséhez telepítenie kell a Pythont a fejlesztői gépen. Tekintse meg az Azure IoT Python SDK aktuális Python-verziókövetelményeit. A Python-verziót a következő paranccsal ellenőrizheti:

python --version

A legújabb ajánlott verziót több platformra is letöltheti a python.org.

A kód letöltése

Az azure-iot-device csomag PIP-ként van közzétéve.

A helyi Python-környezetben telepítse a csomagot az alábbiak szerint:

pip install azure-iot-device

Ha elvégezte az oktatóanyagot: Csatlakoztassa a Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (Python), már klónozta az adattárat.

Klónozza a Python SDK IoT-adattárat:

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

A kód áttekintése

Ez a minta egy IoT Plug and Play hőmérsékletvezérlő eszközt implementál. Az a modell, amelyet ez a minta implementál, több összetevőt használ. A hőmérsékleti eszköz Digital Twins Definition Language (DTDL) modellfájlja határozza meg az eszköz által implementált telemetriát, tulajdonságokat és parancsokat.

Az azure-iot-sdk-python/samples/pnp mappa tartalmazza az IoT Plug and Play eszköz mintakódját. A hőmérséklet-vezérlő mintájának fájljai a következők:

  • temp_controller_with_thermostats.py
  • pnp_helper.py

A hőmérséklet-vezérlő több összetevővel és egy alapértelmezett összetevővel rendelkezik a hőmérséklet-vezérlő DTDL-modellje alapján.

Nyissa meg a temp_controller_with_thermostats.py fájlt egy tetszőleges szerkesztőben. A fájlban található kód:

  1. Importálás pnp_helper.py a segítő módszerekhez való hozzáféréshez.

  2. Két digitális ikermodell-azonosítót (DTMI-t) határoz meg, amelyek egyedileg jelölik a DTDL-modellben definiált két különböző interfészt. A valós hőmérséklet-vezérlő összetevőinek ezt a két interfészt kell implementálniuk. Ez a két felület már közzé van téve egy központi adattárban. Ezeknek a DTM-eknek ismertnek kell lenniük a felhasználó számára, és az eszköz implementálási forgatókönyvétől függően változhatnak. Az aktuális minta esetében ez a két interfész a következő:

    • Termosztát
    • Az Azure által kifejlesztett eszközinformációk.
  3. Meghatározza a megvalósítandó eszköz DTMI-jét model_id . A DTMI felhasználó által definiált, és meg kell egyeznie a DTDL-modellfájl DTMI-ével.

  4. Meghatározza a DTDL-fájl összetevőinek megadott neveket. A DTDL-ben két termosztát és egy eszközinformációs összetevő található. Az alapértelmezett összetevőben egy konstans serial_number is meg van határozva. Az serial_number eszköz nem módosítható.

  5. A parancskezelő implementációit határozza meg. Ezek a kezelők határozzák meg, hogy mit tesz az eszköz, amikor parancskéréseket fogad.

  6. Függvények definiálása parancsválasz létrehozásához. Ezek a függvények határozzák meg, hogyan válaszol az eszköz a parancskérelmekre. Parancsválaszfüggvényeket akkor hoz létre, ha egy parancsnak vissza kell küldenie egy egyéni választ az IoT Hubnak. Ha nincs megadva egy parancs válaszfüggvénye, a rendszer általános választ küld. Ebben a mintában csak a getMaxMinReport parancs rendelkezik egyéni válaszsal.

  7. Definiál egy függvényt, amely telemetriát küld erről az eszközről. Mind a termosztátok, mind az alapértelmezett összetevő telemetriát küld. Ez a függvény egy választható összetevőnév-paramétert tartalmaz, amely lehetővé teszi annak azonosítását, hogy melyik összetevő küldte a telemetriát.

  8. A parancskérelmek figyelőjének definiálása.

  9. Figyelőt határoz meg a kívánt tulajdonságfrissítésekhez.

  10. Olyan függvénye main van, amely:

    • Az eszköz SDK használatával hoz létre egy eszközügyfélt, és csatlakozik az IoT Hubhoz. Az eszköz elküldi az model_id eszközt, hogy az IoT Hub IoT Plug and Play-eszközként azonosíthassa az eszközt.

    • A tulajdonságok a create_reported_properties segédfájlban lévő függvény használatával hozhatók létre. Adja át az összetevő nevét és a tulajdonságokat kulcsértékpárként ehhez a függvényhez.

    • Az összetevők olvasható tulajdonságainak frissítése hívással patch_twin_reported_properties.

    • A függvény használatával megkezdi a parancskérések figyelését execute_command_listener . A függvény beállít egy figyelőt a szolgáltatás parancskéréseihez. A figyelő beállításakor meg kell adnia egy method_name, user_command_handlerés egy nem kötelező create_user_response_handler paramétert.

      • Ez method_name határozza meg a parancskérelmet. Ebben a példában a modell határozza meg a parancsok újraindítását és a GetMaxMinReportot.
      • A user_command_handler függvény határozza meg, hogy mit kell tennie az eszköznek, amikor parancsot kap.
      • A create_user_response_handler függvény létrehoz egy választ, amelyet elküld az IoT Hubnak egy parancs sikeres végrehajtásakor. Ezt a választ a portálon tekintheti meg. Ha ez a függvény nincs megadva, a rendszer általános választ küld a szolgáltatásnak.
    • A tulajdonságfrissítések figyelésére használható execute_property_listener .

    • Elkezdi a telemetriai adatok küldését a következő használatával send_telemetry: . A mintakód egy hurkot használ három telemetriai küldő függvény meghívásához. Mindegyik nyolc másodpercenként van meghívva

    • Letiltja az összes figyelőt és feladatot, és kilép a ciklusból a Q vagy a q billentyű lenyomásakor.

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_SECURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

A minta futtatásához használja a következő parancsot:

python temp_controller_with_thermostats.py

A mintaeszköz néhány másodpercenként telemetriai üzeneteket küld az IoT Hubnak.

A következő kimenet azt jelzi, hogy az eszköz telemetriai adatokat küld a központnak, és készen áll a parancsok és a tulajdonságfrissítések fogadására.

Eszközmegerősítő üzenetek

A minta futásának fenntartása a következő lépések végrehajtása során.

Az Azure IoT Explorer használata a kód ellenőrzéséhez

Az eszközügyfél-minta elindítása után az Azure IoT Explorer eszközzel ellenőrizze, hogy működik-e.

  1. Nyissa meg az Azure IoT Explorert.

  2. Az IoT Hubs lapon, ha még nem adott hozzá kapcsolatot az IoT Hubhoz, válassza a + Kapcsolat hozzáadása lehetőséget. Adja meg a korábban létrehozott IoT Hub kapcsolati sztring, és válassza a Mentés lehetőséget.

  3. Az IoT Plug and Play Beállítások lapján válassza a + Helyi mappa hozzáadása > lehetőséget, és válassza ki azt a helyi modellmappát, ahová a modellfájlokat mentette.

  4. Az IoT Hubs lapon kattintson a használni kívánt központ nevére. Megjelenik az IoT Hubon regisztrált eszközök listája.

  5. Kattintson a korábban létrehozott eszköz eszközazonosítójára .

  6. A bal oldali menüben az eszközhöz elérhető különböző típusú információk láthatók.

  7. Válassza az IoT Plug and Play-összetevőket az eszköz modelladatainak megtekintéséhez.

  8. Megtekintheti az eszköz különböző összetevőit. Az alapértelmezett összetevő és a továbbiak. Válasszon ki egy összetevőt, amellyel dolgozni szeretne.

  9. Válassza a Telemetriai lapot, majd a Start gombra kattintva megtekintheti az eszköz által az összetevőhöz küldött telemetriai adatokat.

  10. Válassza a Tulajdonságok (írásvédett) lapot az összetevőhöz jelentett írásvédett tulajdonságok megtekintéséhez.

  11. Válassza a Tulajdonságok (írható) lapot az összetevőhöz frissíthető írható tulajdonságok megtekintéséhez.

  12. Válasszon ki egy tulajdonságot a neve alapján, adjon meg egy új értéket, és válassza a Kívánt érték frissítése lehetőséget.

  13. Az új érték megjelenítéséhez válassza a Frissítés gombot.

  14. Válassza a Parancsok lapot az összetevő összes parancsának megtekintéséhez.

  15. Válassza ki azt a parancsot, amelyet tesztelni szeretne, és ha van ilyen, állítsa be a paramétert. Válassza a Küldés parancsot az eszköz parancsának meghívásához. Az eszköz a parancsra válaszolva jelenik meg a parancssori ablakban, ahol a mintakód fut.

Az erőforrások eltávolítása

Ha további eszközfejlesztői cikkeket tervez folytatni, megtarthatja és újra felhasználhatja a cikkben használt erőforrásokat. Ellenkező esetben törölheti a cikkben létrehozott erőforrásokat, hogy elkerülje a további díjakat.

Egyszerre törölheti a központot és a regisztrált eszközt is a teljes erőforráscsoport törlésével az alábbi Azure CLI-paranccsal. Ne használja ezt a parancsot, ha ezek az erőforrások megosztanak egy erőforráscsoportot más megtartani kívánt erőforrásokkal.

az group delete --name <YourResourceGroupName>

Ha csak az IoT Hubot szeretné törölni, futtassa a következő parancsot az Azure CLI használatával:

az iot hub delete --name <YourIoTHubName>

Ha csak az IoT Hubon regisztrált eszközidentitást szeretné törölni, futtassa a következő parancsot az Azure CLI használatával:

az iot hub device-identity delete --hub-name <YourIoTHubName> --device-id <YourDeviceID>

Előfordulhat, hogy a klónozott mintafájlokat is el szeretné távolítani a fejlesztőgépről.

Következő lépések

Ebben az oktatóanyagban megtanulta, hogyan csatlakoztathat egy IoT Plug and Play-eszközt összetevőkkel egy IoT Hubhoz. Az IoT Plug and Play eszközmodellekkel kapcsolatos további információkért lásd: