Клиентская библиотека репозитория моделей Интернета вещей Azure для Python — версия 1.0.0a20220330001
Библиотека репозитория моделей Интернета вещей Azure для Python предоставляет функциональные возможности для работы с репозиторием моделей Интернета вещей Azure.
Начало работы
Установка пакета
Установите библиотеку репозитория моделей Интернета вещей Azure для Python с помощью pip:
pip install azure-iot-modelsrepository
Предварительные требования
- Репозиторий моделей в соответствии с соглашениями Azure IoT
- Репозиторий моделей можно разместить в локальной файловой системе или на веб-сервере.
- В Azure IoT размещается глобальный репозиторий моделей Интернета вещей Azure , который клиент будет использовать, если пользовательское расположение не указано.
Опубликование моделей
Следуйте руководству по публикации моделей в глобальном репозитории моделей Интернета вещей Azure.
При использовании пользовательского локального или удаленного репозитория можно просто добавить файлы модели в структуру каталогов в расположении репозитория, например. dtmi/com/example/thermostat-1.json
Аутентификация
В настоящее время механизмы проверки подлинности не поддерживаются. Глобальная конечная точка не привязана к подписке Azure и не поддерживает проверку подлинности. Все опубликованные модели предназначены для анонимного общедоступного использования.
Основные понятия
Репозиторий моделей Интернета вещей Azure позволяет разработчикам управлять моделями цифровых двойников и совместно использовать их. Модели представляют собой документы JSON-LD , определенные с помощью языка определения Цифровых двойников (DTDL).
Репозиторий определяет шаблон для хранения интерфейсов DTDL в структуре каталогов на основе идентификатора модели цифрового двойника (DTMI). Интерфейс можно найти в репозитории, преобразовав DTMI в относительный путь. Например, DTMI dtmi:com:example:Thermostat;1
преобразуется в /dtmi/com/example/thermostat-1.json
.
Примеры
В следующих разделах представлено несколько фрагментов, охватывающих общие задачи репозитория моделей:
Инициализация ModelsRepositoryClient
Расположение репозитория
Если во время создания экземпляра расположение репозитория не указано, используется глобальная конечная точка репозитория моделей Интернета вещей Azure (https://devicemodels.azure.com/).
client = ModelsRepositoryClient()
Кроме того, можно указать пользовательское расположение репозитория с помощью необязательного repository_location
ключевого слова . Клиент принимает следующие форматы расположения:
- URL-адрес веб-сайта — например,
"https://contoso.com/models/"
- URI локальной файловой системы — например,
"file:///path/to/repository/"
- Путь к файлу POSIX — например,
"/path/to/repository/"
- Путь к файлу буквы диска — например,
"C:/path/to/repository/"
client = ModelsRepositoryClient(repository_location="https://contoso.com/models/")
Режим разрешения зависимостей
Клиент может быть настроен с дополнительным dependency_resolution
режимом при создании экземпляра, используя одно из следующих значений:
'disabled'
— Клиент не будет разрешать зависимости модели.'enabled'
— Клиент разрешает все зависимости модели.'tryFromExpanded'
— Клиент попытается разрешить модели с помощью расширенного определения модели (если это невозможно, то вернитесь в'enabled'
режим).
client = ModelsRepositoryClient(dependency_resolution="enabled")
dependency_resolution
Если режим не указан:
- Клиенты, настроенные для глобальной конечной точки репозитория моделей Azure IoT, по умолчанию будут использовать
'tryFromExpanded'
- Клиенты, настроенные для пользовательского расположения (удаленного или локального), будут по умолчанию использовать
'enabled'
Дополнительные параметры
Если необходимо переопределить поведение конвейера по умолчанию из библиотеки azure-core, можно указать различные аргументы ключевых слов во время создания экземпляра.
Очистка клиента
Завершив работу с клиентом, обязательно вызовите .close()
, чтобы освободить ресурсы
client = ModelsRepositoryClient()
# Do things
client.close()
Чтобы избежать этого, рекомендуется по возможности использовать клиент из диспетчера контекста, который автоматически закрывается для вас.
with ModelsRepositoryClient() as client:
# Do things
ModelsRepositoryClient — получение моделей
Обратите внимание, что перед их получением модели необходимо сначала опубликовать модели в репозитории . В следующих примерах предполагается, что вы используете глобальный репозиторий моделей Интернета вещей Azure.
Вызов .get_models()
приведет к выбору модели по предоставленному DTMI и, возможно, ее зависимостям (в зависимости от режима разрешения зависимостей). Он возвращает объект dict
, который сопоставляет DTMIs с определениями модели.
dtmi = "dtmi:com:example:TemperatureController;1"
with ModelsRepositoryClient() as client:
models = get_models(dtmi)
print("{} resolved in {} interfaces".format(dtmi, len(models)))
Если вы предоставляете методу несколько DTMIs, можно получить несколько моделей (и потенциально их зависимостей) одновременно.
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)))
По умолчанию клиент будет использовать режим разрешения зависимостей в зависимостей, с помощью которого он был настроен при получении моделей. Однако это поведение можно переопределить, передав любой из допустимых параметров в в качестве необязательного аргумента ключевого слова в .get_models()
dtmi = "dtmi:com:example:TemperatureController;1"
with ModelsRepositoryClient(dependency_resolution="disabled") as client:
models = get_models(dtmi, dependency_resolution="enabled")
Соглашения DTMI
Пакет содержит модуль с именем dtmi_conventions
, который при импорте предоставляет ряд служебных операций для работы с DTMIs.
# 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"
Устранение неполадок
Ведение журнала
Эта библиотека использует стандартную библиотеку ведения журнала для ведения журнала. Сведения о сеансах HTTP (URL-адреса, заголовки и т. д.) регистрируются на DEBUG
уровне.
Исключения
API репозитория моделей могут вызывать исключения, определенные в azure-core.
Кроме того, они могут вызывать исключения, определенные в azure-iot-modelsrepository
:
ModelError
— указывает на ошибку при попытке синтаксического анализа или разрешения определения модели. Как правило, это означает, что существует неправильно сформированная модель, которая не соответствует спецификации модели DTDL.
Отзывы
Если у вас возникли ошибки или есть предложения, откройте проблему.
Дальнейшие действия
Примеры
Дополнительные примеры доступны в репозитории примеров.
Участие
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.
Azure SDK for Python
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по