Aracılığıyla paylaş


Kendi IoT Edge modüllerinizi geliştirme

Applies to:IoT Edge 1.5 onay işareti 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.

Azure IoT Edge modüller diğer Azure hizmetleriyle bağlantı kurabilir ve daha büyük bulut veri işlem hattınıza katkıda bulunabilir. Bu makalede, IoT Edge çalışma zamanı ve IoT Hub ve dolayısıyla Azure bulutun geri kalanıyla iletişim kurmak için modüller nasıl geliştirebileceğiniz açıklanır.

IoT Edge çalışma zamanı ortamı

IoT Edge çalışma zamanı, birden çok IoT Edge modülünün işlevselliğini tümleştirmek ve bunları IoT Edge cihazlara dağıtmak için altyapı sağlar. Herhangi bir program IoT Edge modülü olarak paketlenebilir. IoT Edge iletişim ve yönetim işlevlerinden tam olarak yararlanmak için modülde çalışan bir program, yerel IoT Edge hub'ına bağlanmak için Azure IoT Cihaz SDK'sını kullanabilir.

Programınızı IoT Edge modülü olarak paketleme

Programınızı IoT Edge bir cihaza dağıtmak için önce kapsayıcıya alıp Docker uyumlu bir altyapı kullanarak çalıştırmanız gerekir. IoT Edge Docker ile uyumlu altyapısı olarak Docker'ın arkasındaki açık kaynak proje olan Moby kullanır. Docker ile alışkın olduğunuz parametreleri IoT Edge modüllerinize geçirebilirsiniz. Daha fazla bilgi için bkz. IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma.

IoT Edge hub'ını kullanma

IoT Edge hub iki ana işlevi vardır: IoT Hub için bir proxy ve yerel iletişimler.

Modülden IoT Edge hub'a bağlanma

Bir modülden yerel IoT Edge hub'ına bağlanmak, tüm istemcilerle aynı bağlantı adımlarını içerir. Daha fazla bilgi için bkz. IoT Edge hub'ına bağlanma.

AMQP üzerinden IoT Edge yönlendirmeyi kullanmak için Azure IoT SDK ModuleClient kullanabilirsiniz. modülünüzü cihazda çalışan IoT Edge hub'ına bağlamak için ModuleClient örneği oluşturun; DeviceClient örneklerinin IoT cihazlarını IoT Hub bağlamasına benzer. ModuleClient sınıfı ve iletişim yöntemleri hakkında daha fazla bilgi için tercih ettiğiniz SDK dili için API başvurusuna bakın: C#, C, Python, Java veya Node.js.

IoT Hub temelleri

IoT Hub bir modül örneğini bir cihaza benzer şekilde görür. Bir modül örneği şunları yapabilir:

Şu anda modüller buluttan cihaza iletileri alamıyor veya dosya yükleme özelliğini kullanamıyor.

Modül yazarken IoT Edge hub'ına bağlanabilir ve cihaz uygulamasıyla IoT Hub kullanırken olduğu gibi IoT Hub temel öğelerini kullanabilirsiniz. IoT Edge modülleriyle IoT cihaz uygulamaları arasındaki tek fark, modüllerde cihaz kimliği yerine modül kimliğine başvurmanız gerektiğidir.

Cihazdan buluta iletiler

bir IoT Edge modülü, yerel aracı görevi gören ve iletileri buluta yayan IoT Edge hub'ı aracılığıyla buluta ileti gönderebilir. Bir IoT Edge modülü, cihazdan buluta iletilerin karmaşık işlenmesini sağlamak için diğer modüller veya cihazlar tarafından yerel IoT Edge hub'ına gönderilen iletileri kesebilir ve işleyebilir. IoT Edge modülü daha sonra işlenen verilerle yeni iletiler gönderir. Bu şekilde, yerel işleme işlem hatları oluşturmak için IoT Edge modül zincirleri oluşturabilirsiniz.

Yolları kullanarak cihazdan buluta telemetri iletileri göndermek için:

  • ModuleClient sınıfını kullanın. Her modülün giriş ve çıkış uç noktaları vardır.
  • Modülünüzün çıkış uç noktasında ileti göndermek için sınıfınızdan ModuleClient ileti gönderme yöntemini kullanın.
  • Bu çıkış uç noktasını IoT Hub göndermek için cihazınızın edgeHub modülünde bir yol ayarlayın.

Yolları kullanarak iletileri işlemek için:

  • Başka bir uç noktadan (modül veya cihaz) gelen iletileri modülünüzün giriş uç noktasına göndermek için bir yol ayarlayın.
  • Modülünüzün giriş uç noktasında iletileri dinleyin. Her yeni ileti geri geldiğinde, Azure IoT SDK bir geri çağırma işlevi tetikler.
  • Bu geri çağırma işlevini kullanarak iletinizi işleyin ve (isteğe bağlı olarak) modül uç noktası kuyruğunuzda yeni iletiler gönderin.

Not

Yol bildirme hakkında daha fazla bilgi için bkz. IoT Edge'da modülleri dağıtmayı ve yolları oluşturmayı öğrenin.

İkizler

Twins IoT Hub tarafından sağlanan temel öğelerden biridir. İkizler meta veriler, yapılandırma ve koşullar gibi durum bilgilerini depolayan JSON belgeleridir. Her modülün veya cihazın kendi ikizi vardır.

  • Azure IoT SDK kullanarak modül ikizini almak için ModuleClient.getTwin yöntemini çağırın.
  • Azure IoT SDK kullanarak modül ikizi yaması almak için bir geri çağırma işlevi uygulayın ve bir ikiz yaması her geldiğinde geri çağırma işlevinizin tetiklenebilmesi için ModuleClient.moduleTwinCallback yöntemini kullanarak bunu kaydedin.

Doğrudan yöntemleri kabul et

Azure IoT SDK kullanarak doğrudan bir yöntem almak için bir geri çağırma işlevi uygulayın ve ModuleClient.methodCallback yöntemini kullanarak kaydedin; böylece doğrudan bir yöntem her geldiğinde geri çağırma işleviniz tetiklenmiş olur.

Dil ve mimari desteği

IoT Edge gereksinimlerinize uygun bir senaryo oluşturabilmeniz için birden çok işletim sistemini, cihaz mimarisini ve geliştirme dilini destekler. Özel IoT Edge modülleri geliştirme seçeneklerinizi anlamak için bu bölümü kullanın. Geliştirme ve test ortamınızı IoT Edge için hazırlama bölümünden her dil için araç desteği ve gereksinimleri hakkında daha fazla bilgi edinebilirsiniz.

Linux işletim sistemi

Aşağıdaki tablodaki tüm diller için IoT Edge, AMD64 ve çoğu ARM64 Linux kapsayıcısını destekler ve geliştirme sağlar. Ayrıca Debian 11 ARM32 kapsayıcılarını da destekler.

Geliştirme dili Geliştirme araçları
C Visual Studio Code
Visual Studio 2019/2022
C# (programlama dili) Visual Studio Code
Visual Studio 2019/2022
Java Visual Studio Code
Node.js Visual Studio Code
Python Visual Studio Code

Not

AMD64 geliştirme makinesinde ARM32 IoT Edge modülü derleme gibi platformlar arası derleme için geliştirme makinesini IoT Edge modülüyle eşleşen hedef cihaz mimarisinde kod derlenecek şekilde yapılandırmanız gerekir. Hedef cihaz mimarileri hakkında daha fazla bilgi için bkz. Tutorial: Visual Studio Code kullanarak Azure IoT Edge modülleri geliştirme.

Windows

Microsoft artık Windows kapsayıcılarını desteklememektedir. Windows üzerinde Linux için IoT Edge, IoT Edge'i Windows cihazlarda çalıştırmanın önerilen yoludur.

Modül güvenliği

Modüllerinizi güvenlik göz önünde bulundurarak geliştirin. Modüllerinizin güvenliğini sağlama hakkında daha fazla bilgi edinmek için bkz. Docker Altyapısı güvenliği.

Modül güvenliğini iyileştirmeye yardımcı olmak için IoT Edge bazı kapsayıcı özelliklerini varsayılan olarak devre dışı bırakır. Gerekirse modüllerinize ayrıcalıklı özellikler sağlamak için varsayılanları geçersiz kılabilirsiniz.

Yükseltilmiş Docker izinlerine izin ver

IoT Edge bir cihazdaki yapılandırma dosyasında, allow_elevated_docker_permissions adlı bir parametre yükseltilmiş Docker izinlerini denetler. True olarak ayarlandığında, bu bayrak --privileged bayrağını ve kapsayıcı oluşturma seçeneklerinde Docker HostConfig alanında tanımladığınız diğer tüm özellikleri sağlar.

Not

Şu anda bu bayrak, dağıtımlara ayrıcalıklı izinler veren varsayılan olarak true'dur . Cihaz güvenliğini geliştirmek için bu bayrağı false olarak ayarlayın.

CAP_CHOWN ve CAP_SETUID'i etkinleştir

Docker özellikleri CAP_CHOWN ve CAP_SETUID varsayılan olarak devre dışıdır. Bu özellikler, konak cihazdaki güvenli dosyalara yazabilir ve potansiyel olarak kök erişimi elde edebilir.

Bu özelliklere ihtiyacınız varsa kapsayıcı oluşturma seçeneklerini kullanarak CapADD bunları el ile yeniden etkinleştirin.

Sonraki adımlar