Biblioteka klienta usługi Azure Digital Twins Core dla języka Python — wersja 1.2.0
Ten pakiet zawiera zestaw SDK dla interfejsu API usługi Azure Digital Twins w celu zapewnienia dostępu do usługi Azure Digital Twins na potrzeby zarządzania bliźniaczymi reprezentacjami, modelami, relacjami itp.
Zrzeczenie odpowiedzialności
Obsługa pakietów języka Python zestawu Azure SDK dla języka Python 2.7 została zakończona 01 stycznia 2022 r. Aby uzyskać więcej informacji i pytań, zapoznaj się z artykułem https://github.com/Azure/azure-sdk-for-python/issues/20691
Wprowadzenie
Wprowadzenie
Azure Digital Twins to platforma deweloperów dla rozwiązań IoT nowej generacji, która umożliwia tworzenie, uruchamianie i zarządzanie reprezentacjami cyfrowymi środowiska biznesowego, bezpieczne i wydajne w chmurze. Dzięki usłudze Azure Digital Twins tworzenie reprezentacji stanu operacyjnego na żywo jest szybkie i ekonomiczne, a reprezentacje cyfrowe pozostają aktualne przy użyciu danych w czasie rzeczywistym z IoT i innych źródeł danych. Jeśli dopiero zaczynasz korzystać z usługi Azure Digital Twins i chcesz dowiedzieć się więcej na temat platformy, zapoznaj się z oficjalną stroną dokumentacji usługi Azure Digital Twins.
Aby zapoznać się z wprowadzeniem do programowania w usłudze Azure Digital Twins, odwiedź stronę samouczka kodowania , aby uzyskać łatwy przewodnik krok po kroku. Odwiedź ten samouczek , aby dowiedzieć się, jak korzystać z wystąpienia usługi Azure Digital Twin przy użyciu aplikacji klienckiej wiersza polecenia. Na koniec, aby uzyskać szybki przewodnik po tworzeniu kompleksowego rozwiązania usługi Azure Digital Twins opartego na danych na żywo ze środowiska, upewnij się, że zapoznasz się z tym pomocnym przewodnikiem.
Przewodniki wymienione powyżej mogą ułatwić rozpoczęcie pracy z kluczowymi elementami usługi Azure Digital Twins, takimi jak tworzenie wystąpień usługi Azure Digital Twins, modeli, grafów bliźniaczych itp. Skorzystaj z poniższego przewodnika przykładowego, aby zapoznać się z różnymi interfejsami API, które ułatwiają programowanie w usłudze Azure Digital Twins.
Jak zainstalować
Zainstaluj usługę [azure-digitaltwins-core][pypi_package_keys] i azure-identity przy użyciu narzędzia pip:
pip install azure-digitaltwins-core azure-identity
usługa azure-identity jest używana do uwierzytelniania usługi Azure Active Directory, jak pokazano poniżej.
Sposób użycia
Uwierzytelnianie, uprawnienie
Aby utworzyć nowego klienta usługi Digital Twins, potrzebny jest punkt końcowy do wystąpienia i poświadczeń usługi Azure Digital Twin.
W poniższych przykładach AZURE_URL
należy ustawić zmienne środowiskowe , AZURE_TENANT_ID
, AZURE_CLIENT_ID
i AZURE_CLIENT_SECRET
.
Klient wymaga wystąpienia tokenuCredential lub ServiceClientCredentials.
W tych przykładach pokazano, jak używać jednej klasy pochodnej: DefaultAzureCredentials.
Uwaga: aby uzyskać dostęp do płaszczyzny danych dla usługi Digital Twins, jednostka musi mieć uprawnienia. W tym celu użyj polecenia interfejsu wiersza polecenia platformy Azure:
az dt rbac assign-role --assignee '<user-email | application-id>' --role owner -n '<your-digital-twins-instance>'
Wartość domyślnaAzureCredential obsługuje różne mechanizmy uwierzytelniania i określa odpowiedni typ poświadczeń oparty na środowisku, w których jest wykonywany. Próbuje użyć wielu typów poświadczeń w kolejności, dopóki nie znajdzie działającego poświadczenia.
Przykładowy kod
# DefaultAzureCredential supports different authentication mechanisms and determines the appropriate credential type based of the environment it is executing in.
# It attempts to use multiple credential types in an order until it finds a working credential.
# - AZURE_URL: The URL to the ADT in Azure
url = os.getenv("AZURE_URL")
# DefaultAzureCredential expects the following three environment variables:
# - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
# - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
# - AZURE_CLIENT_SECRET: The client secret for the registered application
credential = DefaultAzureCredential()
service_client = DigitalTwinsClient(url, credential)
Kluczowe pojęcia
Azure Digital Twins to usługa IoT platformy Azure, która umożliwia tworzenie kompleksowych modeli środowiska fizycznego. Umożliwia ona tworzenie grafów analizy przestrzennej do modelowania relacji i interakcji między osobami, obszarami i urządzeniami. Więcej informacji na temat usługi Azure Digital Twins można uzyskać, odwiedzając dokumentację usługi Azure Digital Twins.
Przykłady
Interfejsy API cyfrowych reprezentacji bliźniaczych (przy użyciu biblioteki klienta) można eksplorować przy użyciu projektu przykładów.
W projekcie przykładów przedstawiono następujące kwestie:
- Tworzenie wystąpienia klienta
- Tworzenie, pobieranie i likwidowanie modeli
- Tworzenie, wykonywanie zapytań i usuwanie cyfrowej reprezentacji bliźniaczej
- Pobieranie i aktualizowanie składników cyfrowej reprezentacji bliźniaczej
- Tworzenie, pobieranie i usuwanie relacji między bliźniaczymi reprezentacjami cyfrowymi
- Tworzenie, pobieranie i usuwanie tras zdarzeń dla cyfrowej reprezentacji bliźniaczej
- Publikowanie komunikatów telemetrycznych w składniku cyfrowej reprezentacji bliźniaczej i cyfrowej reprezentacji bliźniaczej
Tworzenie, wyświetlanie listy, likwidowanie i usuwanie modeli
Tworzenie modeli
Utwórzmy modele przy użyciu poniższego kodu. Musisz przekazać tablicę zawierającą listę modeli.
temporary_component = {
"@id": component_id,
"@type": "Interface",
"@context": "dtmi:dtdl:context;2",
"displayName": "Component1",
"contents": [
{
"@type": "Property",
"name": "ComponentProp1",
"schema": "string"
},
{
"@type": "Telemetry",
"name": "ComponentTelemetry1",
"schema": "integer"
}
]
}
temporary_model = {
"@id": model_id,
"@type": "Interface",
"@context": "dtmi:dtdl:context;2",
"displayName": "TempModel",
"contents": [
{
"@type": "Property",
"name": "Prop1",
"schema": "string"
},
{
"@type": "Component",
"name": "Component1",
"schema": component_id
},
{
"@type": "Telemetry",
"name": "Telemetry1",
"schema": "integer"
}
]
}
new_models = [temporary_component, temporary_model]
models = service_client.create_models(new_models)
print('Created Models:')
print(models)
Wyświetlanie listy modeli
Pobieranie wszystkich utworzonych modeli przy użyciu polecenia list_models
listed_models = service_client.list_models()
for model in listed_models:
print(model)
Pobieranie modelu
Użyj get_model
unikatowego identyfikatora modelu, aby uzyskać określony model.
# Get a model
get_model = service_client.get_model(model_id)
print('Get Model:')
print(get_model)
Likwiduj model
Aby dekommisować model, przekaż identyfikator modelu dla modelu, który chcesz dekommisji.
# Decommission a model
service_client.decommission_model(model_id)
Usuwanie modelu
Aby usunąć model, przekaż identyfikator modelu dla modelu, który chcesz usunąć.
# Delete a model
service_client.delete_model(model_id)
Tworzenie i usuwanie cyfrowych reprezentacji bliźniaczych
Tworzenie cyfrowych reprezentacji bliźniaczych
W przypadku tworzenia bliźniaczej reprezentacji należy podać identyfikator cyfrowej reprezentacji bliźniaczej, takiej jak my_twin
i aplikacja/json digital twin na podstawie utworzonego wcześniej modelu. Przykładowa aplikacja/kod json można znaleźć tutaj.
digital_twin_id = 'digitalTwin-' + str(uuid.uuid4())
temporary_twin = {
"$metadata": {
"$model": model_id
},
"$dtId": digital_twin_id,
"Prop1": 42
}
created_twin = service_client.upsert_digital_twin(digital_twin_id, temporary_twin)
print('Created Digital Twin:')
print(created_twin)
Uzyskiwanie cyfrowej reprezentacji bliźniaczej
Uzyskanie cyfrowej reprezentacji bliźniaczej jest niezwykle łatwe.
get_twin = service_client.get_digital_twin(digital_twin_id)
print('Get Digital Twin:')
print(get_twin)
Wykonywanie zapytań dotyczących cyfrowych reprezentacji bliźniaczych
Wykonaj zapytanie dotyczące wystąpienia usługi Azure Digital Twins dla cyfrowych reprezentacji bliźniaczych przy użyciu usługi Azure Digital Twins Query Store lanaguage. Wywołania zapytań obsługują stronicowanie. Oto przykład sposobu wykonywania zapytań dotyczących cyfrowych reprezentacji bliźniaczych i iteracji wyników.
Należy pamiętać, że może wystąpić opóźnienie między zmianami w wystąpieniu, które zostaną odzwierciedlone w zapytaniach. Aby uzyskać więcej informacji na temat ograniczeń zapytań, zobacz (/azure/digital-twins/how-to-query-graph#query-limitations)
query_expression = 'SELECT * FROM digitaltwins'
query_result = service_client.query_twins(query_expression)
print('DigitalTwins:')
for twin in query_result:
print(twin)
Usuwanie cyfrowych reprezentacji bliźniaczych
Usuń cyfrową reprezentację bliźniaczą po prostu, podając identyfikator cyfrowej reprezentacji bliźniaczej, jak pokazano poniżej.
service_client.delete_digital_twin(digital_twin_id)
Pobieranie i aktualizowanie składników cyfrowej reprezentacji bliźniaczej
Aktualizowanie składników cyfrowej reprezentacji bliźniaczej
Aby zaktualizować składnik lub innymi słowy, usunąć i/lub dodać właściwość składnika lub podwłaściwość w usłudze Digital Twin, musisz mieć identyfikator cyfrowej reprezentacji bliźniaczej, nazwy składnika i operacji application/json-patch+json do wykonania w składniku określonej reprezentacji cyfrowej bliźniaczej. Oto przykładowy kod dotyczący tego, jak to zrobić.
component_name = "Component1"
patch = [
{
"op": "replace",
"path": "/ComponentProp1",
"value": "value2"
}
]
service_client.update_component(digital_twin_id, component_name, patch)
Pobieranie składników cyfrowej reprezentacji bliźniaczej
Pobierz składnik, podając nazwę składnika i identyfikator cyfrowej reprezentacji bliźniaczej, do której należy.
get_component = service_client.get_component(digital_twin_id, component_name)
print('Get Component:')
print(get_component)
Tworzenie i wyświetlanie listy relacji cyfrowej reprezentacji bliźniaczej
Tworzenie relacji cyfrowej reprezentacji bliźniaczej
upsert_relationship
Tworzy relację na cyfrowej reprezentacji bliźniaczej dostarczonej z identyfikatorem cyfrowej reprezentacji bliźniaczej, nazwy relacji, takiej jak "contains", identyfikator relacji, takiej jak "FloorContainsRoom" i relacja aplikacji/json, która ma zostać utworzona. Musi zawierać właściwość z kluczem "$targetId", aby określić element docelowy relacji. Przykładowe ładunki relacji można znaleźć tutaj.
hospital_relationships = [
{
"$relationshipId": "BuildingHasFloor",
"$sourceId": building_twin_id,
"$relationshipName": "has",
"$targetId": floor_twin_id,
"isAccessRestricted": False
},
{
"$relationshipId": "BuildingIsEquippedWithHVAC",
"$sourceId": building_twin_id,
"$relationshipName": "isEquippedWith",
"$targetId": hvac_twin_id
},
{
"$relationshipId": "HVACCoolsFloor",
"$sourceId": hvac_twin_id,
"$relationshipName": "controlsTemperature",
"$targetId": floor_twin_id
},
{
"$relationshipId": "FloorContainsRoom",
"$sourceId": floor_twin_id,
"$relationshipName": "contains",
"$targetId": room_twin_id
}
]
for relationship in hospital_relationships:
service_client.upsert_relationship(
relationship["$sourceId"],
relationship["$relationshipId"],
relationship
)
Wyświetlanie listy relacji cyfrowej reprezentacji bliźniaczej
list_relationships
i list_incoming_relationships
wyświetla listę wszystkich relacji i wszystkich relacji przychodzących odpowiednio cyfrowej reprezentacji bliźniaczej.
relationships = service_client.list_relationships(digital_twint_id)
for relationship in relationships:
print(relationship)
incoming_relationships = service_client.list_incoming_relationships(digital_twin_id)
for incoming_relationship in incoming_relationships:
print(incoming_relationship)
Tworzenie, wyświetlanie listy i usuwanie tras zdarzeń cyfrowych reprezentacji bliźniaczych
Tworzenie tras zdarzeń
Aby utworzyć trasę zdarzenia, podaj identyfikator trasy zdarzeń, taką jak "myEventRouteId" i dane trasy zdarzeń zawierające punkt końcowy i opcjonalny filtr, jak pokazano poniżej.
event_route_id = 'eventRoute-' + str(uuid.uuid4())
event_filter = "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'"
route = DigitalTwinsEventRoute(
endpoint_name=event_hub_endpoint_name,
filter=event_filter
)
service_client.upsert_event_route(event_route_id, route)
Aby uzyskać więcej informacji na temat języka filtrowania tras zdarzeń, zobacz dokumentację dotyczącą zdarzeń filtru "jak zarządzać trasami".
Wyświetlanie listy tras zdarzeń
Wyświetl listę określonej trasy zdarzenia podanego identyfikatora trasy zdarzenia lub wszystkie opcje ustawiania tras zdarzeń za pomocą polecenia list_event_routes
.
event_routes = service_client.list_event_routes()
for event_route in event_routes:
print(event_route)
Usuwanie tras zdarzeń
Usuń trasę zdarzenia o identyfikatorze trasy zdarzenia.
service_client.delete_event_route(event_route_id)
Publikowanie komunikatów telemetrycznych dla cyfrowej reprezentacji bliźniaczej
Aby opublikować komunikat telemetrii dla cyfrowej reprezentacji bliźniaczej, należy podać identyfikator cyfrowej reprezentacji bliźniaczej wraz z ładunkiem, na którym wymagana jest aktualizacja telemetrii.
digita_twin_id = "<DIGITAL TWIN ID>"
telemetry_payload = '{"Telemetry1": 5}'
service_client.publish_telemetry(
digita_twin_id,
telemetry_payload
)
Możesz również opublikować komunikat telemetryczny dla określonego składnika w cyfrowej reprezentacji bliźniaczej. Oprócz identyfikatora cyfrowej reprezentacji bliźniaczej i ładunku należy określić identyfikator składnika docelowego.
digita_twin_id = "<DIGITAL TWIN ID>"
component_name = "<COMPONENT_NAME>"
telemetry_payload = '{"Telemetry1": 5}'
service_client.publish_component_telemetry(
digita_twin_id,
component_name,
telemetry_payload
)
Rozwiązywanie problemów
Rejestrowanie
Ta biblioteka używa standardowej biblioteki rejestrowania do rejestrowania. Podstawowe informacje o sesjach HTTP (adresach URL, nagłówkach itp.) są rejestrowane na poziomie INFORMACJI.
Szczegółowe rejestrowanie na poziomie DEBUG, w tym treści żądań/odpowiedzi i nieredagowanych nagłówków, można włączyć na kliencie z argumentem słowa kluczowego logging_enable:
Rejestrowanie na poziomie klienta
import sys
import logging
# Create logger
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# Create service client and enable logging for all operations
service_client = DigitalTwinsClient(url, credential, logging_enable=True)
Rejestrowanie na poziomie operacji
import sys
import logging
# Create logger
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# Get model with logging enabled
model = service_client.get_model(model_id, logging_enable=True)
Konfiguracja opcjonalna
Opcjonalne argumenty słów kluczowych można przekazać na poziomie klienta i na poziomie operacji. W dokumentacji referencyjnej platformy Azure opisano dostępne konfiguracje ponownych prób, rejestrowania, protokołów transportowych i nie tylko.
Następne kroki
Przekazywanie opinii
Jeśli wystąpią usterki lub masz sugestie, otwórz problem.
Współtworzenie
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.
Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Wystarczy zrobić to raz dla wszystkich repozytoriów, w przypadku których jest używana nasza umowa CLA.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.
Azure SDK for Python