Öğretici: Azure CLI ve Azure portal kullanarak ileti IoT Hub yapılandırma

İleti yönlendirme , IoT cihazlarınızdaki telemetri verilerini, yerleşik Olay Hub 'ı ile uyumlu uç noktalara veya blob depolama, Service Bus kuyrukları, Service Bus konuları ve Event Hubs gibi özel uç noktalara göndermeye olanak sağlar. Özel ileti yönlendirmeyi yapılandırmak için, belirli bir koşulla eşleşen yolu özelleştirmek üzere yönlendirme sorguları oluşturursunuz. Ayarlandıktan sonra, gelen veriler IoT Hub'ı tarafından otomatik olarak uç noktalara yönlendirilir. Bir ileti tanımlanmış yönlendirme sorgularının hiçbiriyle eşleşmezse, varsayılan uç noktaya yönlendirilir.

Bu 2 parçalı öğreticide, IoT Hub ile bu özel yönlendirme sorgularını ayarlamayı ve kullanmayı öğreneceksiniz. Bir IoT cihazından gelen iletileri BLOB depolama ve Service Bus kuyruğu dahil olmak üzere birden çok uç noktasından birine yönlendirdiğinizde. Service Bus kuyruğuna iletiler bir mantıksal uygulama tarafından çekilir ve e-posta ile gönderilir. Özel ileti yönlendirmesi tanımlı olmayan iletiler varsayılan uç noktaya gönderilir, ardından Azure Stream Analytics tarafından çekilir ve bir Power BI görselleştirmesinde görüntülenir.

Bu öğreticinin 1. ve 2. kısmını tamamlamak için aşağıdaki görevleri gerçekleştirirsiniz:

Bölüm ı: kaynak oluşturma, ileti yönlendirmeyi ayarlama

  • Kaynakları oluşturma--bir IoT Hub, bir depolama hesabı, Service Bus kuyruğu ve sanal cihaz. Bu, Azure portal, bir Azure Resource Manager şablonu, Azure CLı veya Azure PowerShell kullanılarak yapılabilir.
  • Depolama hesabı ve Service Bus kuyruğu için IoT Hub uç noktaları ve ileti yollarını yapılandırın.

Bölüm II: hub 'a ileti gönderme, yönlendirilmiş sonuçları görüntüleme

  • Service Bus kuyruğuna ileti eklendiğinde tetiklenen ve e-posta gönderen bir Mantıksal Uygulama oluşturma.
  • Farklı yönlendirme seçenekleri için hub'a iletiler gönderen bir IoT Cihazının simülasyonu olan bir uygulama indirme ve çalıştırma.
  • Varsayılan uç noktaya gönderilen veriler için bir Power BI görselleştirmesi oluşturun.
  • Service Bus kuyruğunda ve e-postalarda ...
  • Depolama hesabında ...
  • PowerBI görselleştirmesinde ...
  • ...sonuçları görüntüleyin.

Önkoşullar

  • Bu öğreticinin 1. bölümü için:

    • Bir Azure aboneliğiniz olmalıdır. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Bu öğreticinin 2. bölümü için:

    • Bu öğreticinin 1. kısmını tamamlamış ve kaynakları hala kullanılabilir durumda olmalıdır.
    • Visual Studio 'yuyükler.
    • Varsayılan uç noktanın Stream Analytics 'i çözümlemek için bir Power BI hesabına erişiminiz vardır. (Power BI'ı ücretsiz deneyin.)
    • Bildirim e-postaları göndermek için bir iş veya okul hesabına sahip olmanız gerekir.
    • Güvenlik duvarınızdaki 8883 numaralı bağlantı noktasını açık olduğundan emin olun. Bu öğreticideki örnek, 8883 bağlantı noktası üzerinden iletişim kuran MQTT protokolünü kullanır. Bu bağlantı noktası, bazı kurumsal ve eğitim ağ ortamlarında engellenebilir. Bu sorunu geçici olarak çözmek için daha fazla bilgi ve IoT Hub bkz. bağlanma (MQTT).

Azure Cloud Shell kullanma

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell’i barındırır. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell’in önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell’i başlatmak için:

Seçenek Örnek/Bağlantı
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin. Deneyin seçeneği belirlendiğinde, kod otomatik olarak Cloud Shell’e kopyalanmaz. Azure Cloud Shell için Deneyin örneği
Cloud Shell’i tarayıcınızda açmak için https://shell.azure.com bölümüne gidin veya Cloud Shell’i Başlat düğmesini seçin. Cloud Shell’i yeni bir pencerede başlatma
Azure portalın sağ üst köşesindeki menü çubuğunda yer alan Cloud Shell düğmesini seçin. Azure portaldaki Cloud Shell düğmesi

Azure Cloud Shell’de bu makaledeki kodu çalıştırmak için:

  1. Cloud Shell’i başlatın.

  2. Kodu kopyalamak için kod bloğunda Kopyala düğmesini seçin.

  3. Windows ve Linux sisteminde Ctrl+Shift+V tuşlarını kullanarak veya macOS’de Cmd+Shift+V tuşlarını kullanarak kodu Cloud Shell oturumuna yapıştırın.

  4. Kodu çalıştırmak için Enter tuşuna basın.

Temel kaynaklar oluşturma

İleti yönlendirmeyi yapılandırmadan önce bir IoT Hub, bir depolama hesabı ve Service Bus kuyruğu oluşturmanız gerekir. Bu kaynaklar, Bu öğreticinin 1. bölümünde kullanılabilen dört makale kullanılarak oluşturulabilir: Azure portal, bir Azure Resource Manager şablonu, Azure CLı veya Azure PowerShell.

Tüm kaynaklar için aynı kaynak grubunu ve konumunu kullanın. Sonunda, kaynak grubunu silerek tüm kaynakları tek bir adımda kaldırabilirsiniz.

Aşağıdaki bölümlerde gerçekleştirilecek adımların özeti aşağıda verilmiştir:

  1. Bir kaynak grubuoluşturun.

  2. S1 katmanında IoT hub'ı oluşturun. IOT hub'ınızı bir tüketici grubu ekleyin. Tüketici grubu Azure Stream Analytics tarafından veriler alınırken kullanılır.

    Not

    Bu öğreticiyi tamamlayabilmeniz için ücretli bir katmanda IoT Hub 'ı kullanmanız gerekir. Ücretsiz katman yalnızca bir uç nokta ayarlamanıza izin verir ve bu öğretici birden fazla uç nokta gerektirir.

  3. Standard_LRS çoğaltmasıyla standart bir V1 depolama hesabı oluşturun.

  4. Service Bus ad alanı ve kuyruğu oluşturun.

  5. Hub'ınıza iletiler gönderen simülasyon cihazı için cihaz kimliği oluşturun. Test aşaması için anahtarı kaydedin. (Kaynak Yöneticisi şablonu oluşturuyorsanız, bu, şablonu dağıttıktan sonra yapılır.)

Temel kaynakları oluşturmak için Azure CLI kullanma

Bu öğreticide temel kaynakları oluşturmak için Azure CLI kullanılır, ardından ileti Azure portal yapılandırmayı ve sanal cihazı test için ayarlamayı göstermek üzere Azure portal'yi kullanır.

Aşağıdaki betiği kopyalayıp Cloud Shell Enter tuşuna basın. Betiği tek bir satırda çalıştırır. Bu, bu öğretici için depolama hesabı, IoT Hub, Service Bus Ad Alanı ve Service Bus oluşturacaktır.

Genel olarak benzersiz olması gereken birkaç kaynak adı vardır; örneğin, IoT Hub adı ve depolama hesabı adı. Bunu kolaylaştırmak için, bu kaynak adları randomValue adlı rastgele bir alfasayısal değerle eklenir. randomValue, betiğin üst kısmında bir kez oluşturulur ve betik boyunca gerektiğinde kaynak adlarına eklenir. Rastgele olması istemiyorsanız boş bir dizeye veya belirli bir değere ayarlayın.

İpucu

Hata ayıklama hakkında bir ipucu: Bu betik, betiği daha okunabilir hale etmek için devamlılık simgesini (ters \ eğik çizgi) kullanır. Betiği çalıştırmayla ilgili bir sorun Cloud Shell ve herhangi bir tireden sonra boşluklar olmadığını bash unutmayın.

# This retrieves the subscription id of the account 
#   in which you're logged in.
# This field is used to set up the routing queries.
subscriptionID=$(az account show --query id)

# Concatenate this number onto the resources that have to be globally unique.
# You can set this to "" or to a specific value if you don't want it to be random.
# This retrieves a random value.
randomValue=$RANDOM

# Set the values for the resource names that 
#   don't have to be globally unique.
location=westus
resourceGroup=ContosoResources
iotHubConsumerGroup=ContosoConsumers
containerName=contosoresults

# Create the resource group to be used
#   for all the resources for this tutorial.
az group create --name $resourceGroup \
    --location $location

# The IoT hub name must be globally unique, 
#   so add a random value to the end.
iotHubName=ContosoTestHub$randomValue 
echo "IoT hub name = " $iotHubName

# Create the IoT hub.
az iot hub create --name $iotHubName \
    --resource-group $resourceGroup \
    --sku S1 --location $location

# Add a consumer group to the IoT hub for the 'events' endpoint.
az iot hub consumer-group create --hub-name $iotHubName \
    --name $iotHubConsumerGroup

# The storage account name must be globally unique, 
#   so add a random value to the end.
storageAccountName=contosostorage$randomValue
echo "Storage account name = " $storageAccountName

# Create the storage account to be used as a routing destination.
az storage account create --name $storageAccountName \
    --resource-group $resourceGroup \
    --location $location \
    --sku Standard_LRS

# Get the primary storage account key. 
#    You need this to create the container.
storageAccountKey=$(az storage account keys list \
    --resource-group $resourceGroup \
    --account-name $storageAccountName \
    --query "[0].value" | tr -d '"') 

# See the value of the storage account key.
echo "storage account key = " $storageAccountKey

# Create the container in the storage account. 
az storage container create --name $containerName \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --public-access off

# The Service Bus namespace must be globally unique, 
#   so add a random value to the end.
sbNamespace=ContosoSBNamespace$randomValue
echo "Service Bus namespace = " $sbNamespace

# Create the Service Bus namespace.
az servicebus namespace create --resource-group $resourceGroup \
    --name $sbNamespace \
    --location $location

# The Service Bus queue name must be globally unique, 
#   so add a random value to the end.
sbQueueName=ContosoSBQueue$randomValue
echo "Service Bus queue name = " $sbQueueName

# Create the Service Bus queue to be used as a routing destination.
az servicebus queue create --name $sbQueueName \
    --namespace-name $sbNamespace \
    --resource-group $resourceGroup

Artık temel kaynaklar ayarnana göre, artık kaynak kümesinde ileti yönlendirmeyi Azure portal.

İleti yönlendirmeyi ayarlama

Simülasyon cihazı tarafından iletiye eklenen özellikler temelinde iletileri farklı kaynaklara yönlendireceksiniz. Özel yönlendirmesi olmayan iletiler varsayılan uç noktaya gönderilir (iletiler/olaylar). Sonraki öğreticide, IoT Hub iletileri gönderir ve bunların farklı hedeflere yönlendirildiğini görürsünüz.

Değer Sonuç
level="storage" Azure Depolama'ya yazın.
level="critical" Service Bus kuyruğuna yazın. Mantıksal Uygulama iletiyi kuyruktan alır ve Office 365 kullanarak iletiyi e-postayla gönderir.
default Power BI'ı kullanarak bu verileri görüntüleyin.

İlk adım, verilerin yönlendirileceği uç noktayı kurmak olacaktır. İkinci adım, bu uç noktayı kullanan ileti yolunu ayarlamaya yönelik olur. Yönlendirmeyi ayarladıktan sonra, portalda uç noktaları ve ileti yollarını görüntüleyebilirsiniz.

Depolama hesabına yönlendirme

Şimdi depolama hesabı için yönlendirmeyi ayarlayın. İleti Yönlendirme bölmesine gider ve bir yol eklersiniz. Yolu eklerken, yol için yeni bir uç nokta tanımlayın. Bu yönlendirme ayar sonrasında, level özelliğinin depolamaya ayarıldığı iletiler otomatik olarak bir depolama hesabına yazılır.

Not

Veriler, varsayılan ya da JSON olan Apache avro biçiminde blob depolamaya yazılabilir.

Kodlama biçimi yalnızca BLOB depolama uç noktasının yapılandırıldığı zamanda ayarlanabilir. Zaten ayarlanmış olan bir uç nokta için biçim değiştirilemez. JSON kodlaması kullanılırken, ' yi JSON olarak ve Contentenencoding ' i ileti sistemi özelliklerinde UTF-8 olarak ayarlamanız gerekir.

BLOB depolama uç noktası kullanma hakkında daha ayrıntılı bilgi için lütfen depolama alanına yönlendirmeye yönelik kılavuzabakın.

Şimdi Azure Depolama'a ileti yönlendirme yapılandırmasını Depolama.

  1. Kaynak Azure portal'ı ve ardından kaynak grubu'larınızı seçin. Bu öğreticide ContosoResources kullanılır.

  2. Kaynak listesinin altında IoT hub'ı seçin. Bu öğreticide ContosoTestHub kullanılır.

  3. Ortadaki sütunda Mesajlaşma 'nın yer alan İleti Yönlendirme'yi seçin. Yol Ekle bölmesini görmek için + Ekle seçeneğini* kullanın. Uç Nokta alanı'nın yanındaki + Uç nokta ekle'yi ve sonra da uç nokta Depolama. Depolama uç noktası ekle bölmesini görebilirsiniz.

    Yol için uç nokta eklemeye başlama

  4. Uç nokta için bir ad girin. Bu öğreticide ContosoStorageEndpoint 2.

    Uç noktayı adla

  5. Kapsayıcı seçin'i seçin. Bu sizi depolama hesaplarınızın listesine götürür. Hazırlık adımlarında ayaranı seçin; Bu öğretici contosostorage kullanır. Söz konusu depolama hesabının içindeki kapsayıcıların listesi gösterilir. Hazırlık adımlarında ayar istediğiniz kapsayıcıyı seçin. Bu öğreticide contosoresults kullanılır. Ardından ekranın alt kısmından Seç'e tıklayın. Farklı bir Depolama uç noktası ekle bölmesine döner. Seçili kapsayıcının URL'sini görüyorsunuz.

  6. Kodlamayı AVRO veya JSON olarak ayarlayın. Bu öğretici için kalan alanlarda varsayılan değerleri kullanın. Seçilen bölge JSON kodlamasını desteklemezse bu alan gri olur. Dosya adı biçimini ayarlayın.

    Not

    Blob dosya adı biçimini kullanarak blob adının biçimini ayarlayın. Varsayılan değer: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. Biçim {iothub}, {partition}, {YYYY}, {MM}, {DD}, {HH} ve {mm} öğelerini içermelidir, sıralama farklı olabilir.

    Örneğin varsayılan blob dosya adı biçimini kullandığınızda hub adı ContosoTestHub ve tarih/saat 30 Ekim 2018 10:56 ise blob adı şu şekilde olacaktır: ContosoTestHub/0/2018/10/30/10/56.

    Bloblar varsayılan olarak AVRO biçiminde yazılır.

  7. Depolama noktasını oluşturmak ve yönlendirmeye eklemek için sayfanın alt kısmında Oluştur'a tıklayın. Yol Ekle bölmesine geri döndürülürsiniz.

  8. Yönlendirme sorgusunun geri kalanını tamamlar. Bu sorgu, az önce uç nokta olarak eklediğiniz depolama kapsayıcısına ileti gönderme ölçütlerini belirtir. Ekrandaki alanları doldurun.

  9. Kalan alanları doldurun.

    • Ad: Yolunuz için bir ad girin. Bu öğretici contosoStorageRoute kullanır. Ardından depolama uç noktasını belirtin. Bu öğreticide ContosoStorageEndpoint 2.

    • Veri kaynağı belirtin: Açılan listeden Cihaz Telemetri İletileri'ne tıklayın.

    • Yolu etkinleştir'i seçin: Bu alanın olarak ayarlanmış olduğundan emin enabled olun.

    • Yönlendirme sorgusu: Sorgu dizesi olarak level="storage" girin.

    Yönlendirme sorgusu bilgilerini kaydetme

  10. Kaydet’i seçin. İşlem bittiğinde İleti Yönlendirme bölmesine döner ve burada depolama için yeni yönlendirme sorgunuzu görebilirsiniz. sizi Kaynak grubu sayfasına döndüren İleti Yönlendirme bölmesini kapatın.

Bir Service Bus yönlendirme

Şimdi Service Bus kuyruğu için yönlendirmeyi ayarlayın. İleti Yönlendirme bölmesine gider ve bir yol eklersiniz. Yolu eklerken, yol için Service Bus Uç Nokta olarak bir Kuyruk tanımlayın. Bu yol ayardikten sonra level özelliğinin kritik olarak ayarıldığı iletiler Service Bus kuyruğuna yazılır. Bu kuyruğa bir Mantıksal Uygulama tetiklenir ve bu da bilgilerle birlikte bir e-posta gönderir.

  1. Kaynak grubu sayfasında IoT hub'ını ve ardından İleti Yönlendirme'yi seçin.

  2. İleti Yönlendirme bölmesinde + Ekle'yi seçin.

  3. Yol Ekle bölmesinde + Yakın +uç nokta ekle'yi seçin. Service Bus Kuyruğu'nu seçin. Service Bus Uç Noktası Ekle bölmesini görürsünüz.

    1. hizmet veri veri noktası ekleme

  4. Kalan alanları doldurun:

    Uç Nokta Adı: Uç nokta için bir ad girin. Bu öğreticide ContosoSBQEndpoint 2.

    Service Bus Alanı: Hazırlık adımlarında ayar istediğiniz service bus ad alanını seçmek için açılan listeyi kullanın. Bu öğreticide ContosoSBNamespace kullanılır.

    Service Bus kuyruğu: Açılan listeyi kullanarak kuyrukta Service Bus seçin. Bu öğreticide contososbqueue kullanılır.

  5. Oluştur'a seçerek kuyruk uç Service Bus ekleyin. Yol ekle bölmesine dönersiniz.

    2. service bus uç noktası ekleme

  6. Şimdi yönlendirme sorgusu bilgilerinin kalan kısmını tamamlayın. Bu sorgu, az önce uç nokta olarak ekley Service Bus kuyruğa ileti gönderme ölçütlerini belirtir. Ekrandaki alanları doldurun.

    Ad: Yolunuz için bir ad girin. Bu öğreticide ContosoSBQueueRoute kullanır.

    Uç nokta: Az önce ayarladığınız uç noktayı gösterir.

    Veri kaynağı: Açılan listeden Cihaz Telemetri İletileri'ni seçin.

    Yolu etkinleştir: Bu alanı olarak enable ayarlayın."

    Yönlendirme sorgusu: Yönlendirme level="critical" sorgusu olarak girin.

    Service Bus kuyruğu için yönlendirme sorgusu oluşturma

  7. Kaydet’i seçin. Yollar bölmesine döndüğünde, her iki yeni rotalarınızı görürsünüz.

    Az önce ayarladığınız rotalar

  8. Özel uç noktalar sekmesini seçerek ayarladığınız özel uç noktaları görebilirsiniz.

    Az önce ayarladığınız özel uç noktalar

  9. İleti yönlendirme bölmesini kapatın; Kaynak grubu bölmesine dönersiniz.

Sanal cihaz oluşturma

Sonra bir cihaz kimliği oluşturun ve anahtarını daha sonra kullanmak üzere kaydedin. Bu cihaz kimliği simülasyon uygulaması tarafından IoT hub'ına iletileri göndermek için kullanılır. Bu özellik PowerShell'de veya bir şablon Azure Resource Manager kullanılamaz. Aşağıdaki adımlar, sanal cihazı Azure portal kullanarak oluşturma hakkında bilgi Azure portal.

  1. Azure portalını açın ve Azure hesabınızla oturum açın.

  2. Kaynak grupları'ı ve ardından kaynak grubu'larınızı seçin. Bu öğreticide ContosoResources kullanılır.

  3. Kaynak listesinde IoT hub'ını seçin. Bu öğreticide ContosoTestHub kullanılır. Hub bölmesinden IoT Cihazları'nı seçin.

  4. IoT Cihazları bölmesinde +Cihaz Ekle'yi seçin. Cihaz Ekle bölmesinde cihaz kimliğini girin. Bu öğreticide Contoso-Test-Device kullanılır. Anahtarları boş bırakın ve Anahtarları Otomatik Olarak Oluştur'a tıklayın. Cihazı IoT Hub'ına bağla seçeneğinin etkinleştirildiğinden emin olun. Kaydet’i seçin.

    Cihaz ekleme ekranı

  5. Artık oluşturulduktan sonra, oluşturulan anahtarları görmek için cihazı seçin. Birincil anahtarda Kopyala simgesini seçin ve bu öğreticinin test aşaması Not Defteri gibi bir yere kaydedin.

    Anahtarlar da dahil olmak üzere cihaz ayrıntıları

Sonraki adımlar

Kaynakları ayarlamış olduğunuza ve ileti rotalarına sahip olduğunuza göre, IoT Hub 'ına ileti gönderme ve farklı hedeflere yönlendirilme hakkında bilgi edinmek için sonraki öğreticiye ilerleyin.