Azure Cosmos DB'yi kullanarak Azure IoT Hub cihaz bağlantısı olaylarını sıralama

Azure Event Grid, olay tabanlı uygulamalar oluşturmanıza ve IoT olaylarını iş çözümlerinizle kolayca tümleştirmenize yardımcı olur. Bu makalede, bir cihazın bağlantı ve bağlantı kesme olaylarını toplamak ve depolamak için Cosmos DB, Logic App, IoT Hub Olayları ve sanal Raspberry Pi kullanarak bir kurulumda size yol gösterilir.

Cihazınız çalıştığı andan itibaren bir işlem sırası etkinleştirilir:

  1. IoT hub cihaz anahtarınızı kullanan Pi cihazı başlatılır ve durdurulur

  2. IoT Hub olayı cihaz etkinliğini yakalar ve ardından Mantıksal Uygulamanıza bir HTTP isteği gönderir

  3. Mantıksal Uygulama, HTTP isteğini ayarladığınız bir koşula göre işler

  4. Mantıksal Uygulama, Cosmos DB'de bağlantı veya bağlantı kesme olaylarını yeni bir belgede günlüğe kaydeder

    Bu makale için oluşturacağımız kurulumun ekran görüntüsü. Bu kurulum, tüm hizmetlerin ve cihazların nasıl bağlı olduğunu gösterir.

Önkoşullar

Mantıksal uygulama oluşturma

Şimdi bir mantıksal uygulama oluşturalım ve sanal makinenizin kaynak grubunu izleyen bir Event Grid tetikleyicisi ekleyelim.

Mantıksal uygulama kaynağı oluşturma

  1. Azure portal+Kaynak oluştur'u, Tümleştirme'yi ve ardından Mantıksal Uygulama'yı seçin.

    Azure portal bir mantıksal uygulamayı bulma ve seçme işleminin ekran görüntüsü.

  2. Aşağıdakileri içeren yeni bir Mantıksal Uygulama oluşturmak için formu doldurun:

    • Aboneliğiniz

    • Kaynak grubunuz (veya yeni bir grup oluşturun)

    • Aboneliğinizde benzersiz bir Mantıksal Uygulama adı

    • IoT hub'ınızın bölgesi

    • Log Analytics'i etkinleştirmek için Hayır

    • Tüketim plan türü

      Not

      Tüketim planı türü, kullanıcı arabiriminde Mantıksal uygulama tasarımcısını etkinleştiren seçenektir. Standart (varsayılan) seçeneğini belirlerseniz Mantıksal uygulama tasarımcısının kullanılabilir duruma gelmesi için yeni bir iş akışı oluşturmanız gerekir.

    Azure portal mantıksal uygulama oluşturma işleminin ekran görüntüsü.

  3. Yapılandırmanızı gözden geçirmek için Gözden Geçir + Oluştur'u ve mantıksal uygulamayı oluşturmak için Oluştur'u seçin.

  4. Mantıksal uygulamanız için bir Azure kaynağı oluşturdunuz. Azure mantıksal uygulamanızı dağıtdıktan sonra Kaynağa git'i seçin. Mantıksal uygulama tasarımcısı , daha hızlı başlayabilmeniz için yaygın desenler için şablonlar gösterir.

  5. Mantıksal uygulama tasarımcısındaŞablonlar bölümünü görene kadar kaydırın, ardından mantıksal uygulamanızı sıfırdan oluşturabilmek için Boş Mantıksal Uygulama'yı seçin.

Tetikleyici seçme

Tetikleyici, mantıksal uygulamanızı başlatan belirli bir olaydır. Bu öğreticide, iş akışını başlatan tetikleyici HTTP üzerinden bir istek alır.

  1. Bağlayıcılar ve tetikleyiciler arama çubuğuna HTTP yazın ve Enter tuşuna basın.

  2. Tetikleyici olarak bir HTTP isteği alındığında isteğini seçin.

    Belirli HTTP isteği tetikleyicisini bulma ekran görüntüsü.

  3. Şema oluşturmak için örnek yük kullanma öğesini seçin.

    Şema oluşturmak için örnek yükün nasıl kullanılacağını gösteren ekran görüntüsü.

  4. Aşağıdaki örnek JSON kodunu metin kutusuna yapıştırın ve bitti'yi seçin.

    Bu JSON yalnızca şablon olarak kullanıldığından tam değerler önemli değildir.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Azure'da metin kutusuna yapıştırılan örnek JSON yükünün ekran görüntüsü.

Koşul oluşturma

Koşullar, belirli bir koşulu geçtikten sonra belirli eylemlerin çalıştırılmasına yardımcı olur. Bu makalede koşul, eventType'ın cihaza bağlı mı yoksa cihazın bağlantısı kesilmiş mi olduğunu denetlemektir. Bu eventType true olduğunda yürütülen eylem, Azure Cosmos DB'de bir belgenin oluşturulmasıdır. Bu koşul Mantıksal uygulama tasarımcısında oluşturulur.

  1. + Yeni adım'ı ve ardından Yerleşik sekmesini seçin, ardından Koşul adlı denetimi bulup seçin.

  2. Sizin durumunuzda, bağlantı olaylarını veya bağlantı kesme olaylarını tek bir ayrıştırma içinde yakalamak istediğimizden Ve olarak veya olarak değiştirin.

  3. Değer seçin kutusunun içini seçtiğinizde Dinamik içerik (seçilebilen alanlar) öğesini gösteren bir açılır pencere görüntülenir.

    • eventType'ı seçin. Açılan pencere kapatılır ve Gövde'ninÖnceki adımlardan bir çıkış seçin bölümüne otomatik olarak yerleştirildiği gösterilir. Koşullu deyiminizi yeniden açmak için Koşul'u seçin.

    • değerini değere eşit olarak tutun.

    • Bu satırın son değeri olarak Microsoft.Devices.DeviceConnected yazın.

    • Başka bir satır eklemek için + Ekle'yi seçin.

    • Bağlantıyı kesme olaylarını aramamız dışında, bu ikinci satır ilk satıra benzer.

      Satır değerleri için eventType, eşittir ve Microsoft.Devices.DeviceDisconnected kullanın.

      Her koşul için tam ekran görüntüsü.

  4. True ise iletişim kutusunda Eylem ekle'ye tıklayın.

    Azure'da 'True ise' kutusunun ekran görüntüsü.

  5. Cosmos DB'yi arayın ve Azure Cosmos DB — Belge oluşturma veya güncelleştirme (V3) seçeneğini belirleyin

    Azure Cosmos DB aramasının ekran görüntüsü.

  6. Belge oluştur veya güncelleştir (V3) panelini görürsünüz. Alanlar için şu değerleri girin:

    Azure Cosmos DB hesap adı: {Hesap adınızı ekleyin}

    Veritabanı Kimliği: ToDoList

    Koleksiyon Kimliği: Öğeler

    Belge: Dinamik içerik parametresi listesinden seçim yapın Current item

    'Yeni parametre ekle' seçeneğinin seçili olduğu Saklı yordamı yürüt (V3) öğesini gösteren ekran görüntüsü.

  7. Mantıksal uygulamanızı kaydedin.

HTTP URL'sini kopyalama

Logic Apps Tasarım Aracı ayrılmadan önce mantıksal uygulamanızın bir tetikleyici için dinlediği URL'yi kopyalayın. Bu URL'yi, Event Grid'i yapılandırmak için kullanırsınız.

  1. HTTP isteği alındığında tetikleyici yapılandırma kutusunu seçerek genişletin.

  2. Yanındaki kopyala düğmesini seçerek HTTP POST URL değerini kopyalayın.

    Kopyalanacak HTTP URL'sinin nerede bulunacağı ekran görüntüsü.

  3. Sonraki bölümde kullanabilmek için bu URL'yi kaydedin.

IoT Hub olayları için aboneliği yapılandırma

Bu bölümde, IoT Hub'ınızı gerçekleşen olayları yayımlamak için yapılandıracaksınız.

  1. Azure portalında IoT Hub'ınıza gidin.

  2. Olaylar'ı seçin.

    IoT Hub menüsünde Olaylar düğmesinin bulunduğu yerin ekran görüntüsü.

  3. + Olay aboneliği'ne tıklayın.

    Yeni olay aboneliği oluşturma

  4. Olay Aboneliği Ayrıntılarını Doldurun: Açıklayıcı bir Ad sağlayın ve Olay Şeması olarak Event Grid Şeması'nı seçin.

  5. IoT hub kaynağınız için bir Sistem Konusu Adı oluşturun.

  6. Olay Türleri alanlarını doldurun. Açılan listede, menüden yalnızca Cihaz Bağlı ve Cihaz Bağlantısı Kesildi'yi seçin. Listeyi kapatmak ve seçimlerinizi kaydetmek için ekranda başka bir yere tıklayın.

    Aranacak olay türlerini ayarlama

  7. Uç Nokta Ayrıntıları için Uç Nokta Türü'nü Web Kancası olarak seçin ve uç noktayı seç'e tıklayın ve mantıksal uygulamanızdan kopyaladığınız URL'yi yapıştırın ve seçimi onaylayın.

    Uç nokta URL'lerini seçin

  8. Form şimdi aşağıdaki örneğe benzer görünmelidir:

    Olay aboneliği oluşturma formunun ekran görüntüsü.

    Olay aboneliğini kaydetmek için Oluştur’u seçin.

    Önemli

    Cihazınızı çalıştırmadan önce etkinliğinizin işlemesi için birkaç dakika bekleyin. Azure hizmetleri her oluşturulduğunda veya değiştirildiğinde işlem hattınızda bir sonraki adımın çok erken başlatılması gereksiz hatalara neden olabilir. Örneğin, IoT hub'ınız etkin durumda değilse olayları almaya hazır olmaz. IoT hub'ınızın etkin durumda olup olmadığını görmek için IoT hub'ına Genel Bakış sayfanızı denetleyin. Aksi takdirde sayfanın üst kısmında bir uyarı görürsünüz.

    Etkin durumda olmadığını belirten bir IoT Hub hatasının ekran görüntüsü.

Cihazı çalıştırma ve olayları gözlemleme

Olay aboneliğiniz ayarlandıktan sonra bir cihaz bağlayarak test edelim.

cihazı IoT Hub

  1. IoT hub'ınızdan Cihazlar'ı seçin.

  2. Bölmenin üst kısmındaki + Cihaz Ekle'yi seçin.

  3. Cihaz kimliği için, Demo-Device-1 girin.

  4. Kaydet’i seçin.

    Cihaz Ekle düğmesinin konumunun ekran görüntüsü.

  5. Cihaza yeniden tıklayın; şimdi bağlantı dizeleri ve anahtarları doldurulur. Birincil Bağlantı Dizesini kopyalayıp daha sonra kullanmak üzere kaydedin.

    Cihazınız için Birincil Bağlantı Dizesi'nin konumunun ekran görüntüsü.

Raspberry Pi simülatörünü başlatma

Cihaz bağlantısını simüle etmek için Raspberry Pi web simülatörünü kullanalım.

Raspberry Pi simülatörünü başlatma

Raspberry Pi web simülatöründe örnek bir uygulama çalıştırma

Bu örnek uygulama, cihaza bağlı bir olayı tetikler.

  1. Kodlama alanında, 15. Satırdaki yer tutucuyu önceki bölümün sonunda kaydettiğiniz Azure IoT Hub cihaz bağlantı dizenizle değiştirin.

    Raspberry Pi betiğinde birincil bağlantı dizenizin nereye ekleneceğinin ekran görüntüsü.

  2. Çalıştır'ı seçerek uygulamayı çalıştırın.

    Algılayıcı verilerini ve IoT hub'ınıza gönderilen iletileri gösteren aşağıdaki çıkışa benzer bir şey görürsünüz.

    Raspberry Pi'yi çalıştırdığınızda çıkış konsolunuzda neler bekleyebileceğinizin ekran görüntüsü.

  3. Mantığınızın tetiklenip tetiklenmediğini denetlemek için Mantıksal Uygulamaya Genel Bakış sayfanızı kontrol edebilirsiniz. Başarılı veya Başarısız olarak gösterilir. Burada kontrol etmek, sorun giderme gerekiyorsa mantıksal uygulamanızın durumunu öğrenmenizi sağlar. Tetikleyicinizin çalıştırıldığından 15-30 saniyelik bir gecikme bekleyin. Mantıksal uygulamanızın sorunlarını gidermeniz gerekiyorsa bu Sorun giderme makalesini görüntüleyin.

    Mantıksal uygulamanızın Genel Bakış sayfasındaki durum güncelleştirmelerinin ekran görüntüsü.

  4. Bir Cihaz Bağlantısı Kesildi olayını tetikleyen simülatörü durdurmak için Durdur'u seçin. Bu olay, Mantıksal Uygulamaya Genel Bakış sayfasında, bağlantı olayının orada günlüğe kaydedildiği gibi oturum açar.

Artık ioT hub'ınıza giden cihazınızın bağlantı ve bağlantı kesme olaylarını toplamak için örnek bir uygulama çalıştırmış oldunuz.

Azure Cosmos DB'de olayları gözlemleme

Yürütülen mantıksal uygulamanın sonuçlarını Cosmos DB belgenizde görebilirsiniz. Sayfayı yenilediğinizde belge Items koleksiyonunuzda görünür. Her bağlantı durumu olayı, benzersiz idbir atanan yeni bir belge oluşturur. Aşağıdaki görüntüde, cihaz başlatıldığında (bağlı) oluşturulan belge gösterilmektedir. Bağlı olay türü JSON çıkışında listelenir.

Cosmos DB koleksiyonunda yeni oluşturulan bağlantı durumu olayının ekran görüntüsü.

Azure CLI kullanma

Azure portal kullanmak yerine Azure CLI kullanarak IoT Hub adımlarını gerçekleştirebilirsiniz. Ayrıntılar için bkz. Olay aboneliği oluşturma ve IoT cihazı oluşturma için Azure CLI sayfaları.

Kaynakları temizleme

Bu öğreticide Azure aboneliğinize ücret uygulanmasına neden olan kaynaklar kullanılmıştır. Öğreticiyi denemeyi ve sonuçlarınızı test etme işlemini tamamladığınızda, saklamak istemediğiniz kaynakları devre dışı bırakın veya silin.

Mantıksal uygulama

Mantıksal uygulamanızda yapılan çalışmayı kaybetmek istemiyorsanız, bunu silmek yerine devre dışı bırakın.

  1. Mantıksal uygulamanıza gidin.

  2. Genel Bakış dikey penceresinde Sil veya Devre Dışı Bırak'ı seçin.

    Her aboneliğin tek bir ücretsiz IoT Hub'ı olabilir. Bu öğretici için ücretsiz bir hub oluşturduysanız, ücretleri önlemek için bunu silmeniz gerekmez.

IoT hub'ı veya Event Grid

  1. IoT Hub'ınıza gidin.

  2. Genel Bakış dikey penceresinde Sil'i seçin.

  3. IoT Hub'ınızı korusanız bile, oluşturduğunuz olay aboneliğini silmek isteyebilirsiniz. IoT Hub'ınızda Event Grid'i seçin.

  4. Kaldırmak istediğiniz olay aboneliğini ve ardından Sil'i seçin.

Cosmos DB

Azure Cosmos DB hesabını Azure portal kaldırmak için kaynağınıza gidin ve üst menü çubuğundan Hesabı sil'i seçin. Azure Cosmos DB hesabını silmeye yönelik ayrıntılı yönergelere bakın.

Sonraki adımlar