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

    Not

    Bu makalede Azure IoT uzantısının adlı azure-ioten yeni sürümü kullanılır. Eski sürüm olarak adlandırılır azure-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 komutunu az 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ğlan.

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:

  1. 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.
  2. 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
    
  3. 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
    
  4. 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:

  1. 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}
    
  2. 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>
    
  3. 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.

  1. Geliştirme makinenizdeki bir terminal penceresinde, indirdiğiniz örnek Node.js projesinin kök klasörüne gidin. Ardından iot-hub\Tutorials\Bağlan ivityTests klasörüne gidin.

  2. 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:

    Screenshot that shows the simulated device connecting.

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

  1. 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}
    
  2. 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:

    Screenshot that shows the connection failing after the key reset.

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.

  1. CLI kullanarak bilinen iyi bir SAS belirteci oluşturmak için az iot hub genereate-sas-token komutunu çalıştırın:

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. 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

  3. Geliştirme makinenizdeki terminal penceresinde, indirdiğiniz örnek Node.js projesinin kök klasörüne gidin. Ardından iot-hub\Tutorials\Bağlan ivityTests klasörüne gidin.

  4. 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:

    Screenshot that shows a successful connection using a SAS token.

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

Screenshot that shows a connection error when the outbound port is blocked.

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

  1. Ö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}
    
  2. İleti gönderen bir simülasyon cihazı çalıştırmak için indirdiğiniz kodda iot-hub\Tutorials\Bağlan ivityTests klasörüne gidin.

  3. 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:

    Screenshot that shows the simulated device sending messages.

Gelen iletileri izle

Telemetri iletilerinin IoT hub'ınıza ulaştığını doğrulamak için portalda Ölçümler'i kullanabilirsiniz.

  1. Azure portalında, Kaynak açılan listesinde IoT hub'ınızı seçin.

  2. Gezinti menüsünün İzleme bölümünden Ölçümler'i seçin.

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

    Screenshot showing left pane metrics.

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.

  1. 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}"
    
  2. 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:

    Screenshot that shows the device confirming that the direct method was received.

    Simülasyon cihazı doğrudan yöntem çağrısını başarıyla aldığında hub'a geri bir bildirim gönderir:

    Screenshot showing that the device returns a direct method acknowledgment.

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

  1. 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}"
    
  2. 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.

    Screenshot showing the reported properties of a device.

  3. 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:

    Screenshot that shows the device confirming that the desired properties update was received.

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.