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
- Azure IoT kurallarını izleyen model deposu
- Modeller deposu yerel dosya sisteminde veya bir web sunucusunda barındırılabilir
- Azure IoT, özel konum sağlanmazsa istemcinin kullanacağı genel Azure IoT Modelleri Deposunu barındırıyor
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_conventions
bir 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-modelsrepository
tanı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 .
Azure SDK for Python
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin