Share via


Cihaz ikizlerini kullanmaya başlama (Azure CLI)

Cihaz ikizleri; meta veriler, yapılandırmalar ve koşullar gibi cihaz durumu bilgilerini depolayan JSON belgelerdir. IoT Hub, ona bağlanan her cihaz için bir cihaz ikizi kalıcı hale getirmekte.

Not

Bu makalede açıklanan özellikler yalnızca IoT Hub'ın standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. Çözümünüz için doğru IoT Hub katmanını seçme.

Cihaz ikizlerini kullanarak:

  • Çözüm arka ucunuzdan cihaz meta verilerini depolayın.

  • Kullanılabilir özellikler ve koşullar gibi geçerli durum bilgilerini (örneğin, kullanılan bağlantı yöntemi) cihaz uygulamanızdan bildirin.

  • Cihaz uygulaması ve arka uç uygulaması arasında üretici yazılımı ve yapılandırma güncelleştirmeleri gibi uzun süre çalışan iş akışlarının durumunu eşitleyin.

  • Cihaz meta verilerinizi, yapılandırmanızı veya durumunuzu sorgular.

Cihaz ikizleri eşitleme ve cihaz yapılandırmalarını ve koşullarını sorgulamak için tasarlanmıştır. Cihaz ikizlerinin ne zaman kullanılacağı da dahil olmak üzere cihaz ikizleri hakkında daha fazla bilgi için bkz . Cihaz ikizlerini anlama.

IoT hub'ları, aşağıdaki öğeleri içeren cihaz ikizlerini depolar:

  • Etiketler' e tıklayın. Cihaz meta verilerine yalnızca çözüm arka ucu tarafından erişilebilir.

  • İstenen özellikler. Çözüm arka ucu tarafından değiştirilebilir ve cihaz uygulaması tarafından gözlemlenebilir JSON nesneleri.

  • Bildirilen özellikler. Cihaz uygulaması tarafından değiştirilebilir ve çözüm arka ucu tarafından okunabilir JSON nesneleri.

Etiketler ve özellikler dizi içeremez, ancak iç içe nesneler içerebilir.

Aşağıdaki çizimde cihaz ikizi kuruluşu gösterilmektedir:

Cihaz ikizi kavram diyagramının ekran görüntüsü.

Ayrıca, çözüm arka ucu yukarıdaki tüm verilere göre cihaz ikizlerini sorgulayabilir. Cihaz ikizleri hakkında daha fazla bilgi için bkz . Cihaz ikizlerini anlama. Sorgulama hakkında daha fazla bilgi için bkz . IoT Hub sorgu dili.

Bu makalede aşağıdaki işlemler hakkında bilgi edinirsiniz:

  • Bağlantı kanalını cihaz ikizinde bildirilen bir özellik olarak raporlamak için sanal bir cihaz kullanın.

  • Daha önce oluşturulan etiketlerdeki ve özelliklerdeki filtreleri kullanarak cihazları sorgula.

Cihaz ikizi bildirilen özelliklerini kullanma hakkında daha fazla bilgi için bkz . Cihazdan buluta iletişim kılavuzu.

Bu makalede iki Azure CLI oturumu oluşturma adımları gösterilmektedir:

  • Simülasyon cihazı oluşturan bir oturum. Simülasyon cihazı, bağlantı kanalını başlatıldığında cihazın ilgili cihaz ikizinde bildirilen bir özellik olarak bildirir.

  • Simülasyon cihazının cihaz ikizinin etiketlerini güncelleştiren ve ardından IoT hub'ınızdaki cihazları sorgulayan bir oturum. Sorgular, her iki oturumda da daha önce güncelleştirilen etiketlere ve özelliklere göre filtreler kullanır.

Önkoşullar

  • Azure CLI. Bu makaledeki komutları, tarayıcınızda veya Windows Terminali gibi bir uygulamada çalışan etkileşimli bir CLI kabuğu olan Azure Cloud Shell'i kullanarak da çalıştırabilirsiniz. Cloud Shell kullanıyorsanız herhangi bir şey yüklemeniz gerekmez. CLI'yi yerel olarak kullanmayı tercih ediyorsanız, bu makalede Azure CLI sürüm 2.36 veya üzeri gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Azure CLI'yı yerel olarak yüklemek veya yükseltmek için bkz . Azure CLI'yi yükleme.

  • Bir IoT hub'ı. CLI veya Azure portalı ile bir tane oluşturun.

  • Güvenlik duvarınızda 8883 numaralı bağlantı noktasının açık olduğundan emin olun. Bu makaledeki örneklerde 8883 numaralı bağlantı noktası üzerinden iletişim kuran MQTT protokolü kullanılı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.

Cloud Shell'i hazırlama

Azure Cloud Shell'i kullanmak istiyorsanız önce başlatmanız ve yapılandırmanız gerekir. CLI'yi yerel olarak kullanıyorsanız, İki CLI oturumu hazırlama bölümüne atlayın.

  1. Azure portalındaki sayfa üst bilgisinden Cloud Shell simgesini seçin.

    Azure portalının sayfa üst bilgisindeki cloud shell simgesini vurgulayan genel denetimlerin ekran görüntüsü.

    Not

    Cloud Shell'i ilk kez kullanıyorsanız, Cloud Shell'i kullanmak için gereken depolama alanını oluşturmanızı ister. Depolama hesabı ve Microsoft Azure Dosyaları paylaşımı oluşturmak için bir abonelik seçin.

  2. Tercih ettiğiniz CLI ortamını seçmek için Cloud Shell araç çubuğundaki ortam seçiciyi kullanın. Bu makalede Bash ortamı kullanılır. PowerShell ortamını da kullanabilirsiniz.

    Not

    Bazı komutlar Bash ve PowerShell ortamlarında farklı söz dizimi veya biçimlendirme gerektirir. Daha fazla bilgi için bkz. Azure CLI'yi başarıyla kullanmak için İpuçları.

    Araç çubuğundaki ortam seçiciyi vurgulayan Bir Azure Cloud Shell penceresinin ekran görüntüsü.

İki CLI oturumu hazırlama

Ardından iki Azure CLI oturumu hazırlamanız gerekir. Cloud Shell kullanıyorsanız, bu oturumları ayrı Cloud Shell sekmelerinde çalıştırırsınız. Yerel CLI istemcisi kullanıyorsanız, ayrı CLI örnekleri çalıştırırsınız. Aşağıdaki görevler için ayrı CLI oturumlarını kullanın:

  • İlk oturum, IoT hub'ınız ile iletişim kuran bir IoT cihazının simülasyonunu oluşturur.
  • İkinci oturum simülasyon cihazınızı güncelleştirir ve IoT hub'ınızı sorgular.
  1. Cloud Shell kullanıyorsanız sonraki adıma geçin. Aksi takdirde, Azure hesabınızda oturum açmak için ilk CLI oturumunda az login komutunu çalıştırın.

    Cloud Shell kullanıyorsanız Azure hesabınızda otomatik olarak oturum açmış olursunuz. Azure CLI oturumunuz ile IoT hub'ınız arasındaki tüm iletişimlerin kimliği doğrulanır ve şifrelenir. Sonuç olarak, bu makalenin bağlantı dizesi gibi gerçek bir cihazla kullanacağınız fazladan kimlik doğrulamasına ihtiyacı yoktur. Azure CLI ile oturum açma hakkında daha fazla bilgi için bkz . Azure CLI ile oturum açma.

    az login
    
  2. İlk CLI oturumunda az extension add komutunu çalıştırın. Komutu, AZURE CLI için Microsoft Azure IoT Uzantısı'nı CLI kabuğunuza ekler. Uzantı, Azure CLI'ya IoT Hub, IoT Edge ve IoT Cihaz Sağlama Hizmeti'ne (DPS) özgü komutlar ekler. Uzantıyı yükledikten sonra, herhangi bir Cloud Shell oturumunda yeniden yüklemeniz gerekmez.

    az extension add --name azure-iot
    

    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.

  3. İkinci CLI oturumunu açın. Cloud Shell'i tarayıcıda kullanıyorsanız, ilk CLI oturumunuzun araç çubuğundaki Yeni oturum aç simgesini seçin. CLI'yi yerel olarak kullanıyorsanız ikinci bir CLI örneği açın.

    Araç çubuğundaki Yeni Oturumu Aç simgesinin vurgulandığı Azure Cloud Shell penceresinin ekran görüntüsü.

