Digitales Zwillingsmodell erstellen

Erstellen Sie ein digitales Zwillingsmodell für Ihr Internet of Things (IoT).

Ein digitales Zwillingsmodell definiert die Semantik eines digitalen Zwillings und basiert auf den DTDL v3-Spezifikationen. Ein digitales Zwillingsmodell verwendet einen Digital Twin Model Identifier (DTMI) als eindeutige ID.

Beispiel: dtmi:com:oracle:iot:connectable;1

Für eine digitale Zwillingsinstanz sind ein digitales Zwillingsmodell und ein digitaler Zwillingsadapter erforderlich, um strukturierte Gerätedaten zu empfangen. Spezielle Beispiele finden Sie unter Szenarios.

Hinweis

Digital Twins Definition Language (DTDL) v3 wird auf GitHub vom Digital Twin Consortium unterstützt. Es ist wichtig zu beachten, dass MQTT-Erweiterungen und beschreibbare Eigenschaften nicht unterstützt werden.

Wenn eine Eigenschaft writable enthalten ist, muss sie auf false gesetzt werden.

  • 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:

    In diesem Beispiel wird gezeigt, 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}$"}]}'

    In diesem Beispiel wird gezeigt, wie Sie eine Datei dtdl-specifications.json erstellen, die Ihre Spezifikationen enthält, und die Datei im Befehl referenzieren. Weitere Informationen zum Referenzieren von Dateien finden Sie unter JSON-Datei für komplexe Eingaben nutzen:

    oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-specifications.json
    Beispieldatei dtdl-specifications.json basierend auf der DTDL v3-Spezifikation, die eine Digital Twin Model Identifier (DTMI) als eindeutige ID enthält.
    {
      "@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 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

  • 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": true},
            {"@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"
    }