Öğretici: Çözümünüzle bağlantılı bir IoT Tak Çalıştır cihazıyla etkileşim kurma

IoT Tak Çalıştır, temel alınan cihaz uygulaması hakkında bilgi sahibi olmadan bir cihazın özellikleriyle etkileşim kurmanızı sağlayarak IoT'yi basitleştirir. Bu öğreticide, çözümünüzle bağlantılı bir IoT Tak Çalıştır cihazına bağlanmak ve cihazı denetlemek için C# kullanmayı öğreneceksiniz.

Ö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 deposu için Azure IoT SDK'sından ö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

Cihaz kodunu oluşturma

Artık cihaz örneğini derleyebilir ve ç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/Thermostat
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.

Örnek çözümü çalıştırma

IoT Tak Çalıştır hızlı başlangıçları ve öğreticileri için ortamınızı ayarlama bölümünde, örneği IoT hub'ınıza bağlanacak şekilde yapılandırmak için iki ortam değişkeni oluşturdunuz:

  • IOTHUB_CONNECTION_STRING: Daha önce not aldığınız IoT hub'ı bağlantı dizesi.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Bu öğreticide, az önce ayarlayıp çalıştırdığınız örnek cihazla etkileşim kurmak için C# dilinde yazılmış örnek bir IoT çözümü kullanacaksınız.

  1. Başka bir terminal penceresinde azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat klasörüne gidin.

  2. Hizmet örneğini oluşturmak için aşağıdaki komutu çalıştırın:

    dotnet build
    
  3. Hizmet örneğini çalıştırmak için aşağıdaki komutu çalıştırın:

    dotnet run
    

Cihaz ikizi alma

Aşağıdaki kod parçacığı, hizmet uygulamasının cihaz ikizini nasıl aldığında gösterir:

// Get a Twin and retrieves model Id set by Device client
Twin twin = await s_registryManager.GetTwinAsync(s_deviceId);
s_logger.LogDebug($"Model Id of this Twin is: {twin.ModelId}");

Not

Bu örnek, IoT Hub hizmet istemcisinden Microsoft.Azure.Devices.Client ad alanını kullanır. Dijital ikizLER API'si de dahil olmak üzere API'ler hakkında daha fazla bilgi edinmek için hizmet geliştirici kılavuzuna bakın.

Bu kod aşağıdaki çıkışı oluşturur:

[09/21/2020 11:26:04]dbug: Thermostat.Program[0]
      Model Id of this Twin is: dtmi:com:example:Thermostat;1

Aşağıdaki kod parçacığı, cihaz ikizi aracılığıyla özellikleri güncelleştirmek için düzeltme ekinin nasıl kullanılacağını gösterir:

// Update the twin
var twinPatch = new Twin();
twinPatch.Properties.Desired[PropertyName] = PropertyValue;
await s_registryManager.UpdateTwinAsync(s_deviceId, twinPatch, twin.ETag);

Bu kod, hizmet özelliği güncelleştirdiğinde cihazdan targetTemperature aşağıdaki çıkışı oluşturur:

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Received - { "targetTemperature": 60°C }.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is InProgress.

...

[09/21/2020 11:26:17]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is Completed.

Komut çağırma

Aşağıdaki kod parçacığında komutun nasıl çağrılacakları gösterilmektedir:

private static async Task InvokeCommandAsync()
{
    var commandInvocation = new CloudToDeviceMethod(CommandName) { ResponseTimeout = TimeSpan.FromSeconds(30) };

    // Set command payload
    string componentCommandPayload = JsonConvert.SerializeObject(s_dateTime);
    commandInvocation.SetPayloadJson(componentCommandPayload);

    CloudToDeviceMethodResult result = await s_serviceClient.InvokeDeviceMethodAsync(s_deviceId, commandInvocation);

    if (result == null)
    {
        throw new Exception($"Command {CommandName} invocation returned null");
    }

    s_logger.LogDebug($"Command {CommandName} invocation result status is: {result.Status}");
}

Bu kod, hizmet komutunu çağırdığında cihazdan getMaxMinReport aşağıdaki çıkışı oluşturur:

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: Received - Generating max, min and avg temperature report since 21/09/2020 11:25:58.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: MaxMinReport since 21/09/2020 11:25:58: maxTemp=32, minTemp=32, avgTemp=32, startTime=21/09/2020 11:25:59, endTime=21/09/2020 11:26:04

