Öğ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.
Önemli
Bu makale, paylaşılan erişim imzası kullanarak hizmete bağlanma adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak Microsoft Entra ID veya yönetilen kimliklerle bir hizmette kimlik doğrulaması yapmak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bulut güvenliği.
Ö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.
- Platformunuz için en son .NET SDK'sı .
- Git.
SDK deposunu örnek kodla kopyalama
Öğretici: Windows üzerinde çalışan bir örnek IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (C#) bağlamayı 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.
Başka bir terminal penceresinde azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat klasörüne gidin.
Hizmet örneğini oluşturmak için aşağıdaki komutu çalıştırın:
dotnet build
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ğlamayı 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_TYPE
DPS
- DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
-
değeriyle
my-pnp-device
IOTHUB_DEVICE_DPS_DEVICE_ID. - Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
-
değeriyle
global.azure-devices-provisioning.net
IOTHUB_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.
Hizmet terminaliniz olarak kullanmak için başka bir terminal penceresi açın.
Kopyalanan Java SDK deposunda service/iot-service-samples/pnp-service-sample/thermostat-service-sample klasörüne gidin.
Ö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_TYPE
DPS
- DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
-
değeriyle
my-pnp-device
IOTHUB_DEVICE_DPS_DEVICE_ID. - Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
-
değeriyle
global.azure-devices-provisioning.net
IOTHUB_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:
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.
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
Aşağıdaki komutla örnek termostat cihazını çalıştırın:
node pnp_simple_thermostat.js
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.
Hizmet terminaliniz olarak kullanmak için başka bir terminal penceresi açın.
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
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...
Hizmet terminaline gidin ve cihaz bilgilerini okumak üzere örneği çalıştırmak için aşağıdaki komutu kullanın:
node twin.js
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": {} }
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
Dosya twin.js bir kod düzenleyicisinde açın.
Ö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.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
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
Hizmet terminalinizde, özelliğin güncelleştirildiğinden emin olmak için aşağıdaki komutu çalıştırın:
node twin.js
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
device_method.js dosyasını açın ve kodu gözden geçirin.
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
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" } }
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_TYPE
DPS
- DPS kimliği kapsamıyla IOTHUB_DEVICE_DPS_ID_SCOPE.
-
değeriyle
my-pnp-device
IOTHUB_DEVICE_DPS_DEVICE_ID. - Kayıt birincil anahtarıyla IOTHUB_DEVICE_DPS_DEVICE_KEY.
-
değeriyle
global.azure-devices-provisioning.net
IOTHUB_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:
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
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.
Aşağıdaki komutla örnek termostat cihazını çalıştırın:
python simple_thermostat.py
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.
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
Yükleme:
Kopyalanan Python SDK deposunun /azure-iot-hub-python/samples klasörüne gidin.
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 export
set
.
Çı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: