Öğretici: Linux veya Windows üzerinde çalışan bir IoT Tak Çalıştır birden çok bileşen cihaz uygulamasını IoT Hub'a bağlama
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.
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 cmake
2.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:
- Visual Studio (Community, Professional veya Enterprise) - Visual Studio'yu yüklerken C++ ile Masaüstü Geliştirme iş yükünü eklediğinizden emin olun.
- Git.
- CMake.
Kodu indirme
Öğretici: Linux veya Windows üzerinde çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını önceden indirdiğiniz IoT Hub'a (C) bağlama işlemini tamamladıysanız.
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
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.
Visual Studio hazır olduğunda, Çözüm Gezgini örnek iothub_client/samples/pnp/pnp_temperature_controller/ adresine gidin.
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.
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>" } } ] }
pnp_temperature_controller.c dosyasına sağ tıklayın ve Başlangıç Öğesi Olarak Ayarla'yı seçin.
Visual Studio'da kod yürütmeyi izlemek için pnp_temperature_controller.c dosyasında işleve
main
bir kesme noktası ekleyin.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:
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
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_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.
Örneği çalıştırmak için:
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.
Azure IoT gezginini açın.
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.
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.
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.
Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.
Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.
Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.
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.
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.
Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.
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.
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.
Yeni değerin gösterilmesi için Yenile düğmesini seçin.
Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.
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) 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ğırarakPnP_ProcessTwinData
verileri işler.PnP_ProcessTwinData
, JSON'u ayrıştırmak için ziyaretçi desenini kullanır ve ardından her öğeyi çağırarakPnP_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.
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.
- 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 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.
Azure IoT gezginini açın.
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.
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.
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.
Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.
Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.
Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.
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.
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.
Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.
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.
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.
Yeni değerin gösterilmesi için Yenile düğmesini seçin.
Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.
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) 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ı PnpHelper
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:
İ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.
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ğlamayı 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_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 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.
Azure IoT gezginini açın.
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.
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.
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.
Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.
Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.
Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.
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.
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.
Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.
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.
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.
Yeni değerin gösterilmesi için Yenile düğmesini seçin.
Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.
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) 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ı PnpHelper
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:
İ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.
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 üzerinde çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (Node) bağlama işlemini 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.
- 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) 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ğlar
modelId
.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.
- Cihaz DTDL'i ve
ve
sendTelemetry
kullanaraksetInterval
telemetri göndermeye başlar.helperCreateReportedPropertiesPatch
özelliklerini oluşturmak için işlevini veupdateComponentReportedProperties
ö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_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.
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.
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.
Azure IoT gezginini açın.
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.
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.
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.
Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.
Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.
Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.
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.
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.
Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.
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.
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.
Yeni değerin gösterilmesi için Yenile düğmesini seçin.
Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.
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.
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 üzerinde çalışan bir örnek IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a (Python) bağlamayı 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) 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:
pnp_helper.py
Yardımcı yöntemlere erişmek için içeri aktarır.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.
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.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.Komut işleyicisi uygulamalarını tanımlar. Bu işleyiciler, komut istekleri aldığında cihazın ne yaptığını tanımlar.
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.
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.
Komut istekleri için bir dinleyici tanımlar.
İstenen özellik güncelleştirmeleri için bir dinleyici tanımlar.
Ş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önderir
model_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.öğesini çağırarak
patch_twin_reported_properties
bileşenlerinin okunabilir özelliklerini güncelleştirir.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 birmethod_name
,user_command_handler
ve 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.
- komut
Özellik güncelleştirmelerini dinlemek için kullanır
execute_property_listener
.kullanarak telemetri göndermeye
send_telemetry
baş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ırTü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_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.
Ö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.
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.
Azure IoT gezginini açın.
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.
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.
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.
Daha önce oluşturduğunuz cihazın Cihaz Kimliği'ne tıklayın.
Soldaki menüde cihaz için kullanılabilen farklı bilgi türleri gösterilir.
Cihazınızın model bilgilerini görüntülemek için IoT Tak Çalıştır bileşenleri seçin.
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.
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.
Bu bileşen için bildirilen salt okunur özellikleri görüntülemek için Özellikler (salt okunur) sayfasını seçin.
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.
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.
Yeni değerin gösterilmesi için Yenile düğmesini seçin.
Bu bileşenin tüm komutlarını görüntülemek için Komutlar sayfasını seçin.
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: