Aracılığıyla paylaş


Python için Azure IoT Modelleri Deposu istemci kitaplığı - sürüm 1.0.0a20220330001

Python için Azure IoT Modelleri Deposu Kitaplığı, Azure IoT Modelleri Deposu ile çalışmaya yönelik işlevsellik sağlar

Başlarken

Paketi yükleme

Pip ile Python için Azure IoT Modelleri Deposu kitaplığını yükleyin:

pip install azure-iot-modelsrepository

Önkoşullar

Yayımlama Modelleri

Modelleri genel Azure IoT Modelleri Deposu'nda yayımlamak için kılavuzu izleyin.

Özel bir yerel veya uzak depo kullanıyorsanız, model dosyalarınızı depo konumundaki bir dizin yapısına ekleyebilirsiniz, örneğin. dtmi/com/example/thermostat-1.json

Kimlik Doğrulaması

Şu anda hiçbir kimlik doğrulama mekanizması desteklenmemektedir. Genel uç nokta bir Azure aboneliğine bağlı değildir ve kimlik doğrulamasını desteklemez. Yayımlanan tüm modeller anonim genel kullanıma yönelik olarak hazırlanmıştır.

Önemli kavramlar

Azure IoT Modelleri Deposu, oluşturucuların dijital ikiz modellerini yönetmesine ve paylaşmasına olanak tanır. Modeller, Digital Twins Tanım Dili (DTDL) kullanılarak tanımlanan JSON-LD belgeleridir.

Depo, DTDL arabirimlerini Dijital İkiz Modeli Tanımlayıcısı'nı (DTMI) temel alan bir dizin yapısında depolamak için bir desen tanımlar. DTMI'yi göreli yola dönüştürerek depodaki bir arabirimi bulabilirsiniz. Örneğin, DTMI dtmi:com:example:Thermostat;1 olarak çevrilir /dtmi/com/example/thermostat-1.json.

Örnekler

Aşağıdaki bölümlerde, yaygın Models Repository görevlerini kapsayan çeşitli kod parçacıkları sağlanır:

ModelsRepositoryClient Başlatma

Depo Konumu

Örnekleme sırasında depo konumu sağlanmazsa Azure IoT Modelleri Deposu genel uç noktası (https://devicemodels.azure.com/) kullanılır

client = ModelsRepositoryClient()

Alternatif olarak, isteğe bağlı repository_location anahtar sözcüğü aracılığıyla deponuzun bulunduğu yer için özel bir konum sağlayabilirsiniz. İstemci aşağıdaki konum biçimlerini kabul eder:

  • Web URL'si - örn. "https://contoso.com/models/"
  • Yerel Dosya Sistemi URI'si - örn. "file:///path/to/repository/"
  • POSIX dosya yolu - örn. "/path/to/repository/"
  • Sürücü harfi dosya yolu - örn. "C:/path/to/repository/"
client = ModelsRepositoryClient(repository_location="https://contoso.com/models/")

Bağımlılık Çözümleme Modu

İstemci, örnek oluşturma sırasında aşağıdaki değerlerden biri kullanılarak isteğe bağlı dependency_resolution bir modla yapılandırılabilir:

  • 'disabled' - İstemci model bağımlılıklarını çözmez
  • 'enabled' - İstemci tüm model bağımlılıklarını çözer
  • 'tryFromExpanded' - İstemci genişletilmiş model tanımı kullanarak modelleri çözümlemeye çalışır (mümkün değilse moda geri döner 'enabled' )
client = ModelsRepositoryClient(dependency_resolution="enabled")

dependency_resolution Mod belirtilmezse:

  • Azure IoT Modelleri Deposu genel uç noktası için yapılandırılan istemciler varsayılan olarak 'tryFromExpanded'
  • Özel bir konum (uzak veya yerel) için yapılandırılan istemciler varsayılan olarak 'enabled'

Ek Seçenekler

Azure-core kitaplığından varsayılan işlem hattı davranışını geçersiz kılmanız gerekiyorsa, örnekleme sırasında çeşitli anahtar sözcük bağımsız değişkenleri sağlayabilirsiniz.

İstemci temizleme

İstemcinizle işiniz bittiğinde kaynakları boşaltmak için arama .close() yaptığınızdan emin olun

client = ModelsRepositoryClient()
# Do things
client.close()

Bunu yapmak zorunda kalmamak için mümkün olduğunda istemcinizi bağlam yöneticisi içinden kullanmanız önerilir; bu sizin için otomatik olarak kapatılır

with ModelsRepositoryClient() as client:
    # Do things

ModelsRepositoryClient - Modelleri Alma

Modelleri getirebilmek için önce deponuzda yayımlamanız gerektiğini unutmayın. Aşağıdaki örneklerde genel Azure IoT Modelleri Deposunu kullandığınız varsayılır.

Çağrısı .get_models() , modeli sağlanan DTMI'da ve potansiyel olarak bağımlılıklarında getirir (bağımlılık çözümleme moduna bağlı olarak). DTMI'leri model tanımlarına eşleyen bir dict döndürür.

dtmi = "dtmi:com:example:TemperatureController;1"
with ModelsRepositoryClient() as client:
    models = get_models(dtmi)
print("{} resolved in {} interfaces".format(dtmi, len(models)))

yöntemine birden çok DTMI sağlarsanız, aynı anda birden çok model (ve potansiyel olarak bağımlılıkları) alabilirsiniz

dtmis = ["dtmi:com:example:TemperatureController;1", "dtmi:com:example:azuresphere:sampledevice;1"]
with ModelsRepositoryClient() as client:
    models = get_models(dtmis)
print("{} resolved in {} interfaces".format(dtmi, len(models)))

varsayılan olarak istemci, modelleri alırken örnekleme sırasında yapılandırıldığı bağımlılık çözümleme modunu kullanır. Ancak bu davranış, içinde geçerli seçeneklerden herhangi biri isteğe bağlı anahtar sözcük bağımsız değişkeni olarak geçirilerek geçersiz kılınabilir .get_models()

dtmi = "dtmi:com:example:TemperatureController;1"
with ModelsRepositoryClient(dependency_resolution="disabled") as client:
    models = get_models(dtmi, dependency_resolution="enabled")

DTMI Kuralları

Paket, içeri aktarıldığında DTMI'lerle çalışmak için bir dizi yardımcı program işlemi sağlayan adlı dtmi_conventionsbir modül içerir.

# Returns True - this is a valid DTMI
dtmi_conventions.is_valid_dtmi("dtmi:com:example:Thermostat;1")

# Returns False - this is NOT a valid DTMI
dtmi_conventions.is_valid_dtmi("dtmi:com:example:Thermostat")
dtmi = "dtmi:com:example:Thermostat;1"

# Local repository example
repo_uri = "file:///path/to/repository"
print(dtmi_conventions.get_model_uri(dtmi, repo_uri))
# Prints: "file:///path/to/repository/dtmi/com/example/thermostat-1.json"
print(dtmi_conventions.get_model_uri(dtmi, repo_uri, expanded=True))
# Prints: "file:///path/to/repository/dtmi/com/example/thermostat-1.expanded.json"

# Remote repository example
repo_uri = "https://contoso.com/models/"
print(dtmi_conventions.get_model_uri(dtmi, repo_uri))
# Prints: "https://contoso/com/models/dtmi/com/example/thermostat-1.json"
print(dtmi_conventions.get_model_uri(dtmi, repo_uri, expanded=True))
# Prints: "https://contoso/com/models/dtmi/com/example/thermostat-1.expanded.json"

Sorun giderme

Günlüğe Kaydetme

Bu kitaplık, günlüğe kaydetme için standart günlük kitaplığını kullanır. HTTP oturumları (URL'ler, üst bilgiler vb.) hakkındaki bilgiler düzeyinde günlüğe kaydedilir DEBUG .

Özel durumlar

Models Repository API'leri azure-core'da tanımlanan özel durumlara neden olabilir.

Ayrıca, içinde azure-iot-modelsrepositorytanımlanan özel durumlar oluşturabilirler:

  • ModelError - Model tanımını ayrıştırmaya/çözmeye çalışırken bir hata oluştuğuna işaret eder. Bu genellikle model DTDL belirtimine uymayan hatalı biçimlendirilmiş bir model olduğu anlamına gelir

Geri Bildirim Sağlama

Hatalarla karşılaşırsanız veya önerileriniz varsa lütfen bir sorun açın.

Sonraki adımlar

Örnekler

Örnek deposunda ek örnekler mevcuttur.

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorular veya yorumlarla iletişime geçin opencode@microsoft.com .