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 yardımcı olur ve IoT olaylarını iş çözümlerinizle kolayca tümleştirir. 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 ardından 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. Logic App, 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

  • NoSQL için etkin bir Azure Cosmos DB hesabı. Henüz oluşturmadıysanız bkz . İzlenecek yol için veritabanı hesabı oluşturma.

  • Veritabanınızdaki bir koleksiyon. İzlenecek yol için bkz . Koleksiyon ekleme. Koleksiyonunuzu oluştururken bölüm anahtarı için kullanın /id .

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir abonelik oluşturun.

  • Azure aboneliğinizde bir IoT hub'ı. Henüz bir hub'ına sahip değilseniz IoT hub'ı oluşturma makalesindeki adımları izleyebilirsiniz.

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ında +Kaynak oluştur'u, Tümleştirme'yi ve ardından Mantıksal Uygulama'yı seçin.

    Azure portalında 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 tane 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çerseniz, Mantıksal uygulama tasarımcısının kullanılabilir duruma gelmesi için yeni bir iş akışı oluşturmanız gerekir.

    Azure portalında 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 ardından 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 desenlere yönelik ş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 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 kullan öğ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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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şul geçirildikten 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. 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'i Veya olarak değiştirin.

  3. Değer seçin kutusunun içinde seçim yapın; Dinamik içeriği ( seçilebilen alanlar) 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örürsünüz. 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.

    • Bu ikinci satır ilk satıra benzer, ancak bağlantı kesme olaylarını ararız.

      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. Doğruysa iletişim kutusunda Eylem ekle'ye tıklayın.

    Azure'da

  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 parametre listesinden seçim yapma 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ımcısı'ndan 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ç nokta 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'sini 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ıza bakın. Değilse, sayfanın üst kısmında bir uyarı görürsünüz.

    Etkin durumda olmadığını belirten 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.

IoT Hub'a cihaz kaydetme

  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ı dizesi 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ır'daki yer tutucuyu önceki bölümün sonunda kaydettiğiniz Azure IoT Hub cihazınız bağlantı dizesi değiştirin.

    Raspberry Pi betiğinde birincil bağlantı dizesi ekleyeceğiniz yerin 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 denetim yaparak sorun giderme gerekiyorsa mantıksal uygulama durumunuzu öğrenebilirsiniz. Tetikleyicinizin çalışması için 15-30 saniyelik bir gecikme bekleyin. Mantıksal uygulamanızın sorunlarını gidermeniz gerekiyorsa bu Hata 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. Cihaz Bağlantısı Kesildi olayını tetikleyen simülatörü durdurmak için Durdur'u seçin. Bu olay, bağlantı olayının orada günlüğe kaydedildiği gibi Mantıksal Uygulamaya Genel Bakış sayfasında da oturum açar.

Şimdi 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'yi kullanma

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

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 portalından bir Azure Cosmos DB hesabını 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