Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to:
IoT Edge 1.5
Önemli
IoT Edge 1.5 LTS, desteklenen bir sürümdür. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrüne ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
İş mantığınızı doğrudan Azure IoT Edge cihazlarınızda çalıştıran kodu dağıtmak için Azure Functions kullanın. Bu öğreticide, simülasyon IoT Edge cihazındaki algılayıcı verilerini filtreleyen bir Azure İşlevi oluşturma ve dağıtma adımları gösterilmektedir. Hızlı başlangıçlarda oluşturduğunuz sanal IoT Edge cihazını kullanın. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure İşlevi oluşturmak için Visual Studio Code kullanma
- Docker görüntüsü oluşturmak ve kapsayıcı kayıt defterinde yayımlamak için Visual Studio Code ve Docker kullanın
- Modülü kapsayıcı kayıt deposundan IoT Edge cihazınıza dağıtın
- Filtrelenmiş verileri görüntüleme
Bu öğreticide oluşturduğunuz Azure işlevi, cihazınız tarafından oluşturulan sıcaklık verilerini filtreler. İşlev yalnızca sıcaklık belirtilen eşiğin üzerinde olduğunda Azure IoT Hub yukarı akış iletileri gönderir.
Azure hesabınız yoksa başlamadan önce free hesabı oluşturun.
Önkoşullar
Bu öğreticiye başlamadan önce, Linux kapsayıcı geliştirme için geliştirme ortamınızı ayarlamak üzere öğreticiyi takip edin: Visual Studio Code kullanarak Azure IoT Edge modülleri geliştirin. bitirdiğinizde, aşağıdaki önkoşullara sahip olursunuz:
- Azure'da ücretsiz veya standart katman IoT Hub.
- Linux kapsayıcıları ile Azure IoT Edge çalıştıran bir AMD64 cihazı. Linux cihazı veya Windows cihazı ayarlamak için hızlı başlangıcı kullanın.
- Bir kapsayıcı kayıt defteri, örneğin Azure Container Registry.
-
Visual Studio CodeAzure IoT Edge ve Azure IoT Hub uzantılarıyla ayarlanır. Azure IoT Edge araçları Visual Studio Code uzantısı için
bakım modundadır . - Geliştirme makinenize Docker uyumlu bir kapsayıcı yönetim sistemi indirip yükleyin. Linux kapsayıcılarını çalıştıracak şekilde ayarlayın.
Azure Functions ile bir IoT Edge modülü geliştirmek için geliştirme makinenize şu ek önkoşulları yükleyin:
- Visual Studio Code için C# (OmniSharp ile desteklenir) uzantısı
- .NET Core SDK
İşlev projesi oluşturma
Visual Studio Code için Azure IoT Edge size yönetim özellikleri ve kod şablonları sağlar. Bu bölümde, Azure işleviyle IoT Edge bir çözüm oluşturmak için Visual Studio Code kullanacaksınız.
Yeni proje oluşturma
Özelleştirilebilir bir C# İşlevi çözümü şablonu oluşturmak için bu adımları izleyin.
Geliştirme makinenizde Visual Studio Code açın.
View > Komut Paleti'i seçerek Visual Studio Code komut paletini açın.
Komut paletinde Azure IoT Edge: Yeni IoT Edge çözümü komutunu ekleyin ve çalıştırın. Çözümünüzü oluşturmak için komut paletinde şu istemleri izleyin:
- Bir klasör seçin: Çözüm dosyalarını oluşturmak için Visual Studio Code için geliştirme makinenizde konumu seçin.
- Çözüm adı sağlayın: Çözümünüz için FunctionSolution gibi açıklayıcı bir ad ekleyin veya varsayılanı kabul edin.
- Modül şablonu seçin: Azure Functions - C# öğesini seçin.
- Bir modül adı belirtin: modülünüzü CSharpFunction olarak adlandırabilirsiniz.
- Modül için bir Docker görüntü deposu sağlayın: görüntü deposu kapsayıcı kayıt defterinizin adını ve kapsayıcı görüntünüzün adını içerir. Portal, kapsayıcı görüntünüzü son adımdan otomatik olarak oluşturur.
localhost:5000 değerini Azure kapsayıcı kayıt defterinizdeki Login sunucusu değeriyle değiştirin. Azure portalındaki kapsayıcı kayıt defterinizin Genel Bakış sayfasından Oturum Açma Sunucusu'nu alabilirsiniz. Son dize şöyle görünür
<registry name>.azurecr.io/csharpfunction.
Kayıt defteri kimlik bilgilerinizi ekleme
Çözümünüzdeki ortam dosyası kapsayıcı kayıt defterinizin kimlik bilgilerini depolar ve bunları IoT Edge çalışma zamanıyla paylaşır. Çalışma zamanı, özel görüntülerinizi IoT Edge cihazınıza çekmek için bu kimlik bilgilerine ihtiyaç duyar.
Visual Studio Code'daki IoT Edge uzantısı, kapsayıcı kayıt defteri kimlik bilgilerinizi Azure'den çekip ortam dosyasında yerleştirmeye çalışır. Kimlik bilgilerinizin zaten dosyada olup olmadığını denetleyin. Yoksa, şimdi ekleyin:
- Visual Studio Code gezgininde .env dosyasını açın.
- Alanları Azure kapsayıcı kayıt defterinizden kopyaladığınız username ve password değerleriyle güncelleştirin. Bunları yeniden bulmak için Azure kapsayıcı kayıt defterinize gidin ve Settings > Access anahtarları sayfasına bakın.
- Bu dosyayı kaydedin.
Not
Bu öğreticide, geliştirme ve test senaryoları için uygun olan Azure Container Registry için yönetici oturum açma kimlik bilgileri kullanılır. Üretim için hizmet sorumluları gibi en az ayrıcalıklı kimlik doğrulama seçeneğini kullanın. Daha fazla bilgi için bkz. Kapsayıcı kayıt defterinize erişimi yönetme.
Hedef mimariyi AMD64 olarak ayarlama
IoT Edge Azure Functions modülleri yalnızca Linux AMD64 tabanlı kapsayıcılarda desteklenir. Visual Studio Code için varsayılan hedef mimari Linux AMD64'dür, ancak burada açıkça Linux AMD64 olarak ayarlayabilirsiniz.
- Komut paletini açın ve Azure IoT Edge: Edge Çözümü için Varsayılan Hedef Platformu Ayarla araması yapın.
- Komut paletinde, seçenekler listesinden AMD64 hedef mimarisini seçin.
Modülü özel kodla güncelleştirme
CSharpFunction modülünüzün iletileri IoT Hub iletmeden önce uçta işlemesi için kod ekleyin.
Visual Studio Code gezgininde modules > CSharpFunction > CSharpFunction.cs açın.
CSharpFunction.cs dosyasının içeriğini aşağıdaki kodla değiştirin. Bu kod, ortam ve makine sıcaklığı hakkında telemetri alır ve yalnızca makine sıcaklığı tanımlı eşiğin üzerindeyse iletiyi IoT Hub iletir.
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.EdgeHub; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Functions.Samples { public static class CSharpFunction { [FunctionName("CSharpFunction")] public static async Task FilterMessageAndSendMessage( [EdgeHubTrigger("input1")] Message messageReceived, [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output, ILogger logger) { const int temperatureThreshold = 20; byte[] messageBytes = messageReceived.GetBytes(); var messageString = System.Text.Encoding.UTF8.GetString(messageBytes); if (!string.IsNullOrEmpty(messageString)) { logger.LogInformation("Info: Received one non-empty message"); // Get the body of the message and deserialize it. var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString); if (messageBody != null && messageBody.machine.temperature > temperatureThreshold) { // Send the message to the output as the temperature value is greater than the threshold. using (var filteredMessage = new Message(messageBytes)) { // Copy the properties of the original message into the new Message object. foreach (KeyValuePair<string, string> prop in messageReceived.Properties) {filteredMessage.Properties.Add(prop.Key, prop.Value);} // Add a new property to the message to indicate it is an alert. filteredMessage.Properties.Add("MessageType", "Alert"); // Send the message. await output.AddAsync(filteredMessage); logger.LogInformation("Info: Received and transferred a message with temperature above the threshold"); } } } } } //Define the expected schema for the body of incoming messages. class MessageBody { public Machine machine {get; set;} public Ambient ambient {get; set;} public string timeCreated {get; set;} } class Machine { public double temperature {get; set;} public double pressure {get; set;} } class Ambient { public double temperature {get; set;} public int humidity {get; set;} } }Dosyayı kaydedin.
IoT Edge çözümünüzü derleyip yükleyin
Önceki bölümde bir IoT Edge çözümü oluşturdunuz ve bildirilen makine sıcaklıkları kabul edilebilir eşiğin altında olan iletileri filtrelemek için CSharpFunction değerini değiştirdiniz. Şimdi çözümü kapsayıcı görüntüsü olarak derleyin ve kapsayıcı kayıt defterinize gönderin.
tümleşik Visual Studio Code terminali açın. Terminali Görüntüle'yi >seçin.
Terminalde Docker'da oturum açın. Azure kapsayıcı kayıt defterinizdeki kullanıcı adını, parolayı ve kimlik doğrulama sunucusunu kullanın. Bu değerleri Azure portalındaki kayıt defterinizin Access anahtarları bölümünden alın.
docker login -u <ACR username> -p <ACR password> <ACR login server>kullanılmasını
--password-stdinöneren bir güvenlik uyarısı alabilirsiniz. Üretim senaryoları için bu en iyi yöntem önerilir ancak bu öğreticinin kapsamı dışındadır. Daha fazla bilgi için docker oturum açma başvurusuna bakın.Visual Studio Code gezgininde deployment.template.json dosyasına sağ tıklayın ve ardından Build ve Push IoT Edge Çözümü'ı seçin.
Derleme ve gönderme komutu üç işlem başlatır. İlk olarak, çözümde, dağıtım şablonundan ve diğer çözüm dosyalarından oluşturulan tam dağıtım bildirimine sahip olan yapılandırma adlı yeni bir klasör oluşturur. İkincisi, hedef mimariniz için uygun Dockerfile'ı temel alarak kapsayıcı görüntüsünü oluşturmak amacıyla
docker buildçalıştırır. Ardından,docker pushçalıştırarak görüntü deposunu kapsayıcı kayıt defterinize itersiniz.Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırmanızda daha hızlıdır.
Kapsayıcı görüntünüzü görüntüleme
Visual Studio Code, kapsayıcı görüntünüzü kapsayıcı kayıt defterinize gönderdiğinizde bir başarı iletisi gösterir. İşlemi onaylamak için görüntüyü kayıt defterinde görüntüleyin.
- Azure portalında Azure kapsayıcı kayıt defterinize gidin.
- Hizmetler > Depoları'nı seçin.
- Listede csharpfunction deposunu görürsünüz. Daha fazla ayrıntı görüntülemek için bu depoya tıklayın.
- Etiketler bölümünde 0.0.1-amd64 etiketini görürsünüz. Bu etiket, oluşturduğunuz görüntünün sürümünü ve platformunu gösterir. CSharpFunction klasöründeki module.json dosyası bu değerleri ayarlar.
Çözümü dağıtma ve çalıştırma
İşlev modülünüzü hızlı başlangıçta olduğu gibi IoT Edge bir cihaza dağıtmak için Azure portalını kullanın. Ayrıca modülleri Visual Studio Code dağıtabilir ve izleyebilirsiniz. Aşağıdaki bölümlerde, önkoşullarda listelenen Visual Studio Code uzantıları için Azure IoT Edge ve IoT Hub kullanılır. Henüz yüklemediyseniz uzantıları şimdi yükleyin.
Visual Studio Code gezgininde, Azure IoT Hub bölümünün altında, IoT cihazlarının listesini görmek için Devices genişletin.
IoT Edge cihazınızın adına sağ tıklayın ve Tek Cihaz için Dağıtım Oluştur öğesini seçin.
CSharpFunction içeren çözüm klasörüne gidin. Yapılandırma klasörünü açın, deployment.amd64.json dosyasını seçin ve ardından Edge Dağıtım Bildirimi seç'i seçin.
Dağıtılan ve çalışan modüllerin listesini görmek için cihazınızın altında Modüller'i genişletin. Yenile düğmesini seçin. SimulatedTemperatureSensor modülü, $edgeAgent ve $edgeHub ile birlikte çalışan yeni CSharpFunction'ı görebilirsiniz.
Yeni modüllerin görünmesi birkaç dakika sürebilir. IoT Edge cihazı, kendi yeni dağıtım bilgilerini IoT Hub'tan alır, yeni kapsayıcıları başlatır ve durumu IoT Hub'a geri bildirir.
Oluşturulan verileri görüntüleme
komut paletinde Azure IoT Hub: Yerleşik Olay Uç Noktasını İzlemeyi Başlat komutunu çalıştırarak cihazlarınızdan IoT hub'ınıza ulaşan tüm iletileri görün. İletileri izlemeyi durdurmak için Azure IoT Hub: Komut paletinde Yerleşik Olay Uç Noktasını İzlemeyi Durdur çalıştırın.
Görünümü filtrelemek ve belirli bir cihazdan gelen iletileri görmek için, Visual Studio Code gezgininin Azure IoT Hub > Cihazlar bölümünde cihaza sağ tıklayın ve Yerleşik Olay Uç Noktasını İzlemeye Başlama'yi seçin.
Kaynakları temizleme
Bir sonraki önerilen makaleye devam etmek istiyorsanız, oluşturduğunuz kaynakları ve yapılandırmaları koruyun ve yeniden kullanın. Ayrıca test cihazıyla aynı IoT Edge cihazı kullanmaya devam edebilirsiniz.
Aksi takdirde, ücretlerden kaçınmak için bu makalede oluşturduğunuz yerel yapılandırmayı ve Azure kaynaklarını silin.
Azure kaynaklarını silme
Azure kaynakları ve kaynak gruplarını silme işlemini geri alamazsınız. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT Hub tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubunda oluşturduysanız, kaynak grubunu değil yalnızca IoT Hub kaynağı silin.
Kaynakları silmek için:
- Azure portalında oturum açın ve ardından Kaynak grupları'i seçin.
- IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.
- Kaynak grubunuzun içerdiği kaynakların listesini gözden geçirin. Tümünü silmek isterseniz Kaynak grubunu sil'i seçebilirsiniz. Yalnızca bazılarını silmek istiyorsanız, tek tek silmek için her kaynağı seçin.
Sonraki adımlar
Bu öğreticide, IoT Edge cihazınız tarafından oluşturulan ham verileri filtrelemek için kod içeren bir Azure İşlev modülü oluşturdunuz.
Azure IoT Edge uçta verileri iş içgörülerine dönüştürmenize yardımcı olabilecek diğer yöntemleri öğrenmek için sonraki öğreticilere geçin.