Cihaz oluşturma ve simülasyonu

Bu bölümde, ilk CLI oturumunda IoT hub'ınız için bir cihaz kimliği oluşturacak ve ardından bu cihaz kimliğini kullanarak bir cihazın simülasyonunu oluşturacaksınız. Simülasyon cihazı, ikinci CLI oturumunda zamanladığınız işlere yanıt verir.

Simülasyon cihazı oluşturmak ve başlatmak için:

  1. İlk CLI oturumunda, aşağıdaki yer tutucuları karşılık gelen değerleriyle değiştirerek az iot hub device-identity create komutunu çalıştırın. Bu komut, simülasyon cihazınız için cihaz kimliğini oluşturur.

    {DeviceName}. Simülasyon cihazınızın adı.

    {HubName}. IoT hub'ınızın adı.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. İlk CLI oturumunda az iot device simulate komutunu çalıştırarak aşağıdaki yer tutucuları karşılık gelen değerleriyle değiştirin. Bu komut, önceki adımda oluşturduğunuz cihazın benzetimini gerçekleştirir. Komut ayrıca simülasyon cihazını, başlatıldığında cihazın ilgili cihaz ikizinde bağlantı kanalını bildirilen bir özellik olarak bildirecek şekilde yapılandırmaktadır.

    {DeviceName}. Simülasyon cihazınızın adı.

    {HubName}. IoT hub'ınızın adı.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --init-reported-properties '{"connectivity":{"type": "cellular"}}'
    

    İpucu

    Varsayılan olarak az iot device simulate komutu, iletiler arasında 3 saniyelik bir aralıkla 100 cihazdan buluta ileti gönderir. Simülasyon, tüm iletiler gönderildikten sonra sona erer. Benzetimi daha uzun süre çalıştırmak istiyorsanız, daha fazla ileti belirtmek için parametresini --msg-count veya --msg-interval iletiler arasında daha uzun bir aralık belirtmek için parametresini kullanabilirsiniz. Simülasyon cihazını yeniden başlatmak için komutunu yeniden de çalıştırabilirsiniz.

Cihaz ikizini güncelleştirme

Cihaz kimliği oluşturulduktan sonra IoT Hub'da örtülü olarak bir cihaz ikizi oluşturulur. Bu bölümde, önceki bölümde oluşturduğunuz cihaz kimliğiyle ilişkili cihaz ikizi üzerindeki bir etiket kümesini güncelleştirmek için ikinci CLI oturumunu kullanacaksınız. IoT çözümlerinizdeki cihazları düzenlemek ve yönetmek için cihaz ikizi etiketlerini kullanabilirsiniz. Cihazları etiketleri kullanarak yönetme hakkında daha fazla bilgi için bkz . Azure IoT Hub'da cihaz ikizi etiketlerini kullanarak cihazları yönetme.

  1. İlk CLI oturumunda simülasyon cihazının çalıştığını onaylayın. Aksi takdirde, cihaz oluştur ve benzetimini gerçekleştir'den az iot device simulate komutunu yeniden çalıştırarak yeniden başlatın.

  2. İkinci CLI oturumunda, aşağıdaki yer tutucuları karşılık gelen değerleriyle değiştirerek az iot hub device-twin update komutunu çalıştırın. Bu örnekte, önceki bölümde oluşturduğumuz cihaz kimliği için cihaz ikizinde birden çok etiketi güncelleştiriyoruz.

    {DeviceName}. Cihazınızın adı.

    {HubName}. IoT hub'ınızın adı.

    az iot hub device-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --tags '{"location":{"region":"US","plant":"Redmond43"}}'
    
  3. İkinci CLI oturumunda JSON yanıtının güncelleştirme işleminin sonuçlarını gösterdiğini onaylayın. Aşağıdaki JSON yanıt örneğinde, CLI komutundaki {DeviceName}az iot hub device-twin update yer tutucu için kullandıkSampleDevice.

    {
      "authenticationType": "sas",
      "capabilities": {
        "iotEdge": false
      },
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Connected",
      "deviceEtag": "MTA2NTU1MDM2Mw==",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": null,
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:10.5062402Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
            "connectivity": {
              "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
              "type": {
                "$lastUpdated": "2023-02-21T10:40:43.8539917Z"
              }
            }
          },
          "$version": 2,
          "connectivity": {
            "type": "cellular"
          }
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": {
        "location": {
          "plant": "Redmond43",
          "region": "US"
        }
      },
      "version": 4,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Cihaz ikizleri için IoT hub'ınızı sorgulama

IoT Hub, IoT hub'ınız için cihaz ikizlerini cihazlar adlı bir belge koleksiyonu olarak kullanıma sunar. Bu bölümde, IoT hub'ınız için cihaz ikizleri kümesinde iki sorgu yürütmek için ikinci CLI oturumunu kullanacaksınız: ilk sorgu yalnızca Redmond43 tesisinde bulunan cihazların cihaz ikizlerini seçer ve ikincisi sorguyu yalnızca hücresel ağ üzerinden bağlı olan cihazları seçmek için iyileştirmektedir. Her iki sorgu da sonuç kümesindeki yalnızca ilk 100 cihazı döndürür. Cihaz ikizi sorguları hakkında daha fazla bilgi için bkz . IoT Hub cihazı ve modül ikizleri için sorgular.

  1. İlk CLI oturumunda simülasyon cihazının çalıştığını onaylayın. Aksi takdirde, cihaz oluştur ve benzetimini gerçekleştir'den az iot device simulate komutunu yeniden çalıştırarak yeniden başlatın.

  2. İkinci CLI oturumunda az iot hub query komutunu çalıştırarak aşağıdaki yer tutucuları karşılık gelen değerleriyle değiştirin. Bu örnekte sorguyu yalnızca Redmond43 tesisinde bulunan cihazların cihaz ikizlerini döndürecek şekilde filtreleyeceğiz.

    {HubName}. IoT hub'ınızın adı.

    az iot hub query --hub-name {HubName} \
                     --query-command "SELECT * FROM devices WHERE tags.location.plant = 'Redmond43'" \
                     --top 100
    
  3. İkinci CLI oturumunda JSON yanıtının sorgunun sonuçlarını gösterdiğini onaylayın.

    {
      "authenticationType": "sas",
      "capabilities": {
        "iotEdge": false
      },
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Connected",
      "deviceEtag": "MTA2NTU1MDM2Mw==",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": null,
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:10.5062402Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
            "connectivity": {
              "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
              "type": {
                "$lastUpdated": "2023-02-21T10:40:43.8539917Z"
              }
            }
          },
          "$version": 2,
          "connectivity": {
            "type": "cellular"
          }
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": {
        "location": {
          "plant": "Redmond43",
          "region": "US"
        }
      },
      "version": 4,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    
  4. İkinci CLI oturumunda az iot hub query komutunu çalıştırarak aşağıdaki yer tutucuları karşılık gelen değerleriyle değiştirin. Bu örnekte sorguyu filtreleyerek yalnızca Redmond43 tesisinde bulunan ve aynı zamanda hücresel ağ üzerinden bağlanan cihazların cihaz ikizlerini döndüreceğiz.

    {HubName}. IoT hub'ınızın adı.

    az iot hub query --hub-name {HubName} \
                     --query-command "SELECT * FROM devices WHERE tags.location.plant = 'Redmond43' \
                                      AND properties.reported.connectivity.type = 'cellular'" \
                     --top 100
    
  5. İkinci CLI oturumunda JSON yanıtının sorgunun sonuçlarını gösterdiğini onaylayın. Bu sorgunun sonuçları, bu bölümdeki önceki sorgunun sonuçlarıyla eşleşmelidir.

Bu makalede şunları yapacaksınız:

  • Azure CLI oturumundan etiket olarak cihaz meta verileri eklendi
  • Cihaz ikizinde cihaz bağlantı bilgilerini bildiren bir cihazın simülasyonunu yapma
  • Azure CLI oturumunda SQL benzeri IoT Hub sorgu dilini kullanarak cihaz ikizi bilgilerini sorgulama

Sonraki adımlar

Şunlar hakkında bilgi edinmek için: