Digitales Zwillingsmodell erstellen
Erstellen Sie ein digitales Zwillingsmodell für Ihr Internet of Things (IoT).
- Bei einem digitalen Zwillingsmodell wird ein Digital Twin Model Identifier (DTMI) als eindeutige ID verwendet. Beispiel:
dtmi:com:oracle:iot:connectable;1 - Der erforderliche Kontext des digitalen Zwillingsmodells gibt an, dass das digitale Zwillingsmodell DTDL v3 verwendet:
dtmi:dtdl:context;3 - Verwenden Sie in digitalen Zwillingsmodellen JSON-Schemavalidierungsspezifikationen, um Validierungseigenschaften zu den validierten aufgenommenen Daten hinzuzufügen. Weitere Informationen zur Verwendung der DTMI-Erweiterung in Ihrem digitalen Zwillingsmodell finden Sie unter Szenario: JSON-Schemavalidierung zu einem digitalen Zwillingsmodell hinzufügen.
Eine digitale Zwillingsinstanz erfordert ein digitales Zwillingsmodell und einen digitalen Zwillingsadapter, um Daten von einem Gerät zu empfangen, das strukturierte Daten sendet. Spezielle Beispiele finden Sie unter Szenarios.
Digital Twins Definition Language (DTDL) v3 wird auf GitHub vom Digital Twin Consortium unterstützt. Achten Sie unbedingt darauf:
- MQTT-Erweiterungen und beschreibbare Eigenschaften werden nicht unterstützt. Wenn eine Eigenschaft
writableenthalten ist, muss sie auffalsegesetzt werden. - Nur die
contentinnerhalb der Komponente kann alshistorizedannotiert werden. Dies gibt an, dass die IoT-Plattform die Telemetrie der Zeitreihen dieses Sensors beibehalten muss (siehe Beispiel für das digitale Zwillingsmodelldtdl-model-specifications.jsonunten).
Wenn Sie eine digitale Zwillingsinstanz erstellen möchten, ohne Daten von einem Gerät aufzunehmen, können Sie eine digitale Zwillingsinstanz ohne einen digitalen Zwillingsadapter und ohne den Authentifizierungs-ID-Parameter --auth-id erstellen. Das zugehörige digitale Zwillingsmodell darf keine Telemetrie oder Eigenschaften enthalten. Nachdem Sie eine Instanz für digitale Zwillinge erstellt haben, können Sie eine Beziehung für digitale Zwillinge erstellen, um Ihre IoT-Umgebung ohne die Komplexität von Daten oder Authentifizierung zu simulieren.
- Wählen Sie auf der Listenseite IoT-Domains die IoT-Domain aus, mit der Sie arbeiten möchten. Informationen zum Suchen der Listenseite für IoT-Domains finden Sie unter IoT-Domains auflisten.
- Wählen Sie die Registerkarte Digitale Zwillingsmodelle und dann Erstellen aus.
- Geben Sie einen Namen und optional eine benutzerfreundliche Beschreibung ein. Geben Sie dabei keine vertraulichen Informationen ein.
- Wählen Sie eine Option, um die DTDL-Spezifikation des Modells hinzuzufügen:
- Um die Datei
dtdl-specification.jsonhochzuladen, wählen Sie Spezifikation hochladen aus. Ziehen Sie eine.json-Datei mit der DTDL-Spezifikation für dieses digitale Zwillingsmodell per Drag-and-Drop, oder wählen Sie sie aus. - Um die
JSONfür das digitale Zwillingsmodell hinzuzufügen, wählen Sie Spezifikation einfügen aus.
- Um die Datei
- Tags: (Optional) Fügen Sie dem digitalen Zwillingsmodell ein oder mehrere Tags hinzu. Wenn Sie über Berechtigungen zum Erstellen einer Ressource verfügen, sind Sie auch berechtigt, Freiformtags auf diese Ressource anzuwenden. Um ein definiertes Tag zuzuweisen, benötigen Sie die Berechtigungen zum Verwenden des Tag-Namespace. Weitere Informationen zum Tagging finden Sie unter Ressourcentags. Wenn Sie nicht sicher sind, ob Tags angewendet werden sollen, überspringen Sie diese Option, oder fragen Sie einen Administrator. Sie können Tags später anwenden.
- Wählen Sie Erstellen.
Details des digitalen Zwillingsmodells anzeigen. Kopieren Sie die zugehörige IoT-Domain-OCID, das digitale Zwillingsmodell DTMI oder die OCID des digitalen Zwillingsmodells.
Wählen Sie die zugehörige Registerkarte aus, um die DTDL-Spezifikation, die zugehörigen digitalen Zwillingsinstanzen, zugehörige digitale Zwillingsadapter oder Tags für dieses digitale Zwillingsmodell anzuzeigen.
Verwenden Sie den Befehl oci iot digital-twin-model create und die erforderlichen Parameter, um ein digitales Zwillingsmodell in einer bestimmten IoT-Domain zu erstellen. Geben Sie die Spezifikationen als JSON-Inhalt direkt in der Befehlszeile oder als Datei an, die in der Befehlszeile referenziert wird:
Inlinebeispiel: Dieses Beispiel zeigt, wie Sie die JSON-Spezifikationen direkt in der Befehlszeile angeben:
oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec '{"@context": ["dtmi:dtdl:context;3", "dtmi:dtdl:extension:historization;1", "dtmi:dtdl:extension:quantitativeTypes;1", "dtmi:com:oracle:dtdl:extension:validation;1"], "@id": "dtmi:com:oracle:iot:sample:hvac:UgNaNWHbzK;1", "@type": "Interface", "contents": [{"@type": ["Telemetry", "Temperature"], "name": "temperature", "schema": "integer", "unit": "degreeFahrenheit"}, {"@type": ["Telemetry", "Historized", "Validated"], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100}, {"@type": ["Property", "Historized"], "name": "location", "schema": "point", "writable": true}, {"@type": ["Property", "Validated"], "name": "serialNumber", "schema": "string", "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$"}]}'Beispiel für Dateireferenzen: In diesem Beispiel wird gezeigt, wie Sie eine Datei
dtdl-model-specifications.jsonerstellen, die Ihre Spezifikationen enthält, und wie Sie die Datei.jsonim Befehl referenzieren. Das Format kann je nach Betriebssystem variieren. Weitere Informationen zum Referenzieren von Dateien finden Sie unter JSON-Datei für komplexe Eingaben verwenden:oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-model-specifications.jsonIn diesem Snippet aus dem Beispiel des digitalen Zwillingsmodells unten:- Beachten Sie, dass der Wert
humidityalshistorized-Telemetrie annotiert wird. Daher wird jeder Feuchtigkeitsstand als Zeitreihenmessung mit einemtimeObserved-Zeitstempel gespeichert, anstatt nur den neuesten Wert aufzuzeichnen. - Außerdem wird validiert, dass es sich um eine
integerim Bereich0–100handelt. Nur der Inhalt innerhalb einer Komponente kann als historisierter Hinweis auf diese@type-Deklaration im folgenden Beispiel mit Anmerkungen versehen werden.
{ "@type": ["Telemetry","Historized","Validated"], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100 }In diesem HLK-Modell,dtdl-model-specifications.json- Dieses Modell basiert auf der DTDL v3-Spezifikation und enthält einen Digital Twin Model Identifier (DTMI) als eindeutige ID:
@id: "dtmi:com:oracle:iot:sample:hvac:<unique-id>;1" - Dieses Beispielmodell für digitale Zwillinge ermöglicht die Historisierung, qualitative Typen und Validierungserweiterungskontexte. Siehe Referenz zu DTMI Validation Extension.
- Wie im Snippet oben beschrieben, wird die
humidity-Telemetrie mitHistorizedannotiert, sodass die Feuchtigkeitswerte als Zeitreihendaten beibehalten werden, und die Messwerte im Zeitverlauf. - Die Telemetrie
locationwird alsHistorizedannotiert, sodass Änderungen am Speicherort auch im Laufe der Zeit beibehalten werden. Dabei wird die Standorthistorie der Eigenschaft mit einem Audittrail aufgezeichnet. - Die
temperature-Telemetrie wird nicht mit "Historisiert" annotiert. Dabei wird nur der letzte bekannte Wert aufgezeichnet, der für eine andere Downstream-Persistence konfiguriert wurde. - Die Eigenschaft
serialNumberwird mit einem regulären Ausdrucksmuster alsValidatedmarkiert und nicht als "Historisiert" annotiert. Daher wird nur der aktuelle oder der letzte Wert beibehalten, keine historische Verfolgung von Änderungen.
{ "@context": [ "dtmi:dtdl:context;3", "dtmi:dtdl:extension:historization;1", "dtmi:dtdl:extension:quantitativeTypes;1", "dtmi:com:oracle:dtdl:extension:validation;1" ], "@id": "dtmi:com:oracle:iot:sample:hvac:UgNaNWHbzK;1", "@type": "Interface", "contents": [ { "@type": [ "Telemetry", "Temperature" ], "name": "temperature", "schema": "integer", "unit": "degreeFahrenheit" }, { "@type": [ "Telemetry", "Historized", "Validated" ], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100 }, { "@type": [ "Property", "Historized" ], "name": "location", "schema": "point", "writable": false }, { "@type": [ "Property", "Validated" ], "name": "serialNumber", "schema": "string", "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$" } ] }Diese CLI-Beispielantwort zeigt, dass das digitale Zwillingsmodell für die Domain IoT mit einer DTMI-URI erstellt wurde:
dtmi:com:oracle:iot:sample:hvac:unique-id;1:{ "data": { "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/user", "CreatedOn": "2025-08-05T17:43:00.438Z" } }, "description": null, "display-name": "HVAC", "freeform-tags": {}, "id": "<iot-digital-twin-model-OCID>", "iot-domain-id": "<iot-domain-OCID>", "lifecycle-state": "ACTIVE", "spec-uri": "dtmi:com:oracle:iot:sample:hvac:unique-id;1", "system-tags": {}, "time-created": "2025-08-05T17:43:00.508000+00:00", "time-updated": "2025-08-05T17:43:00.508000+00:00" }, "etag": "<unique-id>" }Eine vollständige Liste der Parameter und Werte für CLI-Befehle finden Sie in CLI-Befehlsreferenz
- Beachten Sie, dass der Wert
Führen Sie den Vorgang CreateDigitalTwinModel aus, um ein Modell für digitale Zwillinge in der spezifischen IoT-Domain zu erstellen.
Beispielanforderung:
POST /20250531/digitalTwinModels content-type: application/json+ld { "@context": ["dtmi:dtdl:context;3"], "@id": "dtmi:com:oracle:labauto:SmartSpecimenVault;1", "@type": "Interface", "extends": "dtmi:com:oracle:iot:connectable;1", "displayName": "HVAC", "contents": [ {"@type": "Telemetry", "name": "temperature", "schema": "integer"}, {"@type": "Telemetry", "name": "humidity", "schema": "integer", "minimum":0, "maximum": 100}, {"@type": "Property", "name": "desiredTemperature", "schema": "integer", "writable": false}, {"@type": "Property", "name": "serialNumber", "schema": "string"} ] }Beispielantwort:
header: content-type: application/json Body: { "id": "<digital-twin-model-OCID>" "displayName": "<your-HVAC-display-name>", "description": "<digital-twin-model-for-HVAC>" "lifecycleState": "ACTIVE", "freeformTags": {}, "definedTags": { "Oracle-Tags": { "CreatedBy": "default/user@oracle.com", "CreatedOn": "2024-07-22T10:24:53.446Z" } }, "specUri": "dtmi:com:oracle:labauto:SmartSpecimenVault;1" "timeCreated": "2025-01-13T10:24:53Z", "timeUpdated": "2025-01-14T17:15:21Z" }