Öğretici: Linux veya Windows üzerinde çalışan örnek bir IoT Tak Çalıştır cihaz uygulamasını IoT Hub'a bağlama
Bu öğreticide örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, ioT hub'ınıza bağlama ve gönderdiği telemetri verilerini görüntülemek için Azure IoT gezgini aracını kullanma adımları 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.
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı 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'ta 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 veya üzeri ve GCC sürümünün 4.4.7 veya üzeri 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
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 dizinde 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
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_simple_thermostat/ adresine gidin.
pnp_simple_thermostat.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_simple_thermostat\\pnp_pnp_simple_thermostat.c", "projectTarget": "", "name": "pnp_simple_thermostat.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_simple_thermostat.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_simple_thermostat.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ır ve telemetri verilerini hub'a gönderiyor. Sonraki adımları tamamladığınızda örneği çalışır durumda tutun.
Kodu oluşturmak için cmake kullanma
Kodu oluşturmak için cmake komut satırı yardımcı programını kullanırsınız:
Cihaz SDK'sının kök klasöründe bir cmake alt dizini oluşturun ve bu klasöre gidin:
cd azure-iot-sdk-c mkdir cmake cd cmake
SDK'yi ve örnekleri oluşturmak için aşağıdaki komutları çalıştırın:
cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF .. cmake --build .
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 yapılandırma hakkında daha fazla bilgi edinmek için bkz . örnek benioku.
IoT hub'ınıza telemetri gönderen bir IoT Tak Çalıştır cihazının simülasyonunu oluşturan örnek uygulamayı SDK'da ç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_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe
İpucu
Windows üzerinde Visual Studio'da kod yürütmeyi izlemek için pnp_simple_thermostat.c dosyasındaki işleve main
bir kesme noktası ekleyin.
Cihaz artık komutları ve özellik güncelleştirmelerini almaya hazır ve telemetri verilerini hub'a gönderiyor. 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 basit bir IoT Tak Çalıştır termostat cihazı uygular. Termostat modeli IoT Tak Çalıştır bileşenleri kullanmaz. Termostat cihazının DTDL model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.
Cihaz kodu, IoT hub'ınıza bağlanmak için standart işlevi kullanır:
deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)
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:
static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";
...
IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)
Özellikleri güncelleştiren, komutları işleyen ve telemetri gönderen kod, IoT Tak Çalıştır kurallarını kullanmayan bir cihazın koduyla aynıdır.
Kod, IoT hub'ınızdan gönderilen yüklerdeki JSON nesnelerini ayrıştırmak için Parson kitaplığını kullanır:
// JSON parser
#include "parson.h"
Kaynakları temizleme
Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.
Bu öğreticide örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, ioT hub'ınıza bağlama ve gönderdiği telemetri verilerini görüntülemek için Azure IoT gezgini aracını kullanma adımları gösterilmektedir. Örnek uygulama C# dilinde yazılır ve C# için Azure IoT 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.
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı 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'ta takip ediyorsanız, bu ayırıcıları ile \
değiştirdiğinizden emin olun.
- Platformunuz için en son .NET SDK'sı .
- Git.
Kodu indirme
Bu öğreticide, C# deposu için Azure IoT SDK'sını kopyalayıp derlemek için kullanabileceğiniz bir geliştirme ortamı hazırlayacaksınız.
Seçtiğiniz bir klasörde bir komut istemi açın. C# (.NET) için Microsoft Azure IoT SDK'sı GitHub deposunu bu konuma kopyalamak için aşağıdaki komutu çalıştırın:
git clone https://github.com/Azure/azure-iot-sdk-csharp
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/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ır ve telemetri verilerini hub'a gönderiyor. 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 basit bir IoT Tak Çalıştır termostat cihazı uygular. Bu örneğin uyguladığı model IoT Tak Çalıştır bileşenleri kullanmaz. Termostat 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 void InitializeDeviceClientAsync()
{
var options = new ClientOptions
{
ModelId = ModelId,
};
s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
}
Model kimliği aşağıdaki kod parçacığında gösterildiği gibi kodda depolanır:
private const string ModelId = "dtmi:com:example:Thermostat;1";
Özellikleri güncelleştiren, komutları işleyen ve telemetri gönderen kod, IoT Tak Çalıştır kurallarını kullanmayan bir cihazın koduyla aynıdır.
Örnek, IoT hub'ınızdan gönderilen yüklerdeki JSON nesnelerini ayrıştırmak için bir JSON kitaplığı kullanır:
using Newtonsoft.Json;
...
DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);
Kaynakları temizleme
Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.
Bu öğreticide örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, ioT hub'ınıza bağlama ve gönderdiği telemetri verilerini görüntülemek için Azure IoT gezgini aracını kullanma adımları 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.
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı 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'ta 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
Bu öğreticide, Azure IoT Hub Cihazı Java SDK'sını kopyalayıp derlemek için kullanabileceğiniz bir geliştirme ortamı hazırlamış olacaksınız.
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
Kodu oluşturma
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
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 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ır ve telemetri verilerini hub'a gönderiyor. 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 basit bir IoT Tak Çalıştır termostat cihazı uygular. Bu örneğin uyguladığı model IoT Tak Çalıştır bileşenleri kullanmaz. Termostat cihazının 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";
Özellikleri güncelleştiren, komutları işleyen ve telemetri gönderen kod, IoT Tak Çalıştır kurallarını kullanmayan bir cihazın koduyla aynıdır.
Örnek, IoT hub'ınızdan gönderilen yüklerdeki JSON nesnelerini ayrıştırmak için bir JSON kitaplığı kullanır:
import com.google.gson.Gson;
...
Date since = new Gson().fromJson(jsonRequest, Date.class);
Kaynakları temizleme
Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.
Bu öğreticide örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, ioT hub'ınıza bağlama ve gönderdiği telemetri verilerini görüntülemek için Azure IoT gezgini aracını kullanma adımları gösterilmektedir. Örnek uygulama Node.js yazılır ve Node.js 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.
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı 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'ta takip ediyorsanız, bu ayırıcıları ile \
değiştirdiğinizden 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
Bu öğreticide, Node.js için Azure IoT Hub Cihaz SDK'sını kopyalayıp derlemek için kullanabileceğiniz bir geliştirme ortamı hazırlarsınız.
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 bir cihazı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
Örnek cihazı çalıştırma
Bu örnek basit bir IoT Tak Çalıştır termostat cihazı uygular. Bu örneğin uyguladığı model IoT Tak Çalıştır bileşenleri kullanmaz. Termostat cihazının DTDL model dosyası, cihazın uyguladığı telemetriyi, özellikleri ve komutları tanımlar.
pnp_simple_thermostat.js dosyasını açın. Bu dosyada şunların nasıl yapıldığını görebilirsiniz:
- Gerekli arabirimleri içeri aktarın.
- Özellik güncelleştirme işleyicisi ve komut işleyicisi yazın.
- İstenen özellik düzeltme eklerini işleyip telemetri gönderin.
- İsteğe bağlı olarak, Azure Cihaz Sağlama Hizmeti'ni (DPS) kullanarak cihazınızı sağlayın.
Main işlevinde, her şeyin nasıl bir araya geldiğini görebilirsiniz:
- Cihazı bağlantı dizesi oluşturun veya DPS kullanarak sağlayın.)
- IoT Tak Çalıştır cihaz modelini belirtmek için modelKIMİ seçeneğini kullanın.
- Komut işleyicisini etkinleştirin.
- Cihazdan hub'ınıza telemetri gönderin.
- Cihaz ikizini alın ve bildirilen özellikleri güncelleştirin.
- İstenen özellik güncelleştirme işleyicisini etkinleştirin.
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.
IoT hub'ınıza telemetri gönderen bir IoT Tak Çalıştır cihazının benzetimini yapmak için örnek uygulamayı çalıştırın. Örnek uygulamayı çalıştırmak için aşağıdaki komutu kullanın:
node pnp_simple_thermostat.js
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
Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.
Bu öğreticide örnek bir IoT Tak Çalıştır cihaz uygulaması oluşturma, ioT hub'ınıza bağlama ve gönderdiği telemetri verilerini görüntülemek için Azure IoT gezgini aracını kullanma adımları gösterilmektedir. Örnek uygulama Python için yazılmıştır ve Python için Azure IoT Hub Cihaz SDK'sında yer alır. Çö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.
Önemli
Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı 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 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 paketi aşağıdaki gibi yükleyin:
pip install azure-iot-device
Python SDK IoT deposunu kopyalayın:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
Örnek cihazı çalıştırma
azure-iot-sdk-python/samples/pnp klasörü IoT Tak Çalıştır cihazın örnek kodunu içerir. Bu öğreticide simple_thermostat.py dosyası kullanılır. Bu örnek kod, IoT Tak Çalıştır uyumlu bir cihaz uygular ve Azure IoT Python Cihaz İstemci Kitaplığı'nı kullanır.
simple_thermostat.py dosyasını bir metin düzenleyicisinde açın. Aşağıdakilere dikkat edin:
Thermostat'ı benzersiz olarak temsil eden tek bir cihaz ikizi model tanımlayıcısını (DTMI) tanımlar. DTMI kullanıcı tarafından bilinmeli ve cihaz uygulama senaryosuna bağlı olarak değişir. Geçerli örnek için model, izleme sıcaklığıyla ilişkili telemetri, özellikler ve komutlar içeren bir termostat temsil eder.
Komut işleyicisi uygulamalarını tanımlamak için işlevleri vardır. Cihazın komut isteklerine nasıl yanıt vereceğini tanımlamak için bu işleyicileri yazarsınız.
Komut yanıtı tanımlamak için bir işlevi vardır. IoT hub'ınıza yanıt göndermek için komut yanıtı işlevleri oluşturursunuz.
Uygulamadan çıkmanıza olanak sağlamak için bir giriş klavye dinleyicisi işlevi tanımlar.
Bir ana işlevi vardır. Ana işlev:
Cihaz SDK'sını kullanarak bir cihaz istemcisi oluşturur ve IoT hub'ınıza bağlanır.
Özellikleri güncelleştirir. Thermostat modeli, Ve'yi
maxTempSinceLastReboot
Thermostat'ın iki özelliği olarak tanımlartargetTemperature
. Özellikler, üzerindedevice_client
tanımlanan yöntem kullanılarakpatch_twin_reported_properties
güncelleştirilir.execute_command_listener işlevini kullanarak komut isteklerini dinlemeye başlar. İşlev, hizmetten gelen komutları dinlemek için bir 'dinleyici' ayarlar. Dinleyiciyi ayarladığınızda, ,
method_name
user_command_handler
vecreate_user_response_handler
sağlarsınız.- 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.
- işlevi,
Telemetri göndermeye başlar. pnp_send_telemetry pnp_methods.py dosyasında tanımlanır. Örnek kod, bu işlevi sekiz saniyede bir çağırmak için bir döngü kullanır.
Tüm dinleyicileri ve görevleri devre dışı bırakır ve Q veya q tuşuna bastığınızda döngü var olur.
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:
python simple_thermostat.py
Cihazın hub'a telemetri verileri gönderdiğini ve artık komut ve özellik güncelleştirmelerini almaya hazır olduğunu gösteren aşağıdaki çıkışı görürsünüz:
Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message
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
Hızlı başlangıçları ve öğreticileri tamamladıysanız bkz . Kaynakları temizleme.
Kısıtlanmış cihazlar için geliştiriyorsanız, IoT Tak Çalıştır şu şekilde kullanabilirsiniz:
- Embedded C IoT istemci kitaplıkları için Azure SDK.
- Eclipse ThreadX.
Bu makale, bu kısıtlanmış senaryolara yönelik bağlantıları ve kaynakları içerir.
Önkoşullar
Bu makaledeki örneklerin çoğu belirli bir donanım cihazı gerektirir ve örneklerin her biri için önkoşullar farklıdır. Ayrıntılı önkoşullar, yapılandırma ve derleme yönergeleri için ilgili örneğin bağlantısını izleyin.
Embedded C için SDK'sını kullanma
Embedded C için SDK, IoT Tak Çalıştır kurallarının kullanılması da dahil olmak üzere kısıtlanmış cihazları Azure IoT hizmetlerine bağlamak için basit bir çözüm sunar. Aşağıdaki bağlantılar, MCU tabanlı cihazlara ve eğitim ve hata ayıklama amacıyla örnekler içerir.
MCU tabanlı cihaz kullanma
Embedded C için SDK'yı, Cihaz Sağlama Hizmeti'ni ve MCU'da IoT Tak Çalıştır kullanarak eksiksiz bir uçtan uca öğretici için bkz. IoT Hub Cihazı Sağlama Hizmeti aracılığıyla Azure'a bağlanmak için PIC-IoT Wx Geliştirme Panosu'nı yeniden kullanma.
Giriş örnekleri
Embedded C deposu için SDK, IoT Tak Çalıştır nasıl kullanacağınızı gösteren birkaç örnek içerir:
Not
Bu örnekler, eğitim ve hata ayıklama amacıyla Windows ve Linux üzerinde çalıştırılırken gösterilir. Bir üretim senaryosunda örnekler yalnızca kısıtlanmış cihazlara yöneliktir.
Eclipse ThreadX Kullanma
Eclipse ThreadX, Azure IoT bulut hizmetlerine yerel bağlantı ekleyen basit bir katman içerir. Bu katman, Eclipse ThreadX'in gelişmiş özelliklerini kullanırken kısıtlanmış cihazları Azure IoT'ye bağlamak için basit bir mekanizma sağlar. Daha fazla bilgi edinmek için bkz. Eclipse ThreadX'e genel bakış.
Araç Zincirleri
Eclipse ThreadX örnekleri, aşağıdakiler gibi farklı türlerde IDE ve araç zinciri bileşimleriyle sağlanır:
- IAR: IAR Embedded Workbench IDE
- GCC/CMake: Açık kaynak CMake derleme sisteminin ve GNU Arm Embedded araç zincirinin üzerine inşa edin.
- MCUExpresso: NXP MCUXpresso IDE
- STM32Cube: STMicroelectronics's STM32Cube IDE
- MPLAB: Microchip MPLAB X IDE
Örnekler
Aşağıdaki tabloda Eclipse ThreadX ve IoT Tak Çalıştır ile farklı cihazlarda çalışmaya başlamayı gösteren örnekler listelenmektedir:
Üretici | Cihaz | Örnekler |
---|---|---|
Mikroçip | ATSAME54-XPRO | GCC/CMake • IAR • MPLAB |
MXCHIP | AZ3166 | GCC/CMake |
NXP | MIMXRT1060-EVK | GCC/CMake • IAR • MCUXpresso |
STMicroelectronics | 32F746GDISCOVERY | IAR • STM32Cube |
STMicroelectronics | B-L475E-IOT01 | GCC/CMake • IAR • STM32Cube |
STMicroelectronics | B-L4S5I-IOT01 | GCC/CMake • IAR • STM32Cube |
Sonraki adımlar
Bu öğreticide, bir IoT Tak Çalıştır cihazını IoT hub'ına bağlamayı öğrendiniz. IoT Tak Çalıştır cihazlarınızla etkileşim kuran bir çözüm oluşturma hakkında daha fazla bilgi edinmek için bkz: