Creación de un modelo gemelo digital

Cree un modelo de gemelo digital para su Internet of Things (IoT).

Un modelo de gemelo digital define la semántica de un gemelo digital y se basa en las especificaciones de DTDL v3. Un modelo gemelo digital utiliza un identificador de modelo gemelo digital (DTMI) como identificador único.

Por ejemplo: dtmi:com:oracle:iot:connectable;1

Una instancia gemela digital requiere un modelo gemelo digital y un adaptador gemelo digital para recibir datos estructurados del dispositivo. Para ver ejemplos específicos, consulte Escenarios.

Nota

El Digital Twin Consortium admite v3 Digital Twins Definition Language (DTDL) en GitHub. Es importante tener en cuenta que las extensiones MQTT y las propiedades de escritura no están soportadas.

Si se incluye una propiedad writable, se debe definir en false.

  • Utilice el comando oci iot digital-twin-model create y los parámetros necesarios para crear un modelo de gemelo digital en un dominio IoT específico. Proporcione las especificaciones como contenido JSON directamente en la línea de comandos o como archivo al que se hace referencia en la línea de comandos:

    En este ejemplo, se muestra cómo proporcionar las especificaciones JSON directamente en la línea de comandos:

    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}$"}]}'

    En este ejemplo se muestra cómo crear un archivo dtdl-specifications.json que contenga las especificaciones y haga referencia al archivo en el comando. Para obtener más información sobre la referencia a archivos, consulte Uso de un archivo de JSON para una entrada compleja:

    oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-specifications.json
    Archivo dtdl-specifications.json de ejemplo basado en la especificación DTDL v3 que contiene un identificador de modelo de gemelo digital (DTMI) como identificador único.
    {
      "@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}$"
        }
      ]
    }

    En esta respuesta de ejemplo se muestra que el modelo de gemelo digital se ha creado para el dominio IoT, con un URI de DTMI: 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>"
    }

    Para obtener una lista completa de los parámetros y valores de los comandos de la CLI, consulte Referencia de comandos de la CLI.

  • Ejecute la operación CreateDigitalTwinModel para crear un modelo de gemelo digital en el dominio IoT específico.

    Ejemplo de solicitud:

    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"} 
        ]
    }

    Ejemplo de respuesta:

    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"
    }