IoT central için cihaz uygulaması ve en iyi yöntemler

Bu makalede, IoT central uygulamanıza bağlanan cihazların nasıl uygulandığı hakkında bilgi sağlanır. Ayrıca bazı en iyi yöntemleri de içerir. Genel bağlantı işlemi hakkında daha fazla bilgi edinmek için bkz. cihaz Bağlan.

Örnek cihaz uygulama kodu için bkz . Öğretici: İstemci uygulaması oluşturma ve Azure IoT Central uygulamanıza bağlama.

Cihazı uygulama

IoT Central'a bağlanan cihazların IoT Tak Çalıştır kurallarına uyması gerekir. Bu kurallardan biri, bir cihazın bağlandığında uyguladığı cihaz modelinin model kimliğini göndermesi gerektiğidir. Model kimliği, IoT Central uygulamasının cihazı doğru cihaz şablonuna atamasını sağlar.

IoT Central cihaz şablonu, bu türdeki bir cihazın uygulaması gereken davranışları belirten bir model içerir. Davranışlar telemetriyi, özellikleri ve komutları içerir.

Her modelin gibi dtmi:com:example:Thermostat;1benzersiz bir dijital ikiz modeli tanımlayıcısı (DTMI) vardır. Bir cihaz IoT Central'a bağlandığında, uyguladığı modelin DTMI'sini gönderir. IoT Central daha sonra cihaza doğru cihaz şablonunu atayabilir.

IoT Tak Çalıştır, bir cihazın Dijital İkiz Tanım Dili (DTDL) modeli uyguladığında izlemesi gereken bir dizi kural tanımlar.

Azure IoT cihaz SDK'ları IoT Tak Çalıştır kuralları için destek içerir.

Cihaz modeli

Cihaz modeli, DTDL V2 modelleme dili kullanılarak tanımlanır. Bu dil şunları tanımlamanızı sağlar:

  • Cihazın gönderdiği telemetri. Tanım, telemetrinin adını ve veri türünü içerir. Örneğin, bir cihaz sıcaklık telemetrisini çift olarak gönderir.
  • Cihazın IoT Central'a rapor verdiği özellikler. Özellik tanımı adını ve veri türünü içerir. Örneğin, bir cihaz bir vananın durumunu Boole olarak bildirir.
  • Cihazın IoT Central'dan alabileceği özellikler. İsteğe bağlı olarak, bir özelliği yazılabilir olarak işaretleyebilirsiniz. Örneğin IoT Central, hedef sıcaklığı bir cihaza çift olarak gönderir.
  • Bir cihazın yanıt verdiği komutlar. Tanım, komutun adını ve herhangi bir parametrenin adlarını ve veri türlerini içerir. Örneğin, bir cihaz yeniden başlatmadan önce kaç saniye beklendiğini belirten bir yeniden başlatma komutuna yanıt verir.

Not

IoT Central, DTDL v2 dilinin bazı uzantılarını tanımlar. Daha fazla bilgi edinmek için bkz . IoT Central uzantısı.

DTDL modeli bileşensiz veya çok bileşenli bir model olabilir:

  • Bileşensiz model: Basit bir model katıştırılmış veya basamaklı bileşenler kullanmaz. Tüm telemetri, özellikler ve komutlar tek bir kök bileşen olarak tanımlanır. Bir örnek için bkz . Thermostat modeli.
  • Çok bileşenli model. İki veya daha fazla bileşen içeren daha karmaşık bir model. Bu bileşenler tek bir kök bileşeni ve bir veya daha fazla iç içe bileşen içerir. Bir örnek için bkz . Sıcaklık Denetleyicisi modeli.

İpucu

IoT Central cihaz şablonundaki tam bir cihaz modelini veya tek bir arabirimi DTDL v2 dosyası olarak içeri ve dışarı aktarabilirsiniz.

Cihaz modelleri hakkında daha fazla bilgi edinmek için IoT Tak Çalıştır modelleme kılavuzuna bakın

Kurallar

Bir cihaz, IoT Central ile veri alışverişi yaparken IoT Tak Çalıştır kurallarını izlemelidir. Kurallar şunlardır:

  • IoT Central'a bağlandığında DTMI'yi gönderin.
  • Doğru biçimlendirilmiş JSON yüklerini ve meta verilerini IoT Central'a gönderin.
  • IoT Central'dan yazılabilir özelliklere ve komutlara doğru yanıt verin.
  • Bileşen komutları için adlandırma kurallarını izleyin.

Not

IoT Central şu anda DTDL Dizisini ve Jeo-uzamsal veri türlerini tam olarak desteklememektedir.

IoT Tak Çalıştır kuralları hakkında daha fazla bilgi edinmek için bkz. IoT Tak Çalıştır kuralları.

Bir cihazın IoT Central ile yaptığı JSON iletilerinin biçimi hakkında daha fazla bilgi edinmek için bkz . Telemetri, özellik ve komut yükleri.

Cihaz SDK'ları

Cihazınızın davranışını uygulamak için Azure IoT cihaz SDK'larından birini kullanın. Kod şu şekilde olmalıdır:

  • Cihazı DPS'ye kaydedin ve IoT Central uygulamanızdaki iç IoT hub'ına bağlanmak için DPS'deki bilgileri kullanın.
  • Cihazın uyguladığı modelin DTMI'sini duyurun.
  • Telemetri verilerini cihaz modelinin belirttiği biçimde gönderin. IoT Central, görselleştirmeler ve analiz için telemetrinin nasıl kullanılacağını belirlemek için cihaz şablonundaki modeli kullanır.
  • Cihaz ile IoT Central arasında özellik değerlerini eşitleyin. Model, IoT Central'ın bilgileri görüntüleyebilmesi için özellik adlarını ve veri türlerini belirtir.
  • Modelde belirtilen komutlar için komut işleyicileri uygulayın. Model, cihazın kullanması gereken komut adlarını ve parametreleri belirtir.

Cihaz şablonlarının rolü hakkında daha fazla bilgi için bkz . Cihaz şablonları nedir?.

Aşağıdaki tabloda Azure IoT Central cihaz özelliklerinin IoT Hub özelliklerine nasıl eş olduğu özetlenmiştir:

Azure IoT Central Azure IoT Hub
Telemetri Cihazdan buluta mesajlaşma
Çevrimdışı komutlar Buluttan cihaza mesajlaşma
Özellik Cihaz ikizi bildirilen özellikleri
Özellik (yazılabilir) cihaz ikizi istenen ve bildirilen özellikler
Command Doğrudan yöntemler

İletişim protokolleri

Bir cihazın IoT Central'a bağlanmak için kullanabileceği iletişim protokolleri MQTT, AMQP ve HTTPS'yi içerir. IoT Central, cihaz bağlantısını etkinleştirmek için dahili olarak bir IoT hub'ı kullanır. IoT Hub'ın cihaz bağlantısı için desteklediği iletişim protokolleri hakkında daha fazla bilgi için bkz . İletişim protokolü seçme.

Cihazınız desteklenen protokollerden hiçbirini kullanamıyorsa protokol dönüştürme işlemi yapmak için Azure IoT Edge'i kullanın. IoT Edge, Azure IoT Central uygulamasından işlemeyi boşaltmak için diğer uç zeka senaryolarını destekler.

Telemetri zaman damgaları

Varsayılan olarak, IoT Central panolarda ve grafiklerde telemetri görüntülerken iletinin sıralandığı zamanı kullanır. IoT Central iletiyi cihazdan aldığında iletinin sıralandığı süre dahili olarak ayarlanır.

Cihaz, IoT Central'a iothub-creation-time-utc gönderilecek bir ileti oluşturduğunda özelliğini ayarlayabilir. Bu özellik varsa, IoT Central panolarda ve grafiklerde telemetri görüntülerken bunu kullanır.

IoT Central uygulamanızdan telemetriyi iothub-creation-time-utc dışarı aktarırken hem sıralanan zamanı hem de özelliği dışarı aktarabilirsiniz.

İleti özellikleri hakkında daha fazla bilgi edinmek için bkz . Cihazdan buluta IoT Hub iletilerinin Sistem Özellikleri.

En iyi yöntemler

Bu öneriler, IoT Central'da yerleşik yüksek kullanılabilirlik, olağanüstü durum kurtarma ve otomatik ölçeklendirmeden yararlanmak için cihazların nasıl uygulaneceğini gösterir.

Bağlantı hatalarını işleme

Ölçeklendirme veya olağanüstü durum kurtarma amacıyla IoT Central, temel ioT hub'larını güncelleştirebilir. Bağlantının korunması için cihaz kodunuz yeni bir IoT Hub uç noktasına bağlantı kurarak belirli bağlantı hatalarını işlemelidir.

Cihaz bağlandığında aşağıdaki hatalardan herhangi birini alıyorsa, yeni bir bağlantı dizesi almak için cihazı DPS ile yeniden sağlamalıdır. Bu hatalar, bağlantı dizesi artık geçerli olmadığı anlamına gelir:

  • Ulaşılamıyor IoT Hub uç noktası.
  • Süresi dolmuş güvenlik belirteci.
  • IoT Hub'da cihaz devre dışı bırakıldı.

Cihaz bağlandığında aşağıdaki hatalardan herhangi birini alıyorsa bağlantıyı yeniden denemek için bir geri alma stratejisi kullanmalıdır. Bu hatalar, bağlantı dizesi hala geçerli olduğu, ancak geçici koşulların cihazın bağlanmasını durdurduğu anlamına gelir:

  • Operatör engellenen cihaz.
  • Hizmetten 500 iç hatası.

Cihaz hata kodları hakkında daha fazla bilgi edinmek için bkz . Cihaz bağlantılarında sorun giderme.

Otomatik yeniden bağlantıları uygulama hakkında daha fazla bilgi edinmek için bkz . Dayanıklı uygulamalar oluşturmak için cihaz yeniden bağlantılarını yönetme.

Yük devretme özelliklerini test edin

Azure CLI, cihaz kodunuzun yük devretme özelliklerini test etmenizi sağlar. CLI komutu, cihaz kaydını geçici olarak farklı bir iç IoT hub'ına geçirerek çalışır. Cihaz yük devretmesinin çalıştığını doğrulamak için cihazın telemetri göndermeye ve komutlara yanıt vermeye devam edip etmediğini denetleyin.

Cihazınız için yük devretme testini çalıştırmak için aşağıdaki komutu çalıştırın:

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

İpucu

Uygulama Kimliğini bulmak için IoT Central uygulamanızda Uygulama > Yönetimi'ne gidin.

Komut başarılı olursa aşağıdaki örneğe benzer bir çıkış görürsünüz:

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

CLI komutu hakkında daha fazla bilgi edinmek için bkz . az iot central device manual-failover.

Artık cihazdan telemetrinin IoT Central uygulamanıza erişmeye devam ettiğini de de kontrol edebilirsiniz.

İpucu

Çeşitli programlama dillerinde yük devretme işlemlerini işleyen örnek cihaz kodunu görmek için bkz . IoT Central yüksek kullanılabilirlik istemcileri.

Sonraki adımlar

Önerilen bazı sonraki adımlar şunlardır: