Kendi IoT Edge modüllerinizi geliştirme

Şunlar için geçerlidir:IoT Edge 1.4 checkmark IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

Azure IoT Edge modülleri diğer Azure hizmetlerine bağlanabilir ve daha büyük bulut verileri işlem hattınıza katkıda bulunabilir. Bu makalede IoT Edge çalışma zamanı ve IoT Hub ile ve dolayısıyla Azure bulutunun geri kalanıyla iletişim kurmak için nasıl modü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. Tüm programlar 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ı bir IoT Edge cihazına dağıtmak için öncelikle kapsayıcılı hale getirilmeli ve Docker uyumlu bir altyapıyla çalıştırılmalıdır. IoT Edge, Docker ile uyumlu altyapısı olarak Docker'ın arkasındaki açık kaynak proje Moby'yi kullanır. Docker ile alışkın olduğunuz parametreler IoT Edge modüllerinize de geçirilebilir. 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şlev sağlar: IoT Hub'a bir ara sunucu ve yerel iletişim.

Bir modülden IoT Edge hub'ına Bağlan

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

AMQP üzerinden IoT Edge yönlendirmesini kullanmak için Azure IoT SDK'sından ModuleClient'ı kullanabilirsiniz. DeviceClient örneklerinin IoT cihazlarını IoT Hub'a bağlamasına benzer şekilde modülünüzü cihazda çalışan IoT Edge hub'ına bağlamak için bir ModuleClient örneği oluşturun. 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 ilkelleri

IoT Hub bir modül örneğini cihaza benzer şekilde görür. Modül örneği:

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

Bir modül yazarken IoT Edge hub'ına bağlanabilir ve IoT Hub'ı bir cihaz uygulamasıyla 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 gerekir.

Cihazdan buluta iletiler

IoT Edge modülü, yerel aracı işlevi gören ve iletileri buluta yayan IoT Edge hub'ı aracılığıyla buluta ileti gönderebilir. Cihazdan buluta iletilerin karmaşık işlenmesini sağlamak için IoT Edge modülü, 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 nedenle yerel işleme işlem hatları oluşturmak için IoT Edge modüllerinin zincirleri oluşturulabilir.

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

  • Azure IoT SDK'sının Modül İstemcisi 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 Modül İstemcisi sınıfınızdan ileti gönderme yöntemini kullanın.
  • Bu çıkış uç noktasını IoT Hub'a 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'sı tarafından bir geri çağırma işlevi tetikler.
  • İletinizi bu geri çağırma işleviyle işleyin ve (isteğe bağlı olarak) modül uç noktası kuyruğunuzda yeni iletiler gönderin.

Dekont

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

Ikiz

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

  • Azure IoT SDK'sı ile modül ikizini almak için yöntemini çağırınModuleClient.getTwin.

  • Azure IoT SDK'sı ile bir modül ikizi yaması almak için bir geri çağırma işlevi uygulayın ve bunu Azure IoT SDK'sından yöntemine ModuleClient.moduleTwinCallback kaydederek her ikizi yaması geldiğinde geri çağırma işlevinizin tetiklenebilmesini sağlayın.

Doğrudan yöntemleri alma

Azure IoT SDK'sı ile doğrudan bir yöntem almak için bir geri çağırma işlevi uygulayın ve geri çağırma işlevinizin doğrudan bir yöntem her geldiğinde tetiklenebilmesi için Azure IoT SDK'sından yöntemiyle ModuleClient.methodCallback kaydedin.

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

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

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

Dekont

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 . Visual Studio Code kullanarak Azure IoT Edge modülleri geliştirme.

Windows

Artık Windows kapsayıcılarını desteklemiyoruz. Windows üzerinde Linux için IoT Edge, Windows cihazlarında IoT Edge'i çalıştırmanın önerilen yoludur.

Modül güvenliği

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

IoT Edge, modül güvenliğini geliştirmeye yardımcı olmak için 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 cihazındaki yapılandırma dosyasında adlı allow_elevated_docker_permissionsbir parametre vardır. True olarak ayarlandığında, bu bayrak bayrağına --privileged ve kapsayıcıdaki CapAdd Docker HostConfig alanında tanımladığınız ek özellikler oluşturma seçeneklerine izin verir.

Dekont

Şu anda bu bayrak, dağıtımların modüllere ayrıcalıklı izinler vermesine olanak tanıyan varsayılan olarak true'dur. Cihaz güvenliğini geliştirmek için bu bayrağı false olarak ayarlamanızı öneririz.

CAP_CHOWN ve CAP_SETUID etkinleştirme

Docker özellikleri CAP_CHOWN ve CAP_SETUID varsayılan olarak devre dışı bırakılır. Bu özellikler, konak cihazdaki dosyaların güvenliğini sağlamak ve potansiyel olarak kök erişim elde etmek için yazılabilir.

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

Sonraki adımlar

IoT Edge için geliştirme ve test ortamınızı hazırlama

Visual Studio Code kullanarak Azure IoT Edge modülleri geliştirme

Visual Studio Code kullanarak Azure IoT Edge modüllerinde hata ayıklama

Azure IoT Hub SDK'larını anlama ve kullanma