Kendi IoT Edge modüllerinizi geliştirme
Ş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.
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.
Modülden IoT Edge hub'ına 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ö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:
- Cihazdan buluta ileti gönderme
- Kimliğine özel olarak hedeflenen doğrudan yöntemleri alma
- Cihaz ikizinden ve bu cihazın diğer modül ikizlerinden ayrı ve yalıtılmış bir modül ikizinin olması
Ş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.
Not
Yol bildirme hakkında daha fazla bilgi edinmek için bkz . IoT Edge'de modülleri dağıtmayı ve yolları oluşturmayı öğrenin
İkizler
İ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ın
ModuleClient.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 |
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 . 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_permissions
bir 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.
Not
Ş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