Öğretici: Azure Haritalar kullanarak IoT uzamsal analiz Haritalar
Bir IoT senaryosunda, uzay ve zaman içinde meydana gelen ilgili olayları yakalamak ve izlemek yaygındır. Filo yönetimi, varlık izleme, mobilite ve akıllı şehir uygulamaları buna örnek olarak verilmiştir. Bu öğretici, Azure araç kiralama API'lerini kullanarak kullanılan araba kiralama hareketlerini takip Haritalar size yol sunar.
Bu öğreticide şunları bulacaksınız:
- Araba izleme verilerini günlüğe izlemek için bir Azure depolama hesabı oluşturun.
- Upload API'sini kullanarak Azure Haritalar Veri hizmeti'e bir Upload sağlar.
- Bir hub'ı Azure IoT Hub ve bir cihazı kaydetme.
- Azure'da uzamsal Azure İşlevleri kullanarak iş mantığı uygulayan bir Haritalar oluşturun.
- Azure işlevinden IoT cihaz telemetri olaylarını azure Azure Event Grid.
- İleti yönlendirmeyi kullanarak telemetri olaylarını IoT Hub filtrele.
Önkoşullar
Azure portalında oturum açın.
Birincil anahtar veya abonelikanahtarı olarak da bilinen birincil abonelik anahtarını alın. Daha fazla bilgi için bkz. Azure'da kimlik doğrulamasını Haritalar.
Bir kaynak grubu oluşturun. Bu öğreticide, kaynak grubumuza ContosoRental adını ve ardından istediğiniz adı seçebilirsiniz.
Bu öğreticide Postman uygulaması kullanılır, ancak farklı bir API geliştirme ortamı seçebilirsiniz.
Kullanım durumu: araba kiralama takibi
Bir araba kiralama şirketinin, araba kiralama için konum bilgilerini, seyahat mesafesini ve çalışma durumunu günlüğe almak istediğini kabul etmek istiyor. Şirket ayrıca bir araba doğru yetkilendirilmiş coğrafi bölgeden ayrıldığında bu bilgileri depolamak istiyor.
Kiralama arabaları, telemetri verilerini düzenli olarak IoT Hub. Telemetri geçerli konumu içerir ve aracın motorunun çalıştırıp çalışmay olmadığını gösterir. Cihaz konumu şeması, jeo-uzamsal veriler için IoT Tak ve Kullan şemaya bağlı olur. Araba kiralamanın cihaz telemetri şeması aşağıdaki JSON koduna benzer:
{
"data": {
"properties": {
"Engine": "ON"
},
"systemProperties": {
"iothub-content-type": "application/json",
"iothub-content-encoding": "utf-8",
"iothub-connection-device-id": "ContosoRentalDevice",
"iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"iothub-connection-auth-generation-id": "636959817064335548",
"iothub-enqueuedtime": "2019-06-18T00:17:20.608Z",
"iothub-message-source": "Telemetry"
},
"body": {
"location": {
"type": "Point",
"coordinates": [ -77.025988698005662, 38.9015330523316 ]
}
}
}
}
Bu öğreticide yalnızca bir aracı takip ediyorsanız. Azure hizmetlerini ayardikten sonra araç simülatörünü çalıştırmak için rentalCarSimulation C# projesini indirmeniz gerekir. Olaydan işlev yürütmeye kadar tüm süreç aşağıdaki adımlarda özetlenmiştir:
Araç içinde cihaz, telemetri verilerini IoT Hub.
Araba motoru çalışıyorsa hub telemetri verilerini Event Grid.
Azure işlevi, cihaz telemetri olaylarına olan olay aboneliği nedeniyle tetiklenir.
İşlev, aracın cihaz konumu koordinatlarını, olay zamanlarını ve cihaz kimliğini günlüğe kaydeder. Ardından Uzamsal Coğrafi Bölge Al API'sini kullanarak aracın bölge dışından yönlendirip yönlendiri olmadığını belirler. Coğrafi bölge sınırlarının dışına çıktı ise işlev, olaydan alınan konum verilerini bir blob kapsayıcısı içinde depolar. İşlev ayrıca koordinat konumunu sokak adresine çevirmek için Arama Adresini Ters Yönde sorgular ve bunu cihaz konumu verilerinin geri kalanıyla birlikte depolar.
Aşağıdaki diyagramda sisteme üst düzey bir genel bakış yermektedir.
Aşağıdaki şekilde, mavi renkli bölge alanı vurgulanır. Araba kiralama rotası yeşil çizgiyle belirtilmiştir.
Azure depolama hesabı oluşturma
Araba ihlali izleme verilerini depolamak için kaynak grubu içinde genel amaçlı bir v2 depolama hesabı oluşturun. Kaynak grubu oluşturmadıysanız, kaynak grubu oluşturma yönergelerini izleyin. Bu öğreticide, kaynak grubunuza ContosoRental adını ve sonra da adını ve sonra da 'i yazın.
Depolama hesabı oluşturmak için depolama hesabı oluşturma yönergelerini izleyin. Bu öğreticide, depolama hesabını contosorentalstorage olarak adlayın, ancak genel olarak istediğiniz adı veebilirsiniz.
Depolama hesabınız başarıyla gerçekleştirildi, ardından günlük verilerini depolamak için bir kapsayıcı oluşturmanız gerekir.
Yeni oluşturduğunuz depolama hesabına gidin. Essentials bölümünde Kapsayıcılar bağlantısını seçin.
Sol üst köşede + Kapsayıcı'ya tıklayın. Tarayıcının sağ tarafında bir panel görüntülenir. Kapsayıcınıza contoso-rental-logs adını girin ve Oluştur'a seçin.
Depolama hesabınıza erişim anahtarları bölmesine gidin ve anahtar1 Depolama hesabı adını ve Anahtar değerini kopyalayın. "Azure İşlevi oluşturma ve abonelik ekleme" bölümünde bu değerlerin Event Grid gerekir.
Upload bir bölgeyi çoğaltma
Ardından Postman uygulamasını kullanarak bölgeyi Azure Haritalar. Coğrafi bölge, kiralama aracımız için yetkilendirilmiş coğrafi alanı tanımlar. Azure işlevinizin coğrafi bölgeyi kullanarak bir arabanın bölge bölgenizin dışına taşındığını belirleyeceksiniz.
Azure Haritalar Data Upload API'sini kullanarak bölgeyi karşıya yüklemek için şu Upload izleyin:
Postman uygulamasını açın ve yeniden Yeni'yi seçin. Yeni Oluştur penceresinde HTTP İsteği'ne tıklayın ve istek için bir istek adı girin.
Oluşturucu sekmesinde POST HTTP yöntemini seçin ve bölgeyi Data Upload API'sinde yüklemek için aşağıdaki URL'yi girin. yerine birincil abonelik
{Your-Azure-Maps-Primary-Subscription-key}anahtarınızı da dahil edin.https://us.atlas.microsoft.com/mapData?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=2.0&dataFormat=geojsonURL yolunda
geojsonparametresine yönelikdataFormatdeğer, karşıya yüklenen verilerin biçimini temsil eder.Giriş biçimi > için Gövde ham'ı seçin ve açılan listeden JSON'u seçin. JSON veri dosyasını açınve JSON'u gövde bölümüne kopyalayın. Gönder’i seçin.
Gönder'i seçin ve isteğin işlemesi için bekleyin. İstek tamamlandıktan sonra yanıtın Üst Bilgiler sekmesine gidin. Operation-Location anahtarının değeri olan değerini
status URLkopyalayın.https://us.atlas.microsoft.com/mapData/operations/{operationId}?api-version=2.0API çağrısının durumunu kontrol etmek için üzerinde bir GET HTTP isteği
status URLoluşturun. Kimlik doğrulaması için birincil abonelik anahtarınızı URL'ye ekleyebilirsiniz. GET isteği aşağıdaki URL'ye benzer olmalıdır:https://us.atlas.microsoft.com/mapData/{operationId}/status?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}İstek başarıyla tamamlandığında yanıt penceresinde Üst Bilgiler sekmesini seçin. Resource-Location anahtarının değerini (değeri)
resource location URLkopyalayın. ,resource location URLkarşıya yüklenen verilerin benzersiz tanımlayıcısını ( )udidiçerir. Buudidöğreticide daha sonra kullanmak üzere kopyalayın.
IoT hub oluşturma
IoT Hub, bir IoT uygulaması ile yönettikleri cihazlar arasında güvenli ve güvenilir çift yönlü iletişim sağlar. Bu öğreticide, araç kiralama aracının konumunu belirlemek için araç içinde cihazınızın bilgilerini almak istiyorsanız. Bu bölümde, ContosoRental kaynak grubu içinde bir IoT hub'ı oluşturabilirsiniz. Bu hub, cihaz telemetri olaylarınızı yayımlamadan sorumludur.
ContosoRental kaynak grubunda bir IoT hub'ı oluşturmak için IoT hub'ı oluşturma adımlarını izleyin.
IoT hub'ınıza cihaz kaydetme
Cihazlar IoT hub'ı kimlik kayıt defterine kayıtlı olmadığı sürece IoT hub'a bağlanamıyor. Burada InVehicleDevice adıyla tek bir cihaz oluşturabilirsiniz. Cihazı IoT hub'ınıza oluşturmak ve kaydetmek için IoT hub'ınıyeni bir cihaz kaydetme adımlarını izleyin. Cihazınızın birincil bağlantı dizesini kopyalayıp kopyalamayı emin olun. Buna daha sonra ihtiyacınız olacak.
İşlev oluşturma ve Event Grid ekleme
Azure İşlevleri, işlem altyapısını açıkça sağlama veya yönetmeye gerek kalmadan küçük kod parçalarını ("işlevler") çalıştırmaya olanak sağlayan sunucusuz bir işlem hizmetidir. Daha fazla bilgi edinmek için bkz. Azure İşlevleri.
İşlev, belirli bir olay tarafından tetiklenir. Burada bir tetikleyici tarafından tetiklenen bir işlev Event Grid. Cihaz telemetri olaylarını oluşturmak için bir olay aboneliği oluşturarak IoT Hub işlevi arasındaki ilişkiyi oluşturun. Bir cihaz telemetri olayı oluştuğunda, işleviniz uç nokta olarak çağrılır ve daha önce IoT Hub.
İşlevin içermesi için C# betik kodu aşağıdaki şekildedir.
Şimdi Azure işlevinizi ayarlayın.
Kaynak Azure portal Oluştur'a seçin. Arama metin kutusuna İşlev Uygulaması yazın. İşlev Uygulaması Oluştur'a > seçin.
İşlev Uygulaması oluşturma sayfasında işlev uygulamanıza bir ad girin. Kaynak Grubu altında, açılan listeden ContosoRental'ı seçin. Çalışma Zamanı Yığını olarak .NET'i seçin. Sürüm olarak 3.1'i seçin. Sayfanın alt kısmında Sonraki: Barındırma ve barındırma'>.
Bir Depolama için, Azure depolama hesabı oluşturma altında oluşturduğunuz depolama hesabını seçin. Gözden geçir ve oluştur’u seçin.
İşlev uygulaması ayrıntılarını gözden geçirerek Oluştur'a tıklayın.
Uygulama oluşturulduktan sonra buna bir işlev eklersiniz. İşlev uygulamasına gidin. İşlevler bölmesini seçin. Sayfanın üst kısmında + Ekle'yi seçin. İşlev şablonu paneli görüntülenir. Paneli aşağı kaydırın ve tetikleyiciyi Azure Event Grid seçin.
Önemli
Azure Olay Hub'ı Tetikleyicisi ve Azure Event Grid tetikleyici şablonları benzer adlara sahip. Tetikleyici şablonunu Azure Event Grid emin olun.
İşleve bir ad verme. Bu öğreticide GetGeoFunction adını kullansanız da genel olarak istediğiniz adı kullanabilirsiniz. İşlev oluştur'a seçin.
Sol menüde Kod + Test bölmesini seçin. C# betiği kopyalayıp kod penceresine yapıştırın.
C# kodunda aşağıdaki parametreleri değiştirin:
- Azure SUBSCRIPTION_KEY hesabı birincil abonelik Haritalar anahtarınızı değiştirin.
- UDID'i, bir coğrafi bölge olarak
udidkarşıya yüklediğiniz Upload ile değiştirin. CreateBlobAsyncBetikte yer alan işlevi, veri depolama hesabında olay başına bir blob oluşturur. , ACCESS_KEY, ACCOUNT_NAME ve STORAGE_CONTAINER_NAME depolama hesabınız erişim anahtarı, hesap adı ve veri depolama kapsayıcısı ile değiştirin. Bu değerler, Azure depolama hesabı oluşturma içinde depolama hesabınız oluşturulduğunda oluşturulmuş.
Sol menüde Tümleştirme bölmesini seçin. Diyagramda Event Grid Tetikleyici'yi seçin. Tetikleyici için bir ad yazın, eventGridEvent ve Abonelik oluştur'Event Grid seçin.
Abonelik ayrıntılarını doldurun. Olay aboneliğini olarak ad girin. Olay Şeması için Şemayı Event Grid seçin. Konu Türleri için, Hesaplara Azure IoT Hub seçin. Kaynak Grubu için, bu öğreticinin başında oluşturduğunuz kaynak grubunu seçin. Kaynak için, "Azure IoT hub'ı oluşturma" içinde oluşturduğunuz IoT hub'larını seçin. Olay Türlerine Filtrele için Cihaz Telemetrisi'ne seçin.
Bu seçenekleri seçtikten sonra Konu Türü'nin IoT Hub. Sistem Konusu Adı için kaynağınız ile aynı adı kullanabilirsiniz. Son olarak, Uç nokta ayrıntıları bölümünde Uç nokta seçin'i seçin. Tüm ayarları kabul edin ve Seçimi Onayla'ya tıklayın.
Ayarlarınızı gözden geçirme. Uç noktanın bu bölümün başında oluşturduğunuz işlevi belirtirken emin olun. Oluştur’u seçin.
Şimdi Tetikleyiciyi Düzenle paneline geri dönersiniz. Kaydet’i seçin.
İleti yönlendirmeyi kullanarak IoT Hub filtreleme
Azure işlevine bir Event Grid aboneliği eklerken, belirtilen IoT hub'larında otomatik olarak bir mesajlaşma yolu oluşturulur. İleti yönlendirme, farklı veri türlerini çeşitli uç noktalara yönlendirmeye olanak sağlar. Örneğin, cihaz telemetri iletilerini, cihaz yaşam döngüsü olaylarını ve cihaz ikizi değişiklik olaylarını yönlendirebilirsiniz. Daha fazla bilgi için bkz. İleti IoT Hub kullanma.
Örnek senaryonda, yalnızca kiralama aracı hareket eden iletiler almak istiyor. özelliğinin "ON" değerine eşit olduğu olayları Engine filtrelemek için bir yönlendirme sorgusu oluşturun. Yönlendirme sorgusu oluşturmak için RouteToEventGrid yolunu seçin ve Yönlendirme sorgusunu "Engine='ON"" ile değiştirin. Sonra Kaydet'i seçin. Artık IoT hub'ı yalnızca altyapının bulunduğu yerde cihaz telemetrisini yayımlar.
İpucu
IoT cihazdan buluta iletileri sorgulamanın çeşitli yolları vardır. İleti yönlendirme söz dizimi hakkında daha fazla bilgi için bkz. IoT Hub yönlendirme.
Telemetri verilerini IoT Hub
Azure işleviniz çalıştırılı olduğunda artık telemetri verilerini IoT hub'ını gönderebilirsiniz ve bu da telemetri verilerini Event Grid. Araç kiralama aracının konum verilerini simüle etmek için bir C# uygulaması kullanın. Uygulamayı çalıştırmak için geliştirme bilgisayarınızda .NET Core SDK 2.1.0 veya sonraki bir sonraki bir bilgisayarınızda gerekir. IoT hub'a sanal telemetri verileri göndermek için şu adımları izleyin:
Henüz bunu yaptıysanız rentalCarSimulation C# projesini indirin.
Dosyayı istediğiniz bir metin düzenleyicisinde açın ve değerini,
simulatedCar.csconnectionStringcihazı kaydeden ile değiştirin. Dosyada yapılan değişiklikleri kaydedin.Makinenize .NET Core'ların yüklü olduğundan emin olun. Yerel terminal pencerenize C# projesinin kök klasörüne gidin ve aşağıdaki komutu çalıştırarak sanal cihaz uygulaması için gerekli paketleri yükleyin:
dotnet restoreAynı terminalde aşağıdaki komutu çalıştırarak araba simülasyonu uygulamasını derlemek ve çalıştırmak için:
dotnet run
Yerel terminalin aşağıdaki gibi olması gerekir.
Blob depolama kapsayıcıyı şimdi açarsanız, aracının coğrafi bölge dışında olduğu konumlar için dört blobu görebilir.
Aşağıdaki harita, bölge dışında dört araç konum noktası gösterir. Her konum düzenli aralıklarla günlüğe kaydedilmiştir.
Azure Haritalar IoT'yu keşfetme
Bu öğreticide kullanılan Azure Haritalar API'lerini keşfetmek için bkz:
Azure rest API'lerinin Haritalar listesi için bkz:
IoT için Azure sertifikalı cihazların listesini almak için şu ziyaretleri ziyaret edin:
Kaynakları temizleme
Temizleme gerektiren bir kaynak yoktur.
Sonraki adımlar
Cihazdan buluta telemetri gönderme ve diğer yol hakkında daha fazla bilgi edinmek için bkz.