IoT Tak Çalıştır, temel alınan cihaz uygulaması hakkında bilgi sahibi olmadan bir cihazın özellikleriyle etkileşim kurmanızı sağlayarak IoT'yi basitleştirir. Bu öğreticide, çözümünüzle bağlantılı bir IoT Tak Çalıştır cihazına bağlanmak ve cihazı denetlemek için Java'yı nasıl kullanacağınız gösterilmektedir.

Ö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:

SDK deposunu örnek kodla kopyalama

Öğretici: Windows üzerinde çalışan bir örnek 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. Java GitHub deposu için Microsoft Azure IoT SDK'larını bu konuma kopyalamak için aşağıdaki komutu yürütebilirsiniz:

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

Örnek cihazı derleme ve çalıştırma

Kopyalanan Java SDK deposunda termostat örneğinin kök klasörüne gidin ve oluşturun:

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

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.

/device/iot-device-samples/pnp-device-sample/thermostat-device-sample klasöründen uygulamayı çalıştırın:

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

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.

Örnek çözümü çalıştırma

IoT Tak Çalıştır hızlı başlangıçları ve öğreticileri için ortamınızı ayarlama bölümünde, örneği IoT hub'ınıza bağlanacak şekilde yapılandırmak için iki ortam değişkeni oluşturdunuz:

  • IOTHUB_CONNECTION_STRING: Daha önce not aldığınız IoT hub'ı bağlantı dizesi.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Bu öğreticide, az önce ayarladığınız örnek cihazla etkileşim kurmak için Java dilinde yazılmış örnek bir IoT çözümü kullanacaksınız.

Not

Bu örnek, IoT Hub hizmet istemcisinden com.microsoft.azure.sdk.iot.service ad alanını kullanır. Dijital ikizLER API'si de dahil olmak üzere API'ler hakkında daha fazla bilgi edinmek için hizmet geliştirici kılavuzuna bakın.

  1. Hizmet terminaliniz olarak kullanmak için başka bir terminal penceresi açın.

  2. Kopyalanan Java SDK deposunda service/iot-service-samples/pnp-service-sample/thermostat-service-sample klasörüne gidin.

  3. Örnek hizmet uygulamasını derlemek ve çalıştırmak için aşağıdaki komutları çalıştırın:

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

Cihaz ikizi alma

Aşağıdaki kod parçacığı, hizmette cihaz ikizinin nasıl alınacaklarını gösterir:

 // Get the twin and retrieve model Id set by Device client.
DeviceTwinDevice twin = new DeviceTwinDevice(deviceId);
twinClient.getTwin(twin);
System.out.println("Model Id of this Twin is: " + twin.getModelId());

Cihaz ikizlerini güncelleştirme

Aşağıdaki kod parçacığı, cihaz ikizi aracılığıyla özellikleri güncelleştirmek için bir düzeltme ekinin nasıl kullanılacağını gösterir:

String propertyName = "targetTemperature";
double propertyValue = 60.2;
twin.setDesiredProperties(Collections.singleton(new Pair(propertyName, propertyValue)));
twinClient.updateTwin(twin);

Cihaz çıkışı, cihazın bu özellik güncelleştirmesine nasıl yanıt verdiğini gösterir.

Komut çağırma

Aşağıdaki kod parçacığı, cihazda bir komut çağırmanızı gösterir:

// The method to invoke for a device without components should be "methodName" as defined in the DTDL.
String methodToInvoke = "getMaxMinReport";
System.out.println("Invoking method: " + methodToInvoke);

Long responseTimeout = TimeUnit.SECONDS.toSeconds(200);
Long connectTimeout = TimeUnit.SECONDS.toSeconds(5);

// Invoke the command.
String commandInput = ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(5).format(DateTimeFormatter.ISO_DATE_TIME);
MethodResult result = methodClient.invoke(deviceId, methodToInvoke, responseTimeout, connectTimeout, commandInput);
if(result == null)
{
    throw new IOException("Method result is null");
}

System.out.println("Method result status is: " + result.getStatus());

Cihaz çıkışı, cihazın bu komuta nasıl yanıt verdiğini gösterir.

IoT Tak Çalıştır, temel alınan cihaz uygulaması hakkında bilgi sahibi olmadan bir cihazın özellikleriyle etkileşim kurmanızı sağlayarak IoT'yi basitleştirir. Bu öğreticide, çözümünüzle bağlantılı bir IoT Tak Çalıştır cihazına bağlanmak ve cihazı denetlemek için Node.js nasıl kullanacağınız gösterilmektedir.

Ö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

SDK deposunu örnek kodla kopyalama

Düğüm SDK'sı deposundaki örnekleri kopyalayın. Seçtiğiniz bir klasörde bir terminal penceresi açın. Node.js 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-node

Örnek cihazı ç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 yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.

Bu öğreticide, IoT Tak Çalıştır cihaz olarak Node.js yazılmış örnek bir termostat cihazı kullanacaksınız. Örnek cihazı çalıştırmak için:

  1. Bir terminal penceresi açın ve GitHub'dan kopyaladığınız Node.js deposu için Microsoft Azure IoT SDK'sını içeren yerel klasöre gidin.

  2. Bu terminal penceresi, cihaz terminaliniz olarak kullanılır. Kopyalanan deponuzun klasörüne gidin ve /azure-iot-sdk-node/device/samples/javascript klasörüne gidin. Aşağıdaki komutu çalıştırarak tüm bağımlılıkları yükleyin:

    npm install
    
  3. Aşağıdaki komutla örnek termostat cihazını çalıştırın:

    node pnp_simple_thermostat.js
    
  4. Cihazın bazı bilgiler gönderdiğini ve kendisini çevrimiçi olarak bildirdiğini belirten iletiler görürsünüz. Bu iletiler, 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österir. Bu terminali kapatmayın, hizmet örneğinin çalıştığını onaylamak için bu terminale ihtiyacınız vardır.

Örnek çözümü çalıştırma

IoT Tak Çalıştır hızlı başlangıçları ve öğreticileri için ortamınızı ayarlama bölümünde, örneği IoT hub'ınıza bağlanacak şekilde yapılandırmak için iki ortam değişkeni oluşturdunuz:

  • IOTHUB_CONNECTION_STRING: Daha önce not aldığınız IoT hub'ı bağlantı dizesi.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Bu öğreticide, az önce ayarlayıp çalıştırdığınız örnek cihazla etkileşim kurmak için örnek Node.js IoT çözümünü kullanacaksınız.

  1. Hizmet terminaliniz olarak kullanmak için başka bir terminal penceresi açın.

  2. Kopyalanan Düğüm SDK'sı deposunda azure-iot-sdk-node/service/samples/javascript klasörüne gidin. Aşağıdaki komutu çalıştırarak tüm bağımlılıkları yükleyin:

    npm install
    

Özelliği okuma

  1. Cihaz terminalinde örnek termostat cihazını çalıştırdığınızda, çevrimiçi durumunu gösteren aşağıdaki iletileri gördünüz:

    properties have been reported for component
    sending telemetry message 0...
    
  2. Hizmet terminaline gidin ve cihaz bilgilerini okumak üzere örneği çalıştırmak için aşağıdaki komutu kullanın:

    node twin.js
    
  3. Hizmet terminali çıkışında cihaz ikizinin yanıtına dikkat edin. Cihazın model kimliğini ve ilişkili özelliklerin bildirdiğini görürsünüz:

    Model Id: dtmi:com:example:Thermostat;1
    {
      "deviceId": "my-pnp-device",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag": "Njc3MDMxNDcy",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00Z",
      "connectionState": "Connected",
      "lastActivityTime": "0001-01-01T00:00:00Z",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "modelId": "dtmi:com:example:Thermostat;1",
      "version": 4,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:19.4574755Z"
          },
          "$version": 1
        },
        "reported": {
          "maxTempSinceLastReboot": 31.343640523762232,
          "serialNumber": "123abc",
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:23.7339042Z",
            "maxTempSinceLastReboot": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            },
            "serialNumber": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            }
          },
          "$version": 3
        }
      },
      "capabilities": {
        "iotEdge": false
      },
      "tags": {}
    }
    
  4. Aşağıdaki kod parçacığı, cihaz ikizinin model kimliğini alan twin.js kodunu gösterir:

    var registry = Registry.fromConnectionString(connectionString);
    registry.getTwin(deviceId, function(err, twin) {
      if (err) {
        console.error(err.message);
      } else {
        console.log('Model Id: ' + twin.modelId);
        //...
      }
      //...
    }
    

Bu senaryoda, çıkışını alır Model Id: dtmi:com:example:Thermostat;1.

Not

Bu hizmet örnekleri IoT Hub hizmet istemcisinden Registry sınıfını kullanır. Dijital ikizLER API'si de dahil olmak üzere API'ler hakkında daha fazla bilgi edinmek için hizmet geliştirici kılavuzuna bakın.

Yazılabilir özelliği güncelleştirme

  1. Dosya twin.js bir kod düzenleyicisinde açın.

  2. Örnek kodu gözden geçirin; size cihaz ikizini güncelleştirmenin iki yolunu gösterir. İlk yöntemi kullanmak için değişkenini twinPatch aşağıdaki gibi değiştirin:

    var twinPatch = {
      tags: {
        city: "Redmond"
      },
      properties: {
        desired: {
          targetTemperature: 42
        }
      }
    };
    

    targetTemperature özelliği, Thermostat cihaz modelinde yazılabilir bir özellik olarak tanımlanır.

  3. Hizmet terminalinde, özelliğini güncelleştirmek için örneği çalıştırmak için aşağıdaki komutu kullanın:

    node twin.js
    
  4. Cihaz terminalinizde , cihazın güncelleştirmeyi aldığını görürsünüz:

    The following properties will be updated for the default component:
    {
      targetTemperature: {
        value: 42,
        ac: 200,
        ad: 'Successfully executed patch for targetTemperature',
        av: 2
      }
    }
    updated the property
    
  5. Hizmet terminalinizde, özelliğin güncelleştirildiğinden emin olmak için aşağıdaki komutu çalıştırın:

    node twin.js
    
  6. Hizmet terminali çıkışının reported özellikler bölümünde, bildirilen güncelleştirilmiş hedef sıcaklığı görürsünüz. Cihazın güncelleştirmeyi tamamlaması biraz zaman alabilir. Cihaz özellik güncelleştirmesini işleyene kadar bu adımı yineleyin:

    "reported": {
      //...
      "targetTemperature": {
        "value": 42,
        "ac": 200,
        "ad": "Successfully executed patch for targetTemperature",
        "av": 4
      },
      //...
    }
    

Komut çağırma

  1. device_method.js dosyasını açın ve kodu gözden geçirin.

  2. Hizmet terminaline gidin. Komutu çağırmak üzere örneği çalıştırmak için aşağıdaki komutu kullanın:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. Hizmet terminalindeki çıktı aşağıdaki onayı gösterir:

    getMaxMinReport on my-pnp-device:
    {
      "status": 200,
      "payload": {
        "maxTemp": 23.460596940801928,
        "minTemp": 23.460596940801928,
        "avgTemp": 23.460596940801928,
        "endTime": "2020-10-05T12:48:08.562Z",
        "startTime": "2020-10-05T12:47:54.450Z"
      }
    }
    
  4. Cihaz terminalinde komutun kabul edilmiş olduğunu görürsünüz:

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT Tak Çalıştır, temel alınan cihaz uygulaması hakkında bilgi sahibi olmadan bir cihazın modeliyle etkileşim kurmanızı sağlayarak IoT'yi basitleştirir. Bu öğreticide, çözümünüzle bağlantılı bir IoT Tak Çalıştır cihazına bağlanmak ve cihazı denetlemek için Python'ın nasıl kullanılacağı gösterilmektedir.

Ö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 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.

Yerel Python ortamınızda azure-iot-device paketini aşağıdaki gibi yükleyin:

pip install azure-iot-device

Aşağıdaki komutu çalıştırarak azure-iot-hub paketini yükleyin:

pip install azure-iot-hub

Örnek cihazı ç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 yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.

Bu öğreticide, IoT Tak Çalıştır cihazı olarak Python'da yazılmış örnek bir termostat cihazı kullanacaksınız. Örnek cihazı çalıştırmak için:

  1. Seçtiğiniz bir klasörde bir terminal penceresi açın. Azure IoT Cihazı Python SDK'sı GitHub deposunu bu konuma kopyalamak için aşağıdaki komutu çalıştırın:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Bu terminal penceresi, cihaz terminaliniz olarak kullanılır. Kopyalanan deponuzun klasörüne gidin ve azure-iot-sdk-python/samples/pnp klasörüne gidin.

  3. Aşağıdaki komutla örnek termostat cihazını çalıştırın:

    python simple_thermostat.py
    
  4. Cihazın bazı bilgiler gönderdiğini ve kendisini çevrimiçi olarak bildirdiğini belirten iletiler görürsünüz. Bu iletiler, 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österir. Bu terminali kapatmayın, hizmet örneğinin çalıştığını onaylamak için bu terminale ihtiyacınız vardır.

Örnek çözümü çalıştırma

Bu öğreticide, az önce ayarladığınız örnek cihazla etkileşim kurmak için Python'da örnek bir IoT çözümü kullanacaksınız.

  1. Hizmet terminaliniz olarak kullanmak için başka bir terminal penceresi açın. Azure IoT Hub Python SDK GitHub deposunu bu konuma kopyalamak için aşağıdaki komutu çalıştırın:

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. Yükleme:

  3. Kopyalanan Python SDK deposunun /azure-iot-hub-python/samples klasörüne gidin.

  4. registry_manager_pnp_sample.py dosyasını açın ve kodu gözden geçirin. Bu örnek, IoT Tak Çalıştır cihazınızla etkileşimde bulunurken IoTHubRegistryManager sınıfının nasıl kullanılacağını gösterir.

Not

Bu hizmet örnekleri, IoT Hub hizmet istemcisinden IoTHubRegistryManager sınıfını kullanır. Dijital ikizLER API'si de dahil olmak üzere API'ler hakkında daha fazla bilgi edinmek için hizmet geliştirici kılavuzuna bakın.

Cihaz ikizini alma

IoT Tak Çalıştır hızlı başlangıçları ve öğreticileri için ortamınızı ayarlama bölümünde, örneği IoT hub'ınıza bağlanacak şekilde yapılandırmak için iki ortam değişkeni oluşturdunuz:

  • IOTHUB_CONNECTION_STRING: Daha önce not aldığınız IoT hub'ı bağlantı dizesi.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Bu örneği çalıştırmak için hizmet terminalinde aşağıdaki komutu kullanın:

set IOTHUB_METHOD_NAME="getMaxMinReport"
set IOTHUB_METHOD_PAYLOAD="hello world"
python registry_manager_pnp_sample.py

Not

Bu örneği Linux üzerinde çalıştırıyorsanız yerine kullanın exportset.

Çıkışta cihaz ikizi gösterilir ve model kimliği yazdırılır:

The Model ID for this device is:
dtmi:com:example:Thermostat;1

Aşağıdaki kod parçacığı, registry_manager_pnp_sample.py örnek kodunu gösterir:

    # Create IoTHubRegistryManager
    iothub_registry_manager = IoTHubRegistryManager(iothub_connection_str)

    # Get device twin
    twin = iothub_registry_manager.get_twin(device_id)
    print("The device twin is: ")
    print("")
    print(twin)
    print("")

    # Print the device's model ID
    additional_props = twin.additional_properties
    if "modelId" in additional_props:
        print("The Model ID for this device is:")
        print(additional_props["modelId"])
        print("")

Cihaz ikizlerini güncelleştirme

Bu örnek, cihazda yazılabilir özelliğin targetTemperature nasıl güncelleştirileceklerini gösterir:

    # Update twin
    twin_patch = Twin()
    twin_patch.properties = TwinProperties(
        desired={"targetTemperature": 42}
    )  # this is relevant for the thermostat device sample
    updated_twin = iothub_registry_manager.update_twin(device_id, twin_patch, twin.etag)
    print("The twin patch has been successfully applied")
    print("")

Güncelleştirmenin aşağıdaki çıkışı gösteren cihaz terminalinde uygulandığını doğrulayabilirsiniz:

the data in the desired properties patch was: {'targetTemperature': 42, '$version': 2}

Hizmet terminali düzeltme ekinin başarılı olduğunu onaylar:

The twin patch has been successfully applied

Komut çağırma

Örnek daha sonra bir komut çağırır:

Hizmet terminali cihazdan bir onay iletisi gösterir:

The device method has been successfully invoked

Cihaz terminalinde cihazın şu komutu aldığını görürsünüz:

Command request received with payload
hello world
Will return the max, min and average temperature from the specified time hello to the current time
Done generating
{"tempReport": {"avgTemp": 34.2, "endTime": "09/07/2020 09:58:11", "maxTemp": 49, "minTemp": 10, "startTime": "09/07/2020 09:56:51"}}

Kaynakları temizleme

Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.

Sonraki adımlar

Bu öğreticide bir IoT Tak Çalıştır cihazını IoT çözümüne bağlamayı öğrendiniz. IoT Tak Çalıştır cihaz modelleri hakkında daha fazla bilgi edinmek için bkz: