Öğretici: IoT hub’ınızla bağlantıyı test etmek için bir simülasyon cihazı kullanma
Bu öğreticide, cihaz bağlantısını test etmek için Azure IOT Hub'ı portal araçları ve Azure CLI komutlarını kullanırsınız. Bu öğreticide masaüstü bilgisayarınızda çalıştırdığınız bir cihaz simülatörü de kullanılır.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Cihazın kimlik doğrulamasını denetleme
- Cihazın bulut bağlantısını denetleme
- Bulut-cihaz bağlantısını denetleme
- Cihaz çift eşitlemesini denetleme
Önkoşullar
Bu öğreticide bulut kaynakları oluşturmak için Azure CLI kullanılır. CLI komutlarını çalıştırmanın iki yolu vardır:
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell Hızlı Başlangıcı - Bash.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
- az login komutunu kullanarak Azure CLI'da oturum açın .
- İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
- Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Not
Bu makalede Azure IoT uzantısının adlı
azure-iot
en yeni sürümü kullanılır. Eski sürüm olarak adlandırılırazure-cli-iot-ext
. Bir kerede yalnızca bir sürümünüz yüklü olmalıdır. Şu anda yüklü olan uzantıları doğrulamak için komutunuaz extension list
kullanabilirsiniz.Uzantının eski sürümünü kaldırmak için kullanın
az extension remove --name azure-cli-iot-ext
.Uzantının yeni sürümünü eklemek için kullanın
az extension add --name azure-iot
.Hangi uzantıları yüklediğinizi görmek için kullanın
az extension list
.Bu öğreticide çalıştırdığınız örnek uygulama Node.js kullanır. Geliştirme makinenizde v10.x.x veya üzerini Node.js gerekir.
nodejs.org adresinden birden fazla platform için Node.js’yi indirebilirsiniz.
Aşağıdaki komutu kullanarak geliştirme makinenizde geçerli Node.js sürümünü doğrulayabilirsiniz:
node --version
Node.js için Azure IoT örneklerinden örnek Node.js projesini kopyalayın veya indirin.
Güvenlik duvarınızda 8883 numaralı bağlantı noktasının açık olduğundan emin olun. Bu öğreticideki cihaz örneği, 8883 numaralı bağlantı noktası üzerinden iletişim kuran MQTT protokollerini kullanır. Bu bağlantı noktası bazı kurumsal ve eğitim ağı ortamlarında engellenebilir. Bu sorunu çözmenin daha fazla bilgi ve yolları için bkz . IoT Hub'a (MQTT) Bağlanma.
IoT hub oluşturma
Bu bölümde, IoT hub'ı ve kaynak grubu oluşturmak için Azure CLI'yi kullanacaksınız. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. IoT hub'ı, IoT uygulamanızla cihazlar arasında çift yönlü iletişim için merkezi bir ileti hub'ı işlevi görür.
Azure aboneliğinizde zaten bir IoT hub'ınız varsa bu bölümü atlayabilirsiniz.
IoT hub'ı ve kaynak grubu oluşturmak için:
CLI uygulamanızı başlatın. Bu makalenin geri kalanında CLI komutlarını çalıştırmak için komut söz dizimini kopyalayın, CLI uygulamanıza yapıştırın, değişken değerlerini düzenleyin ve tuşuna basın
Enter
.- Cloud Shell kullanıyorsanız Cloud Shell'i bölünmüş bir tarayıcı penceresinde başlatmak için CLI komutlarında Deneyin düğmesini seçin. Veya Cloud Shell'i ayrı bir tarayıcı sekmesinde açabilirsiniz.
- Azure CLI'yi yerel olarak kullanıyorsanız CLI konsol uygulamanızı başlatın ve Azure CLI'da oturum açın.
azure-iot uzantısını yüklemek veya geçerli sürüme yükseltmek için az extension add komutunu çalıştırın.
az extension add --upgrade --name azure-iot
CLI uygulamanızda az group create komutunu çalıştırarak bir kaynak grubu oluşturun. Aşağıdaki komut eastus konumunda MyResourceGroup adlı bir kaynak grubu oluşturur.
Not
İsteğe bağlı olarak, farklı bir konum ayarlayabilirsiniz. Kullanılabilir konumları görmek için komutunu çalıştırın
az account list-locations
. Bu hızlı başlangıçta örnek komutta gösterildiği gibi eastus kullanılmıştır.az group create --name MyResourceGroup --location eastus
IoT hub'ı oluşturmak için az iot hub create komutunu çalıştırın. IoT hub'ı oluşturmak birkaç dakika sürebilir.
YourIotHubName. Aşağıdaki komutta ioT hub'ınız için seçtiğiniz adı kullanarak bu yer tutucuyu ve çevresindeki küme ayraçlarını değiştirin. IoT hub adı Azure'da genel olarak benzersiz olmalıdır. Bu hızlı başlangıcın geri kalanında yer tutucuyu gördüğünüz her yerde IoT hub'ınızın adını kullanın.
az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
Cihaz kimlik doğrulamasını denetleme
Hub ile herhangi bir veri alışverişi yapmak için cihazın hub'ınızda kimliğini doğrulaması gerekir. Cihazlarınızı yönetmek ve kullanmakta olduğunuz kimlik doğrulama anahtarlarını denetlemek için portalın Cihaz Yönetimi bölümündeki IoT Cihazları aracını kullanabilirsiniz. Öğreticinin bu bölümünde yeni bir test cihazı ekler, anahtarını alır ve test cihazının hub'a bağlanıp bağlanamadığını denetlersiniz. Daha sonra bir cihaz eski bir anahtarı kullanmaya çalıştığında ne olacağını izlemek için kimlik doğrulama anahtarını sıfırlarsınız.
Cihaz kaydetme
Bir cihazın bağlanabilmesi için IoT hub’ınıza kaydedilmesi gerekir. Bu bölümde, cihaz kimliği oluşturmak için Azure CLI'yi kullanacaksınız.
IoT hub'ınıza kayıtlı bir cihazınız varsa bu bölümü atlayabilirsiniz.
Cihaz kimliği oluşturmak için:
CLI kabuğunuzda az iot hub device-identity create komutunu çalıştırın. Bu komut cihaz kimliğini oluşturur.
your_iot_hub_name. Aşağıdaki yer tutucuyu IoT hub'ınız için seçtiğiniz adla değiştirin.
myDevice. Bu makalenin tamamında cihaz kimliği için bu adı kullanabilir veya farklı bir cihaz adı belirtebilirsiniz.
az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
az iot hub device-identity connection-string show komutunu çalıştırın.
az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
bağlantı dizesi çıktısı aşağıdaki biçimdedir:
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
bağlantı dizesi güvenli bir konuma kaydedin.
Not
CLI uygulamanızı açık tutun. Sonraki adımlarda kullanacaksınız.
Test cihazının benzetimini yapın
IoT hub'ınıza telemetri gönderen bir cihazın benzetimini yapmak için daha önce indirdiğiniz Node.js simülasyon cihazı uygulamasını çalıştırın.
Geliştirme makinenizdeki bir terminal penceresinde, indirdiğiniz örnek Node.js projesinin kök klasörüne gidin. Ardından iot-hub\Tutorials\ConnectivityTests klasörüne gidin.
Terminal penceresinde, aşağıdaki komutları çalıştırarak gerekli kitaplıkları yükleyin ve simülasyon cihazı uygulamasını çalıştırın. Cihazı kaydederken not ettiğiniz cihazı bağlantı dizesi kullanın.
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
Terminal penceresi, hub'ınıza bağlandıktan sonra bir başarı iletisi görüntüler:
Şimdi IoT hub’ınız tarafından üretilen cihaz anahtarını kullanarak bir cihazın kimliğini başarıyla doğruladınız.
Anahtarları sıfırlama
Bu bölümde, cihaz anahtarını sıfırlar ve simülasyon cihazı bağlanmaya çalıştığında çıkan hatayı incelersiniz.
Cihazınızın birincil cihaz anahtarını sıfırlamak için az iot hub device-identity update komutunu çalıştırın:
# Generate a new Base64 encoded key using the current date read key < <(date +%s | sha256sum | base64 | head -c 32) # Reset the primary device key for test device az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
Geliştirme makinenizdeki terminal penceresinde simülasyon cihazı uygulamasını yeniden çalıştırın:
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
Uygulama bağlanmaya çalıştığında bu kez, bir kimlik doğrulama hatası görürsünüz:
Paylaşılan erişim imzası (SAS) belirteci oluşturma
Cihazınız IoT Hub cihaz SDK'lerinden birini kullanıyorsa, SDK kitaplık kodu hub ile kimlik doğrulaması gerçekleştirmek için kullanılan SAS belirtecini oluşturur. SAS belirteci, hub'ınızın adı, cihazınızın adı ve cihaz anahtarı ile oluşturulur.
Bazı senaryolarda, örneğin bir bulut protokol ağ geçidi veya bir özel kimlik doğrulama düzenin bir parçası olarak, SAS belirtecini kendiniz oluşturmanız gerekebilir. SAS oluşturma kodunuzla ilgili sorunları gidermek için, test sırasında kullanılacak bilinen iyi bir SAS belirteci oluşturmak yararlı olur.
Not
SimulatedDevice-2.js örneği, SDK’lı ve SDK’sız SAS belirteci oluşturma örnekleri içerir.
CLI kullanarak bilinen iyi bir SAS belirteci oluşturmak için az iot hub generate-sas-token komutunu çalıştırın:
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
Oluşturulan SAS belirtecinin tam metnini kopyalayın. SAS belirteci aşağıdaki örneğe benzer:
SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
Geliştirme makinenizdeki terminal penceresinde, indirdiğiniz örnek Node.js projesinin kök klasörüne gidin. Ardından iot-hub\Tutorials\ConnectivityTests klasörüne gidin.
Terminal penceresinde, aşağıdaki komutları çalıştırarak gerekli kitaplıkları yükleyin ve simülasyon cihazı uygulamasını çalıştırın:
npm install node SimulatedDevice-2.js "{Your SAS token}"
SAS belirtecini kullanarak hub'ınıza bağlandıktan sonra terminal penceresinde bir başarı iletisi görüntülenir:
Şimdi bir CLI komutu tarafından oluşturulmuş bir test SAS belirteci kullanarak bir cihazın kimliğini başarıyla doğruladınız. SimulatedDevice 2.js dosyası, kodda bir SAS belirteci üretmeyi gösteren örnek kodlar içerir.
Protokoller
Bir cihaz IOT hub'ınıza bağlanmak için aşağıdaki protokollerden birini kullanabilir:
Protokol | Giden bağlantı noktası |
---|---|
MQTT | 8883 |
WebSockets üzerinden MQTT | 443 |
AMQP | 5671 |
WebSockets üzerinden AMQP | 443 |
HTTPS | 443 |
Giden bağlantı noktası bir güvenlik duvarı tarafından engellenirse cihaz bağlanamaz:
Cihazın bulut bağlantısını denetleme
Bir cihaz bağlandıktan sonra IoT hub'ınıza telemetri göndermeye başlayabilir. Bu bölümde, cihaz tarafından gönderilen telemetrinin hub'ınızı ulaşıp ulaşmadığını nasıl doğrulayacağınız gösterilir.
Cihazdan buluta ileti gönderme
Önceki bölümde cihazınız için bağlantı dizesi sıfırladığımız için, güncelleştirilmiş bağlantı dizesi almak için az iot hub device-identity connection-string show komutunu kullanın:
az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
İleti gönderen bir simülasyon cihazı çalıştırmak için, indirdiğiniz koddaki iot-hub\Tutorials\ConnectivityTests klasörüne gidin.
Terminal penceresinde, aşağıdaki komutları çalıştırarak gerekli kitaplıkları yükleyin ve simülasyon cihazı uygulamasını çalıştırın:
npm install node SimulatedDevice-3.js "{your_device_connection_string}"
Hub'ınıza telemetri göndermeye çalışırken terminal penceresinde bilgiler gösterilir:
Gelen iletileri izle
Telemetri iletilerinin IoT hub'ınıza ulaştığını doğrulamak için portalda Ölçümler'i kullanabilirsiniz.
Azure portalında, Kaynak açılan listesinde IoT hub'ınızı seçin.
Gezinti menüsünün İzleme bölümünden Ölçümler'i seçin.
Ölçüm olarak gönderilen Telemetri iletileri'ni seçin ve zaman aralığını Geçmiş saat olarak ayarlayın. Grafikte simülasyon cihazı tarafından gönderilen iletilerin toplam sayısı gösterilmiştir:
Simülasyon cihazını başlattıktan sonra ölçümlerin kullanılabilir hale gelmesi birkaç dakika alır.
Bulut-cihaz bağlantısını denetleme
Bu bölümde bulut-cihaz bağlantısını denetlemek için bir test doğrudan yöntem çağrısını nasıl yapabileceğiniz gösterilmiştir. Hub’ınızdan gelen doğrudan yöntem çağrılarını dinlemek için, geliştirme makinenizde bir simülasyon cihazı cihaz çalıştırırsınız.
Terminal penceresinde, simülasyon cihazı uygulamasını çalıştırmak için aşağıdaki komutları kullanın:
node SimulatedDevice-3.js "{your_device_connection_string}"
Ayrı bir pencerede az iot hub invoke-device-method komutunu kullanarak cihazda doğrudan bir yöntem çağırın:
az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
Doğrudan yöntem çağrısı aldığında, simülasyon cihazı konsola bir ileti yazdırır:
Simülasyon cihazı doğrudan yöntem çağrısını başarıyla aldığında hub'a geri bir bildirim gönderir:
Çift eşitlemeyi denetleme
Cihazlar cihaz ve hub arasında durum eşitlemek için çiftler kullanın. Bu bölümde, bir cihaza istenen özellikleri göndermek ve cihaz tarafından gönderilen bildirilen özellikleri okumak için CLI komutları kullanırsınız.
Bu bölümde kullandığınız simülasyon cihazı her başladığında bildirilen özellikleri hub’a gönderir ve istenen özellikleri her aldığında konsola yazdırır.
Terminal penceresinde, simülasyon cihazı uygulamasını çalıştırmak için aşağıdaki komutları kullanın:
node SimulatedDevice-3.js "{your_device_connection_string}"
Hub'ın bildirilen özellikleri cihazdan aldığını doğrulamak için ayrı bir pencerede az iot hub device-twin show komutunu çalıştırın:
az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
Komut çıktısında, bildirilen özellikler bölümünde devicelaststarted özelliğini görebilirsiniz. Bu özellik, simülasyon cihazının son başlatıldığı tarih ve saati gösterir.
Hub'ın istenen özellik değerlerini cihaza gönderebildiğini doğrulamak için az iot hub device-twin update komutunu kullanın:
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
Simülasyon cihazı, hub’dan istenen özellik güncelleştirmesi aldığında bir ileti yazdırır:
Simülasyon cihazı, istenen özelliklerde yapılan değişiklikleri almanın yanı sıra her başladığında istenen özellikleri otomatik olarak denetler.
Kaynakları temizleme
Artık gerekli değilse portaldan IoT hub’ı ve kaynak grubunu silin. Bunu yapmak için IoT hub'ınızı içeren kaynak grubunu seçin ve Sil'i seçin.
Sonraki adımlar
Bu öğreticide, cihaz anahtarlarınızı denetlemeyi, cihaz bulut bağlantısını denetlemeyi, bulut-cihaz bağlantısını denetlemeyi ve cihaz çift eşitlemesini denetlemeyi öğrendiniz. IoT hub'ınızı izleme hakkında daha fazla bilgi için IoT Hub izlemeye yönelik nasıl yapılır makalesini inceleyin.