Share via


Öğretici: Linux veya Windows üzerinde çalışan birden çok bileşenli cihaz uygulamasını IoT Hub'a IoT Tak Çalıştır Bağlan

Bu öğreticide bileşenlerle örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, bunu IoT hub'ınıza bağlama ve hub'a gönderdiği bilgileri görüntülemek için Azure IoT gezgini aracını kullanma işlemleri gösterilmektedir. Örnek uygulama C dilinde yazılır ve C için Azure IoT cihaz SDK'sında bulunur. Çözüm oluşturucu, herhangi bir cihaz kodunu görüntülemeye gerek kalmadan bir IoT Tak Çalıştır cihazın özelliklerini anlamak için Azure IoT gezgini aracını kullanabilir.

Koda göz atın

Bu öğreticide şunları yaptınız:

  • Örnek kodu indirin.
  • Örnek kodu oluşturun.
  • Örnek cihaz uygulamasını çalıştırın ve IoT hub'ınıza bağlandığını doğrulayın.
  • Kaynak kodu gözden geçirin.

Önkoşullar

Devam etmeden önce IoT hub'ınız da dahil olmak üzere ortamınızı ayarladığınızdan emin olun.

Bu öğreticiyi Linux veya Windows'da tamamlayabilirsiniz. Bu öğreticideki kabuk komutları, '/' yol ayırıcıları için Linux kuralını izler. Windows'da takip ediyorsanız bu ayırıcıları '\' ile değiştirdiğinizden emin olun.

Önkoşullar işletim sistemine göre farklılık gösterir:

Linux

Bu öğreticide Ubuntu Linux kullandığınız varsayılır. Bu öğreticideki adımlar Ubuntu 18.04 kullanılarak test edilmiştir.

Linux'ta bu öğreticiyi tamamlamak için yerel Linux ortamınıza aşağıdaki yazılımı yükleyin:

komutunu kullanarak apt-get GCC, Git, cmake ve gerekli tüm bağımlılıkları yükleyin:

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

sürümünün cmake2.8.12 ve GCC sürümünün 4.4.7'nin üzerinde olduğunu doğrulayın.

cmake --version
gcc --version

Windows

Bu öğreticiyi Windows'da tamamlamak için yerel Windows ortamınıza aşağıdaki yazılımı yükleyin:

Kodu indirme

Öğretici: Linux veya Windows üzerinde çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (C) Bağlan kodu zaten indirdiniz.

Bu öğreticide, Azure IoT Hub Cihazı C SDK'sını kopyalayıp derlemek için kullanabileceğiniz bir geliştirme ortamı hazırlamış olacaksınız.

Seçtiğiniz bir klasörde bir komut istemi açın. Aşağıdaki komutu yürüterek Azure IoT C SDK'larını ve Kitaplıkları GitHub deposunu bu konuma kopyalayın:

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

Bu işlemin tamamlanmasının birkaç dakika sürmesini bekleyin.

Kodu oluşturma ve çalıştırma

Visual Studio'yu kullanarak veya cmake komut satırında kodu derleyebilir ve çalıştırabilirsiniz.

Visual Studio'yu kullanma

  1. Kopyalanan deponun kök klasörünü açın. Birkaç saniye sonra Visual Studio'daki CMake desteği, projede çalıştırmak ve hata ayıklamak için ihtiyacınız olan her şeyi oluşturur.

  2. Visual Studio hazır olduğunda, Çözüm Gezgini örnek iothub_client/samples/pnp/pnp_temperature_controller/ adresine gidin.

  3. pnp_temperature_controller.c dosyasına sağ tıklayın ve Hata Ayıklama Yapılandırması Ekle'yi seçin. Varsayılan'ı seçin.

  4. Visual Studio launch.vs.json dosyasını açar. Gerekli ortam değişkenlerini ayarlamak için bu dosyayı aşağıdaki kod parçacığında gösterildiği gibi düzenleyin. IoT Tak Çalıştır hızlı başlangıçları ve öğreticileri için ortamınızı ayarlamayı tamamladığınızda kapsam kimliğini ve kayıt birincil anahtarını not edinmişsiniz:

    {
      "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. pnp_temperature_controller.c dosyasına sağ tıklayın ve Başlangıç Öğesi Olarak Ayarla'yı seçin.

  6. Visual Studio'da kod yürütmeyi izlemek için pnp_temperature_controller.c dosyasında işleve mainbir kesme noktası ekleyin.

  7. Artık Hata Ayıkla menüsünden örneği çalıştırabilir ve hatalarını ayıklayabilirsiniz.

Cihaz artık komutları ve özellik güncelleştirmelerini almaya hazırdır ve telemetri verilerini hub'a göndermeye başlamıştır. Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Komut satırında kullanma cmake

Örneği oluşturmak için:

  1. Kopyalanan cihaz SDK'sının kök klasöründe bir cmake alt klasörü oluşturun ve bu klasöre gidin:

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. SDK ve örnekler için proje dosyalarını oluşturmak ve derlemek için aşağıdaki komutları çalıştırın:

    cmake ..
    cmake --build .
    

Ortamınızı ayarlama bölümünde, IoT hub'ınıza bağlanmak için Örneği Cihaz Sağlama Hizmeti'ni (DPS) kullanacak şekilde yapılandırmak için dört ortam değişkeni oluşturdunuz:

  • değeriyle IOTHUB_DEVICE_SECURITY_TYPEDPS
  • DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
  • değeriyle my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
  • değeriyle global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

Örnek yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.

Örneği çalıştırmak için:

  1. cmake klasöründen yürütülebilir dosyayı içeren klasöre gidin ve çalıştırın:

    # 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
    

Cihaz artık komutları ve özellik güncelleştirmelerini almaya hazırdır ve telemetri verilerini hub'a göndermeye başlamıştır. Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Kodu doğrulamak için Azure IoT gezginini kullanma

Cihaz istemci örneği başlatıldıktan sonra Azure IoT gezgini aracını kullanarak çalıştığını doğrulayın.

  1. Azure IoT gezginini açın.

  2. IoT hub'ları sayfasında, IoT hub'ınıza henüz bir bağlantı eklemediyseniz + Bağlantı ekle'yi seçin. Daha önce oluşturduğunuz IoT hub'ına ilişkin bağlantı dizesi girin ve Kaydet'i seçin.

  3. IoT Tak Çalıştır Ayarlar sayfasında + Yerel klasör ekle'yi > seçin ve model dosyalarınızı kaydettiğiniz yerel modeller klasörünü seçin.

  4. IoT hub'ları sayfasında, çalışmak istediğiniz hub'ın adına tıklayın. IoT hub'ına kayıtlı cihazların listesini görürsünüz.

  5. Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.

  6. Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.

  7. Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.

  8. Cihazın farklı bileşenlerini görüntüleyebilirsiniz. Varsayılan bileşen ve ek bileşenler. Çalışmak için bir bileşen seçin.

  9. Cihazın bu bileşen için gönderdiği telemetri verilerini görüntülemek için Telemetri sayfasını ve ardından Başlat'ı seçin.

  10. Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.

  11. Bu bileşen için güncelleştirebileceğiniz yazılabilir özellikleri görüntülemek için Özellikler (yazılabilir) sayfasını seçin.

  12. Adına göre bir özellik seçin, bunun için yeni bir değer girin ve İstenen değeri güncelleştir'i seçin.

  13. Yeni değerin gösterilmesi için Yenile düğmesini seçin.

  14. Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.

  15. Varsa parametresini ayarlamak için test etmek istediğiniz komutu seçin. Komutu cihazda çağırmak için Komut gönder'i seçin. Cihazınızın, örnek kodun çalıştığı komut istemi penceresinde komutu yanıtladığını görebilirsiniz.

Kodu gözden geçirin

Bu örnek bir IoT Tak Çalıştır sıcaklık denetleyicisi cihazı uygular. Bu örnek, birden çok bileşene sahip bir model uygular. Sıcaklık cihazının Digital Twins Tanım Dili (DTDL) V2 model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.

yardımcı işlevleri IoT Tak Çalıştır

Bu örnek için kod , /common klasöründeki bazı yardımcı işlevleri kullanır:

pnp_device_client_ll, parametresi olarak dahil edilen IoT Tak Çalıştır model-id için connect yöntemini içerir: PnP_CreateDeviceClientLLHandle.

pnp_protocol: IoT Tak Çalıştır yardımcı işlevlerini içerir:

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

Bu yardımcı işlevler kendi projenizde kullanılacak kadar geneldir. Bu örnek bunları modeldeki her bileşene karşılık gelen üç dosyada kullanır:

  • pnp_deviceinfo_component
  • pnp_temperature_controller
  • pnp_thermostat_component

Örneğin, pnp_deviceinfo_component dosyasında SendReportedPropertyForDeviceInformation işlev yardımcı işlevlerden ikisini kullanır:

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

Örnekteki her bileşen bu deseni izler.

Kod akışı

İşlev bağlantıyı main başlatır ve model kimliğini gönderir:

deviceClient = CreateDeviceClientAndAllocateComponents();

Kod, IoT hub'ına bağlanmak, seçenek olarak ayarlamak modelId ve doğrudan yöntemler ve cihaz ikizi güncelleştirmeleri için cihaz yöntemini ve cihaz ikizi geri çağırma işleyicilerini ayarlamak için kullanırPnP_CreateDeviceClientLLHandle:

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

deviceClient = PnP_CreateDeviceClientLLHandle(&g_pnpDeviceConfiguration);

&g_pnpDeviceConfiguration ayrıca bağlantı bilgilerini içerir. IOTHUB_DEVICE_SECURITY_TYPE ortam değişkeni, örneğin IoT hub'ına bağlanmak için bir bağlantı dizesi veya cihaz sağlama hizmeti kullanıp kullanmadığını belirler.

Cihaz bir model kimliği gönderdiğinde IoT Tak Çalıştır bir cihaz haline gelir.

Geri çağırma işleyicileri kullanıldığında cihaz ikiz güncelleştirmelerine ve doğrudan yöntem çağrılarına tepki gösterir:

  • Cihaz ikizi geri çağırması PnP_TempControlComponent_DeviceTwinCallback için işlevi çağırarak PnP_ProcessTwinData verileri işler. PnP_ProcessTwinData, JSON'u ayrıştırmak için ziyaretçi desenini kullanır ve ardından her öğeyi çağırarak PnP_TempControlComponent_ApplicationPropertyCallback her özelliği ziyaret eder.

  • Geri çağırma komutları için işlev, PnP_TempControlComponent_DeviceMethodCallback komutu ve bileşen adlarını ayrıştırmak için yardımcı işlevini kullanır:

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

    İşlev PnP_TempControlComponent_DeviceMethodCallback daha sonra bileşeninde komutunu çağırır:

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

İşlev, main IoT hub'ına gönderilen salt okunur özellikleri başlatır:

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

İşlev, main her bileşen için olay ve telemetri verilerini güncelleştirmek için bir döngü girer:

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

işlevi, PnP_ThermostatComponent_SendTelemetry yapıyı nasıl kullanacağınızı PNP_THERMOSTAT_COMPONENT gösterir. Örnek, iki termostat hakkındaki bilgileri sıcaklık denetleyicisinde depolamak için bu yapıyı kullanır. Kod, iletiyi hazırlamak ve göndermek için işlevini kullanır PnP_CreateTelemetryMessageHandle :

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

main İşlev sonunda farklı bileşenleri yok eder ve hub bağlantısını kapatır.

Bu öğreticide bileşenlerle örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, bunu IoT hub'ınıza bağlama ve hub'a gönderdiği bilgileri görüntülemek için Azure IoT gezgini aracını kullanma işlemleri gösterilmektedir. Örnek uygulama C# dilinde yazılır ve C# için Azure IoT cihaz SDK'sında bulunur. Çözüm oluşturucu, herhangi bir cihaz kodunu görüntülemeye gerek kalmadan bir IoT Tak Çalıştır cihazın özelliklerini anlamak için Azure IoT gezgini aracını kullanabilir.

Koda göz atın

Bu öğreticide şunları yaptınız:

  • Örnek kodu indirin.
  • Örnek kodu oluşturun.
  • Örnek cihaz uygulamasını çalıştırın ve IoT hub'ınıza bağlandığını doğrulayın.
  • Kaynak kodu gözden geçirin.

Önkoşullar

Devam etmeden önce IoT hub'ınız da dahil olmak üzere ortamınızı ayarladığınızdan emin olun.

Bu öğreticiyi Linux veya Windows üzerinde çalıştırabilirsiniz. Bu öğreticideki kabuk komutları, '/' yol ayırıcıları için Linux kuralını izler. Windows'da takip ediyorsanız bu ayırıcıları '\' ile değiştirdiğinizden emin olun.

SDK deposunu örnek kodla kopyalama

Öğretici: Windows'ta çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (C#) Bağlan tamamladıysanız, depoyu zaten kopyalamışsınız demektir.

C# GitHub için Azure IoT Örnekleri deposundaki örnekleri kopyalayın. Seçtiğiniz bir klasörde bir komut istemi açın. .NET GitHub deposu için Microsoft Azure IoT SDK'sını kopyalamak için aşağıdaki komutu çalıştırın:

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

Kodu oluşturma

Artık örneği derleyip çalıştırabilirsiniz. Örneği oluşturmak için aşağıdaki komutları çalıştırın:

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

Cihaz örneğini çalıştırma

Örneği çalıştırmak için aşağıdaki komutu çalıştırın:

dotnet run

Cihaz artık komutları ve özellik güncelleştirmelerini almaya hazırdır ve telemetri verilerini hub'a göndermeye başlamıştır. Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Kodu doğrulamak için Azure IoT gezginini kullanma

Cihaz istemci örneği başlatıldıktan sonra Azure IoT gezgini aracını kullanarak çalıştığını doğrulayın.

  1. Azure IoT gezginini açın.

  2. IoT hub'ları sayfasında, IoT hub'ınıza henüz bir bağlantı eklemediyseniz + Bağlantı ekle'yi seçin. Daha önce oluşturduğunuz IoT hub'ına ilişkin bağlantı dizesi girin ve Kaydet'i seçin.

  3. IoT Tak Çalıştır Ayarlar sayfasında + Yerel klasör ekle'yi > seçin ve model dosyalarınızı kaydettiğiniz yerel modeller klasörünü seçin.

  4. IoT hub'ları sayfasında, çalışmak istediğiniz hub'ın adına tıklayın. IoT hub'ına kayıtlı cihazların listesini görürsünüz.

  5. Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.

  6. Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.

  7. Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.

  8. Cihazın farklı bileşenlerini görüntüleyebilirsiniz. Varsayılan bileşen ve ek bileşenler. Çalışmak için bir bileşen seçin.

  9. Cihazın bu bileşen için gönderdiği telemetri verilerini görüntülemek için Telemetri sayfasını ve ardından Başlat'ı seçin.

  10. Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.

  11. Bu bileşen için güncelleştirebileceğiniz yazılabilir özellikleri görüntülemek için Özellikler (yazılabilir) sayfasını seçin.

  12. Adına göre bir özellik seçin, bunun için yeni bir değer girin ve İstenen değeri güncelleştir'i seçin.

  13. Yeni değerin gösterilmesi için Yenile düğmesini seçin.

  14. Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.

  15. Varsa parametresini ayarlamak için test etmek istediğiniz komutu seçin. Komutu cihazda çağırmak için Komut gönder'i seçin. Cihazınızın, örnek kodun çalıştığı komut istemi penceresinde komutu yanıtladığını görebilirsiniz.

Kodu gözden geçirin

Bu örnek bir IoT Tak Çalıştır sıcaklık denetleyicisi cihazı uygular. Bu örneğin uyguladığı model birden çok bileşen kullanır. Sıcaklık cihazının Digital Twins Tanım Dili (DTDL) V2 model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.

Cihaz kodu, standart CreateFromConnectionString yöntemi kullanarak IoT hub'ınıza bağlanır. Cihaz, bağlantı isteğinde uyguladığı DTDL modelinin model kimliğini gönderir. Model kimliği gönderen cihaz, IoT Tak Çalıştır bir cihazdır:

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

Model kimliği aşağıdaki kod parçacığında gösterildiği gibi kodda depolanır:

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

Cihaz IoT hub'ınıza bağlandıktan sonra kod, komut işleyicilerini kaydeder. Komut reboot , varsayılan bileşende tanımlanır. getMaxMinReport komutu iki termostat bileşeninin her birinde tanımlanır:

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

İki termostat bileşeninde istenen özellik güncelleştirmeleri için ayrı işleyiciler vardır:

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

Örnek kod her termostat bileşeninden telemetri gönderir:

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

yöntemi, SendTemperatureTelemetryAsync sınıfını PnpHhelper kullanarak her bileşen için ileti oluşturur:

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

sınıfı, PnpHelper birden çok bileşen modeliyle kullanabileceğiniz diğer örnek yöntemleri içerir.

İki termostat bileşeninden telemetriyi ve özellikleri görüntülemek için Azure IoT gezgini aracını kullanın:

Azure IoT gezgininde birden çok bileşen cihazı

İki termostat bileşeninden birinde veya varsayılan bileşende komutları çağırmak için Azure IoT gezgini aracını da kullanabilirsiniz.

Bu öğreticide bileşenlerle örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, bunu IoT hub'ınıza bağlama ve hub'a gönderdiği bilgileri görüntülemek için Azure IoT gezgini aracını kullanma işlemleri gösterilmektedir. Örnek uygulama Java dilinde yazılır ve Java için Azure IoT cihaz SDK'sında bulunur. Çözüm oluşturucu, herhangi bir cihaz kodunu görüntülemeye gerek kalmadan bir IoT Tak Çalıştır cihazın özelliklerini anlamak için Azure IoT gezgini aracını kullanabilir.

Koda göz atın

Bu öğreticide şunları yaptınız:

  • Örnek kodu indirin.
  • Örnek kodu oluşturun.
  • Örnek cihaz uygulamasını çalıştırın ve IoT hub'ınıza bağlandığını doğrulayın.
  • Kaynak kodu gözden geçirin.

Önkoşullar

Devam etmeden önce IoT hub'ınız da dahil olmak üzere ortamınızı ayarladığınızdan emin olun.

Bu öğreticiyi Linux veya Windows üzerinde çalıştırabilirsiniz. Bu öğreticideki kabuk komutları, '/' yol ayırıcıları için Linux kuralını izler. Windows'da takip ediyorsanız bu ayırıcıları '\' ile değiştirdiğinizden emin olun.

Bu öğreticiyi tamamlamak için yerel geliştirme ortamınıza aşağıdaki yazılımı yükleyin:

Kodu indirme

Öğretici: Örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (Java) Bağlan tamamladıysanız depoyu zaten kopyalamışsınız demektir.

Seçtiğiniz dizinde bir komut istemi açın. Aşağıdaki komutu yürüterek Azure IoT Java SDK'larını ve Kitaplıkları GitHub deposunu bu konuma kopyalayın:

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

Bu işlemin tamamlanmasının birkaç dakika sürmesini bekleyin.

Kodu oluşturma

Kopyalanan Java SDK deposundaki sıcaklık denetleyicisi örneğinin kök klasörüne gidin ve oluşturun:

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

Cihaz örneğini çalıştırma

Ortamınızı ayarlama bölümünde, IoT hub'ınıza bağlanmak için Örneği Cihaz Sağlama Hizmeti'ni (DPS) kullanacak şekilde yapılandırmak için dört ortam değişkeni oluşturdunuz:

  • değeriyle IOTHUB_DEVICE_SECURITY_TYPEDPS
  • DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
  • değeriyle my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
  • değeriyle global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

Örnek uygulamayı çalıştırmak için /device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample klasörüne gidin ve aşağıdaki komutu çalıştırın:

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

Cihaz artık komutları ve özellik güncelleştirmelerini almaya hazırdır ve telemetri verilerini hub'a göndermeye başlamıştır. Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Kodu doğrulamak için Azure IoT gezginini kullanma

Cihaz istemci örneği başlatıldıktan sonra Azure IoT gezgini aracını kullanarak çalıştığını doğrulayın.

  1. Azure IoT gezginini açın.

  2. IoT hub'ları sayfasında, IoT hub'ınıza henüz bir bağlantı eklemediyseniz + Bağlantı ekle'yi seçin. Daha önce oluşturduğunuz IoT hub'ına ilişkin bağlantı dizesi girin ve Kaydet'i seçin.

  3. IoT Tak Çalıştır Ayarlar sayfasında + Yerel klasör ekle'yi > seçin ve model dosyalarınızı kaydettiğiniz yerel modeller klasörünü seçin.

  4. IoT hub'ları sayfasında, çalışmak istediğiniz hub'ın adına tıklayın. IoT hub'ına kayıtlı cihazların listesini görürsünüz.

  5. Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.

  6. Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.

  7. Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.

  8. Cihazın farklı bileşenlerini görüntüleyebilirsiniz. Varsayılan bileşen ve ek bileşenler. Çalışmak için bir bileşen seçin.

  9. Cihazın bu bileşen için gönderdiği telemetri verilerini görüntülemek için Telemetri sayfasını ve ardından Başlat'ı seçin.

  10. Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.

  11. Bu bileşen için güncelleştirebileceğiniz yazılabilir özellikleri görüntülemek için Özellikler (yazılabilir) sayfasını seçin.

  12. Adına göre bir özellik seçin, bunun için yeni bir değer girin ve İstenen değeri güncelleştir'i seçin.

  13. Yeni değerin gösterilmesi için Yenile düğmesini seçin.

  14. Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.

  15. Varsa parametresini ayarlamak için test etmek istediğiniz komutu seçin. Komutu cihazda çağırmak için Komut gönder'i seçin. Cihazınızın, örnek kodun çalıştığı komut istemi penceresinde komutu yanıtladığını görebilirsiniz.

Kodu gözden geçirin

Bu örnek bir IoT Tak Çalıştır sıcaklık denetleyicisi cihazı uygular. Bu örneğin uyguladığı model birden çok bileşen kullanır. Sıcaklık cihazının Digital Twins Tanım Dili (DTDL) V2 model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.

Cihaz kodu, IoT hub'ınıza bağlanmak için standart DeviceClient sınıfı kullanır. Cihaz, bağlantı isteğinde uyguladığı DTDL modelinin model kimliğini gönderir. Model kimliği gönderen cihaz, IoT Tak Çalıştır bir cihazdır:

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

Model kimliği aşağıdaki kod parçacığında gösterildiği gibi kodda depolanır:

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

Cihaz IoT hub'ınıza bağlandıktan sonra kod, komut işleyicilerini kaydeder.

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

İki termostat bileşeninde istenen özellik güncelleştirmeleri için ayrı işleyiciler vardır:

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

Örnek kod her termostat bileşeninden telemetri gönderir:

sendTemperatureReading(THERMOSTAT_1);
sendTemperatureReading(THERMOSTAT_2);

yöntemi, sendTemperatureReading sınıfını PnpHhelper kullanarak her bileşen için ileti oluşturur:

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

sınıfı, PnpHelper birden çok bileşen modeliyle kullanabileceğiniz diğer örnek yöntemleri içerir.

İki termostat bileşeninden telemetriyi ve özellikleri görüntülemek için Azure IoT gezgini aracını kullanın:

Azure IoT gezgininde birden çok bileşen cihazı

İki termostat bileşeninden birinde veya varsayılan bileşende komutları çağırmak için Azure IoT gezgini aracını da kullanabilirsiniz.

Bu öğreticide bileşenlerle örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, bunu IoT hub'ınıza bağlama ve hub'a gönderdiği bilgileri görüntülemek için Azure IoT gezgini aracını kullanma işlemleri gösterilmektedir. Örnek uygulama Node.js için yazılır ve Node.js için Azure IoT Hub Cihaz SDK'sında bulunur. Çözüm oluşturucu, herhangi bir cihaz kodunu görüntülemeye gerek kalmadan bir IoT Tak Çalıştır cihazın özelliklerini anlamak için Azure IoT gezgini aracını kullanabilir.

Koda göz atın

Bu öğreticide şunları yaptınız:

  • Örnek kodu indirin.
  • Örnek cihaz uygulamasını çalıştırın ve IoT hub'ınıza bağlandığını doğrulayın.
  • Kaynak kodu gözden geçirin.

Önkoşullar

Devam etmeden önce IoT hub'ınız da dahil olmak üzere ortamınızı ayarladığınızdan emin olun.

Bu öğreticiyi tamamlamak için geliştirme makinenizde Node.js gerekir. Birden çok platform için önerilen en son sürümü nodejs.org'den indirebilirsiniz.

Aşağıdaki komutu kullanarak geliştirme makinenizde geçerli Node.js sürümünü doğrulayabilirsiniz:

node --version

Kodu indirme

Öğretici: Windows'da çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (Node) Bağlan tamamladıysanız depoyu zaten kopyalamışsınız demektir.

Seçtiğiniz dizinde bir komut istemi açın. Node.js GitHub deposu için Microsoft Azure IoT SDK'sını bu konuma kopyalamak için aşağıdaki komutu yürütebilirsiniz:

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

Gerekli kitaplıkları yükleme

Dahil edilen örnek kodu oluşturmak için cihaz SDK'sını kullanırsınız. Oluşturduğunuz uygulama, ioT hub'ına bağlanan birden çok bileşene sahip bir Tak ve Kullan cihazının benzetimini yapar. Uygulama telemetri ve özellikler gönderir ve komutları alır.

  1. Yerel terminal penceresinde kopyalanan deponuzun klasörüne gidin ve /azure-iot-sdk-node/device/samples/javascript klasörüne gidin. Ardından gerekli kitaplıkları yüklemek için aşağıdaki komutu çalıştırın:
npm install

Bu komut, klasördeki örnekleri çalıştırmak için gereken ilgili npm dosyalarını yükler.

Kodu gözden geçirin

azure-iot-sdk-node/device/samples/javascript klasörüne gidin.

azure-iot-sdk-node/device/samples/javascript klasörü, IoT Tak Çalıştır sıcaklık denetleyicisi cihazının örnek kodunu içerir.

pnp_temperature_controller.js dosyasındaki kod bir IoT Tak Çalıştır sıcaklık denetleyicisi cihazı uygular. Bu örneğin uyguladığı model birden çok bileşen kullanır. Sıcaklık cihazının Digital Twins Tanım Dili (DTDL) V2 model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.

pnp_temperature_controller.js dosyasını istediğiniz kod düzenleyicisinde açın. Örnek kod şunların nasıl yapılacağını gösterir:

  • modelId Uyguladığınız cihazın DTMI değerini tanımlayın. Bu DTMI kullanıcı tanımlıdır ve sıcaklık denetleyicisi DTDL modelinin DTMI'si ile eşleşmelidir.

  • Sıcaklık denetleyicisi DTDL modelinde tanımlanan bileşenleri uygulayın. Gerçek bir sıcaklık denetleyicisindeki bileşenler bu iki arabirimi uygulamalıdır. Bu iki arabirim merkezi bir depoda zaten yayımlanmıştır. Bu örnekte iki arabirim şunlardır:

    • Termostat
    • Azure tarafından geliştirilen cihaz bilgileri
  • Bileşen adlarını tanımlayın. Bu örnekte iki termostat ve bir cihaz bilgisi bileşeni vardır.

  • Cihazın yanıt verdiği komutlar için komut adlarını tanımlayın.

  • Sabiti serialNumber tanımlayın. serialNumber herhangi bir cihaz düzeltildi.

  • Komut işleyicilerini tanımlayın.

  • Komut yanıtları göndermek için işlevleri tanımlayın.

  • Komut isteklerini günlüğe kaydetmek için yardımcı işlevleri tanımlayın.

  • Özellikleri oluşturmak için bir yardımcı işlev tanımlayın.

  • Özellik güncelleştirmeleri için bir dinleyici tanımlayın.

  • Bu cihazdan telemetri göndermek için bir işlev tanımlayın. Hem termostatlar hem de varsayılan bileşen telemetri gönderir. Bu işlev bileşen adını parametre olarak alır.

  • Aşağıdakilere sahip bir main işlev tanımlayın:

    • Cihaz SDK'sını kullanarak bir cihaz istemcisi oluşturur ve IoT hub'ınıza bağlanır. IoT Hub'ın cihazı IoT Tak Çalıştır cihaz olarak tanımlayabilmesi için cihazı sağlarmodelId.

    • işlevini kullanarak komut isteklerini dinlemeye onDeviceMethod başlar. İşlev, hizmetten gelen komut istekleri için bir dinleyici ayarlar:

      • Cihaz DTDL'i ve getMaxMinReport komutlarını reboot tanımlar.
      • işlevi, commandHandler cihazın bir komuta nasıl yanıt vereceğini tanımlar.
    • ve sendTelemetrykullanarak setInterval telemetri göndermeye başlar.

    • helperCreateReportedPropertiesPatch özelliklerini oluşturmak için işlevini ve updateComponentReportedProperties özellikleri güncelleştirmek için işlevini kullanır.

    • Özellik güncelleştirmelerini dinlemek için kullanır desiredPropertyPatchListener .

    • Tüm dinleyicileri ve görevleri devre dışı bırakır ve Q veya q tuşuna bastığınızda döngüden çıkar.

Ortamınızı ayarlama bölümünde, IoT hub'ınıza bağlanmak için Örneği Cihaz Sağlama Hizmeti'ni (DPS) kullanacak şekilde yapılandırmak için dört ortam değişkeni oluşturdunuz:

  • değeriyle IOTHUB_DEVICE_SECURITY_TYPEDPS
  • DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
  • değeriyle my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
  • değeriyle global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

Örnek yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.

Kodu gördüğünüze göre, örneği çalıştırmak için aşağıdaki komutu kullanın:

node pnp_temperature_controller.js

Cihazın hub'a telemetri verileri göndermeye başladığını ve artık komutları ve özellik güncelleştirmelerini almaya hazır olduğunu gösteren aşağıdaki çıkışı görürsünüz.

Cihaz onay iletileri

Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Kodu doğrulamak için Azure IoT gezginini kullanma

Cihaz istemci örneği başlatıldıktan sonra Azure IoT gezgini aracını kullanarak çalıştığını doğrulayın.

  1. Azure IoT gezginini açın.

  2. IoT hub'ları sayfasında, IoT hub'ınıza henüz bir bağlantı eklemediyseniz + Bağlantı ekle'yi seçin. Daha önce oluşturduğunuz IoT hub'ına ilişkin bağlantı dizesi girin ve Kaydet'i seçin.

  3. IoT Tak Çalıştır Ayarlar sayfasında + Yerel klasör ekle'yi > seçin ve model dosyalarınızı kaydettiğiniz yerel modeller klasörünü seçin.

  4. IoT hub'ları sayfasında, çalışmak istediğiniz hub'ın adına tıklayın. IoT hub'ına kayıtlı cihazların listesini görürsünüz.

  5. Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.

  6. Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.

  7. Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.

  8. Cihazın farklı bileşenlerini görüntüleyebilirsiniz. Varsayılan bileşen ve ek bileşenler. Çalışmak için bir bileşen seçin.

  9. Cihazın bu bileşen için gönderdiği telemetri verilerini görüntülemek için Telemetri sayfasını ve ardından Başlat'ı seçin.

  10. Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.

  11. Bu bileşen için güncelleştirebileceğiniz yazılabilir özellikleri görüntülemek için Özellikler (yazılabilir) sayfasını seçin.

  12. Adına göre bir özellik seçin, bunun için yeni bir değer girin ve İstenen değeri güncelleştir'i seçin.

  13. Yeni değerin gösterilmesi için Yenile düğmesini seçin.

  14. Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.

  15. Varsa parametresini ayarlamak için test etmek istediğiniz komutu seçin. Komutu cihazda çağırmak için Komut gönder'i seçin. Cihazınızın, örnek kodun çalıştığı komut istemi penceresinde komutu yanıtladığını görebilirsiniz.

Bu öğreticide bileşenlerle örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, bunu IoT hub'ınıza bağlama ve hub'a gönderdiği bilgileri görüntülemek için Azure IoT gezgini aracını kullanma işlemleri gösterilmektedir. Örnek uygulama Python'da yazılır ve Python için Azure IoT cihaz SDK'sında bulunur. Çözüm oluşturucu, herhangi bir cihaz kodunu görüntülemeye gerek kalmadan bir IoT Tak Çalıştır cihazın özelliklerini anlamak için Azure IoT gezgini aracını kullanabilir.

Koda göz atın

Bu öğreticide şunları yaptınız:

  • Örnek kodu indirin.
  • Örnek cihaz uygulamasını çalıştırın ve IoT hub'ınıza bağlandığını doğrulayın.
  • Kaynak kodu gözden geçirin.

Önkoşullar

Devam etmeden önce IoT hub'ınız da dahil olmak üzere ortamınızı ayarladığınızdan emin olun.

Bu öğreticiyi Linux veya Windows üzerinde çalıştırabilirsiniz. Bu öğreticideki kabuk komutları, '/' yol ayırıcıları için Linux kuralını izler. Windows'da takip ediyorsanız bu ayırıcıları '\' ile değiştirdiğinizden emin olun.

Bu öğreticiyi tamamlamak için geliştirme makinenizde Python yüklü olmalıdır. Geçerli Python sürümü gereksinimleri için Azure IoT Python SDK'sını denetleyin. Python sürümünüzü aşağıdaki komutla de kontrol edebilirsiniz:

python --version

birden çok platform için önerilen en son sürümü python.org'den indirebilirsiniz.

Kodu indirme

azure-iot-device paketi PIP olarak yayımlanır.

Yerel Python ortamınızda paketi aşağıdaki gibi yükleyin:

pip install azure-iot-device

Öğretici: Windows'ta çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (Python) Bağlan tamamladıysanız depoyu zaten kopyalamışsınız demektir.

Python SDK IoT deposunu kopyalayın:

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

Kodu gözden geçirin

Bu örnek bir IoT Tak Çalıştır sıcaklık denetleyicisi cihazı uygular. Bu örneğin uyguladığı model birden çok bileşen kullanır. Sıcaklık cihazının Digital Twins Tanım Dili (DTDL) V2 model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.

azure-iot-sdk-python/samples/pnp klasörü IoT Tak Çalıştır cihazın örnek kodunu içerir. Sıcaklık denetleyicisi örneğinin dosyaları şunlardır:

  • temp_controller_with_thermostats.py
  • pnp_helper.py

Sıcaklık denetleyicisi, sıcaklık denetleyicisi DTDL modeline göre birden çok bileşene ve varsayılan bir bileşene sahiptir.

temp_controller_with_thermostats.py dosyasını istediğiniz bir düzenleyicide açın. Bu dosyadaki kod:

  1. pnp_helper.py Yardımcı yöntemlere erişmek için içeri aktarır.

  2. DTDL modelinde tanımlanan iki farklı arabirimi benzersiz olarak temsil eden iki dijital ikiz modeli tanımlayıcısını (DTMI) tanımlar. Gerçek bir sıcaklık denetleyicisindeki bileşenler bu iki arabirimi uygulamalıdır. Bu iki arabirim merkezi bir depoda zaten yayımlanmıştır. Bu DTMI'lerin kullanıcı tarafından bilinmesi ve cihaz uygulama senaryosuna bağlı olarak değişmesi gerekir. Geçerli örnek için şu iki arabirim şunları temsil eder:

    • Termostat
    • Azure tarafından geliştirilen cihaz bilgileri.
  3. Uygulanan cihaz için DTMI'yi model_id tanımlar. DTMI kullanıcı tanımlıdır ve DTDL model dosyasındaki DTMI ile eşleşmelidir.

  4. DTDL dosyasındaki bileşenlere verilen adları tanımlar. DTDL'de iki termostat ve bir cihaz bilgisi bileşeni vardır. adlı serial_number bir sabit, varsayılan bileşende de tanımlanır. serial_number Bir cihaz için değiştirilemez.

  5. Komut işleyicisi uygulamalarını tanımlar. Bu işleyiciler, komut istekleri aldığında cihazın ne yaptığını tanımlar.

  6. Komut yanıtı oluşturmak için işlevleri tanımlar. Bu işlevler, cihazın komut isteklerine nasıl yanıt vereceğini tanımlar. Bir komutun IoT hub'ına özel yanıt göndermesi gerekiyorsa komut yanıtı işlevleri oluşturursunuz. Bir komut için yanıt işlevi sağlanmazsa genel bir yanıt gönderilir. Bu örnekte, yalnızca getMaxMinReport komutunun özel yanıtı vardır.

  7. Bu cihazdan telemetri göndermek için bir işlev tanımlar. Hem termostatlar hem de varsayılan bileşen telemetri gönderir. Bu işlevin telemetriyi hangi bileşenin gönderdiğini belirlemesini sağlayan isteğe bağlı bir bileşen adı parametresi vardır.

  8. Komut istekleri için bir dinleyici tanımlar.

  9. İstenen özellik güncelleştirmeleri için bir dinleyici tanımlar.

  10. Şunun gibi bir main işlevi vardır:

    • Cihaz SDK'sını kullanarak bir cihaz istemcisi oluşturur ve IoT hub'ınıza bağlanır. Cihaz, IoT hub'sının cihazı IoT Tak Çalıştır cihaz olarak tanımlayabilmesi için öğesini gönderirmodel_id.

    • create_reported_properties Özellikleri oluşturmak için yardımcı dosyasındaki işlevini kullanır. Bileşen adını ve özellikleri anahtar değer çiftleri olarak bu işleve geçirin.

    • çağırarak patch_twin_reported_propertiesbileşenlerinin okunabilir özelliklerini Güncelleştirmeler.

    • işlevini kullanarak komut isteklerini dinlemeye execute_command_listener başlar. İşlev, hizmetten gelen komut istekleri için bir dinleyici ayarlar. Dinleyiciyi ayarlarken parametre olarak bir method_name, user_command_handlerve isteğe bağlı create_user_response_handler sağlarsınız.

      • komut method_name isteğini tanımlar. Bu örnekte model, yeniden başlatma ve getMaxMinReport komutlarını tanımlar.
      • işlevi, user_command_handler bir komut aldığında cihazın ne yapması gerektiğini tanımlar.
      • İşlev, create_user_response_handler bir komut başarıyla yürütülürken IoT hub'ınıza gönderilecek bir yanıt oluşturur. Bu yanıtı portalda görüntüleyebilirsiniz. Bu işlev sağlanmazsa hizmete genel bir yanıt gönderilir.
    • Özellik güncelleştirmelerini dinlemek için kullanır execute_property_listener .

    • kullanarak telemetri göndermeye send_telemetrybaşlar. Örnek kod, üç telemetri gönderme işlevini çağırmak için bir döngü kullanır. Her biri sekiz saniyede bir çağrılır

    • Tüm dinleyicileri ve görevleri devre dışı bırakır ve Q veya q tuşuna bastığınızda döngüden çıkar.

Ortamınızı ayarlama bölümünde, IoT hub'ınıza bağlanmak için Örneği Cihaz Sağlama Hizmeti'ni (DPS) kullanacak şekilde yapılandırmak için dört ortam değişkeni oluşturdunuz:

  • değeriyle IOTHUB_DEVICE_SECURITY_TYPEDPS
  • DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
  • değeriyle my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
  • değeriyle global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

Örnek yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.

Örneği çalıştırmak için aşağıdaki komutu kullanın:

python temp_controller_with_thermostats.py

Örnek cihaz, ioT hub'ınıza birkaç saniyede bir telemetri iletileri gönderir.

Cihazın hub'a telemetri verileri gönderdiğini ve artık komutları ve özellik güncelleştirmelerini almaya hazır olduğunu gösteren aşağıdaki çıkışı görürsünüz.

Cihaz onay iletileri

Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.

Kodu doğrulamak için Azure IoT gezginini kullanma

Cihaz istemci örneği başlatıldıktan sonra Azure IoT gezgini aracını kullanarak çalıştığını doğrulayın.

  1. Azure IoT gezginini açın.

  2. IoT hub'ları sayfasında, IoT hub'ınıza henüz bir bağlantı eklemediyseniz + Bağlantı ekle'yi seçin. Daha önce oluşturduğunuz IoT hub'ına ilişkin bağlantı dizesi girin ve Kaydet'i seçin.

  3. IoT Tak Çalıştır Ayarlar sayfasında + Yerel klasör ekle'yi > seçin ve model dosyalarınızı kaydettiğiniz yerel modeller klasörünü seçin.

  4. IoT hub'ları sayfasında, çalışmak istediğiniz hub'ın adına tıklayın. IoT hub'ına kayıtlı cihazların listesini görürsünüz.

  5. Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.

  6. Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.

  7. Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.

  8. Cihazın farklı bileşenlerini görüntüleyebilirsiniz. Varsayılan bileşen ve ek bileşenler. Çalışmak için bir bileşen seçin.

  9. Cihazın bu bileşen için gönderdiği telemetri verilerini görüntülemek için Telemetri sayfasını ve ardından Başlat'ı seçin.

  10. Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.

  11. Bu bileşen için güncelleştirebileceğiniz yazılabilir özellikleri görüntülemek için Özellikler (yazılabilir) sayfasını seçin.

  12. Adına göre bir özellik seçin, bunun için yeni bir değer girin ve İstenen değeri güncelleştir'i seçin.

  13. Yeni değerin gösterilmesi için Yenile düğmesini seçin.

  14. Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.

  15. Varsa parametresini ayarlamak için test etmek istediğiniz komutu seçin. Komutu cihazda çağırmak için Komut gönder'i seçin. Cihazınızın, örnek kodun çalıştığı komut istemi penceresinde komutu yanıtladığını görebilirsiniz.

Kaynakları temizleme

Daha fazla cihaz geliştirici makalesine devam etmek istiyorsanız, bu makalede kullandığınız kaynakları tutabilir ve yeniden kullanabilirsiniz. Aksi takdirde, daha fazla ücret tahsil edilmemesi için bu makalede oluşturduğunuz kaynakları silebilirsiniz.

Aşağıdaki Azure CLI komutuyla kaynak grubunun tamamını silerek hem hub'ı hem de kayıtlı cihazı aynı anda silebilirsiniz. Bu kaynaklar bir kaynak grubunu saklamak istediğiniz diğer kaynaklarla paylaşıyorsa bu komutu kullanmayın.

az group delete --name <YourResourceGroupName>

Yalnızca IoT hub'ını silmek için Azure CLI kullanarak aşağıdaki komutu çalıştırın:

az iot hub delete --name <YourIoTHubName>

Yalnızca IoT hub'ınıza kaydettiğiniz cihaz kimliğini silmek için Azure CLI kullanarak aşağıdaki komutu çalıştırın:

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

Kopyalanan örnek dosyaları geliştirme makinenizden de kaldırmak isteyebilirsiniz.

Sonraki adımlar

Bu öğreticide, bir IoT Tak Çalıştır cihazını bileşenlerle ioT hub'ına bağlamayı öğrendiniz. IoT Tak Çalıştır cihaz modelleri hakkında daha fazla bilgi edinmek için bkz: