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.
Şunlar için geçerlidir:
IoT Edge 1.5
Önemli
IoT Edge 1.5 LTS desteklenen sürümdür. IoT Edge 1.4 LTS, 12 Kasım 2024 itibarıyla kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.
İş mantığınızı doğrudan Azure IoT Edge cihazlarınızda çalıştıran kodu dağıtmak için Azure İşlevleri'ni kullanın. Bu öğreticide, sanal bir IoT Edge cihazında 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:
- Visual Studio Code kullanarak Azure İşlevi oluşturma
- Visual Studio Code ve Docker kullanarak Docker görüntüsü oluşturma ve kapsayıcı kayıt defterinde yayımlama
- IoT Edge cihazınıza container kayıt defterinden modülü dağıtın
- Filtrelenmiş verileri görüntüleme
Bu öğreticide oluşturduğunuz Azure İş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'a yukarı akış iletileri gönderir.
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Önkoşullar
Bu öğreticiye başlamadan önce Linux kapsayıcı geliştirme için geliştirme ortamınızı ayarlama öğreticisini izleyin: Visual Studio Code kullanarak Azure IoT Edge modülleri geliştirme. bitirdiğinizde, aşağıdaki önkoşullara sahip olursunuz:
- Azure'da ücretsiz veya standart katmanlı bir 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.
- Azure Container Registry gibi bir kapsayıcı kayıt defteri
- Visual Studio Code, Azure IoT Edge ve Azure IoT Hub uzantılarıyla ayarlanır. Visual Studio Code uzantısı için Azure IoT Edge araçları 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 İşlevleri ile bir IoT Edge modülü geliştirmek için geliştirme makinenize şu ek önkoşulları yükleyin:
İş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 İşlevi ile bir IoT Edge çözümü oluşturmak için Visual Studio Code'u 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'u açın.
Komut Paletini Görüntüle'yi 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 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 İşlevleri - C# öğesini seçin.
- Modül adı sağlayın | Modülünüze CSharpFunction adını verin.
- 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. Kapsayıcı görüntünüz son adımda önceden doldurulmuş. localhost:5000 değerini Azure kapsayıcı kayıt defterinizdeki Oturum açma sunucusu değeriyle değiştirin. Oturum açma sunucusunu Azure portalındaki kapsayıcı kayıt defterinizin Genel Bakış sayfasından alabilirsiniz. Dizenin son hali <kayıt defteri adı>.azurecr.io/csharpfunction ifadesine benzer olmalıdır.
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'dan çekip ortam dosyasında doldurmaya çalışır. Kimlik bilgilerinizin zaten dosyada olup olmadığını denetleyin. Yoksa, şimdi ekleyin:
- Visual Studio Code gezgininde
.envdosyayı açın. - Alanları Azure kapsayıcı kayıt defterinizden kopyaladığınız kullanıcı adı ve parola değerleriyle güncelleştirin. Bunları yeniden bulmak için Azure'daki kapsayıcı kayıt defterinize gidin ve Ayarlar>Erişim 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'deki Azure İşlevleri 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 bunu açıkça Linux AMD64 olarak ayarlarsınız.
Komut paletini açın ve Azure IoT Edge: Edge Çözümü için Varsayılan Hedef Platformu Ayarla'yı arayı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'a iletmeden önce uçta işlemesi için bazı kodlar ekleyin.
Visual Studio Code gezgininde CSharpFunction CSharpFunction.cs modüllerini
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'a 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ü oluşturma ve gönderme
Önceki bölümde bir IoT Edge çözümü oluşturdunuz ve CSharpFunction değerini, kabul edilebilir eşiğin altında bildirilen makine sıcaklıklarına sahip iletileri filtrelemek için değiştirdiniz. Şimdi çözümü kapsayıcı görüntüsü olarak derleyin ve kapsayıcı kayıt defterinize gönderin.
Visual Studio Code tümleşik terminalini açın. Görüntüle>Terminali seçin.
Terminalde Docker'da oturum açın. Azure kapsayıcı kayıt defterinizdeki kullanıcı adını, parolayı ve oturum açma sunucusunu kullanın. Bu değerleri Azure portalındaki kayıt defterinizin Erişim 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, ardından IoT Edge Çözümü Oluştur ve Gönder'i 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, görüntü deposunu kapsayıcı kayıt defterinize göndermek için çalışırdocker push.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ü açma
Kapsayıcı görüntünüz kapsayıcı kayıt defterinize gönderildiğinde Visual Studio Code 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
- 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. Bu değerler CSharpFunction klasöründeki module.json dosyasında ayarlanır.
Çözümü dağıtma ve çalıştırma
İşlev modülünüzü hızlı başlangıçta olduğu gibi bir IoT Edge cihazına dağıtmak için Azure portalını kullanın. Modülleri Visual Studio Code'dan da dağıtabilir ve izleyebilirsiniz. Aşağıdaki bölümlerde, önkoşullarda listelenen Visual Studio Code için Azure IoT Edge ve IoT Hub uzantıları kullanılır. Henüz yüklemediyseniz uzantıları şimdi yükleyin.
Visual Studio Code gezgininde, Azure IoT Hub bölümünde Cihazlar'ı genişleterek IoT cihazlarının listesini görün.
IoT Edge cihazınızın adına sağ tıklayın ve ardından Tek Cihaz için Dağıtım Oluştur'u 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ı yeni dağıtım bilgilerini IoT Hub'dan alır, yeni kapsayıcıları başlatır ve ardından 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'ı çalıştırarak cihazlarınızdan IoT hub'ınıza ulaşan tüm iletileri görün. İletileri izlemeyi durdurmak için komut paletinde Azure IoT Hub: Yerleşik Olay Uç Noktasını İzlemeyi Durdur'u ç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ı İzlemeyi Başlat'ı 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. Aynı IoT Edge cihazını test cihazı olarak kullanmaya devam edebilirsiniz.
Aksi takdirde, ücretlerden kaçınmak için bu makalede oluşturduğunuz yerel yapılandırmaları ve Azure kaynaklarını silin.
Azure kaynaklarını silme
Azure kaynaklarını ve kaynak gruplarını silme işlemi geri alınamaz. 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ğını silin.
Kaynakları silmek için:
- Azure portalında oturum açın ve Kaynak grupları’nı 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, her kaynağı seçerek tek tek silebilirsiniz.
Sonraki adımlar
Bu öğreticide, IoT Edge cihazınız tarafından oluşturulan ham verileri filtrelemek için kod içeren bir Azure İşlevi modülü oluşturdunuz.
Azure IoT Edge'in verileri iş içgörüsüne çevirmenize yardımcı olabilecek diğer yolları öğrenmek için bir sonraki öğreticiye geçin.