Creación de un modelo gemelo digital
Cree un modelo de gemelo digital para su Internet of Things (IoT).
- Un modelo gemelo digital utiliza un identificador de modelo gemelo digital (DTMI) como identificador único. Por ejemplo:
dtmi:com:oracle:iot:connectable;1 - El contexto de modelo gemelo digital requerido indica que el modelo gemelo digital utiliza DTDL v3:
dtmi:dtdl:context;3 - En los modelos gemelos digitales, utilice Especificaciones de validación de esquema JSON para agregar propiedades de validación a los datos de validación ingeridos. Para obtener más información sobre cómo utilizar la extensión DDTMI en el modelo gemelo digital, consulte Escenario: Agregar validación de esquema JSON a un modelo gemelo digital.
Una instancia gemela digital requiere un modelo gemelo digital y un adaptador gemelo digital para recibir datos de un dispositivo que envía datos estructurados. Para ver ejemplos específicos, consulte Escenarios.
El idioma de definición de gemelos digitales (DTDL) v3 está soportado en GitHub por Digital Twin Consortium. Es importante anotar:
- Las extensiones MQTT y las propiedades de escritura no están soportadas. Si se incluye una propiedad
writable, se debe definir enfalse. - Solo se puede anotar
contentdentro del componente comohistorized, lo que indica que la plataforma IoT debe conservar la telemetría de serie temporal de ese sensor. Consulte el ejemplo de modelo gemelo digitaldtdl-model-specifications.jsona continuación.
Si desea crear una instancia de gemelo digital sin datos ingeribles de un dispositivo, puede crear una instancia de gemelo digital sin un adaptador de gemelo digital y sin el parámetro de ID de autenticación, --auth-id. El modelo gemelo digital asociado no debe contener telemetría ni propiedades. Después de crear una instancia de gemelo digital, puede crear una relación de gemelo digital para simular su entorno de IoT sin la complejidad de los datos ni la autenticación.
- En la página de lista Dominios de IoT, seleccione el dominio de IoT con el que desea trabajar. Si necesita ayuda para encontrar la página de lista de dominios de IoT, consulte Listado de dominios de IoT.
- Seleccione el separador Modelos gemelos digitales y seleccione Crear.
- Introduzca un nombre y, opcionalmente, una descripción fácil de recordar. Evite introducir información confidencial.
- Seleccione una opción para agregar la especificación de DTDL del modelo:
- Para cargar el archivo
dtdl-specification.json, seleccione cargar la especificación. Arrastre y suelte o seleccione un archivo.jsoncon la especificación DTDL para este modelo de gemelo digital. - Para agregar el valor
JSONpara el modelo gemelo digital, seleccione pegar especificación.
- Para cargar el archivo
- Etiquetas: (opcional) agregue una o más etiquetas al modelo de gemelo digital. Si tiene permisos para crear un recurso, también los tiene para aplicar etiquetas de formato libre a ese recurso. Para aplicar una etiqueta definida, debe tener permisos para utilizar el espacio de nombres de la etiqueta. Para obtener más información sobre el etiquetado, consulte Etiquetas de recursos. Si no está seguro de si desea aplicar etiquetas, omita esta opción o pregunte a un administrador. Puede aplicar etiquetas más tarde.
- Seleccione Crear.
Vea los detalles del modelo gemelo digital. Copie el OCID de dominio de IoT asociado, el modelo de gemelo digital DTMI o el OCID de modelo de gemelo digital.
Seleccione el separador relacionado para ver la especificación de DTDL, las instancias de gemelos digitales asociadas, los adaptadores de gemelos digitales asociados o las etiquetas para este modelo de gemelo digital.
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:
Ejemplo en línea: este ejemplo 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}$"}]}'Ejemplo de referencia de archivo: en este ejemplo se muestra cómo crear un archivo
dtdl-model-specifications.jsonque contenga las especificaciones, cómo hacer referencia al archivo.jsonen el comando. El formato puede variar según el sistema operativo para obtener más información sobre cómo hacer referencia a archivos. Consulte Uso de un archivo JSON para una entrada compleja:oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-model-specifications.jsonEn este fragmento del ejemplo de modelo gemelo digital a continuación:- Observe que el valor
humidityse anota como telemetríahistorized, por lo que cada lectura de humedad se almacena como una medición de serie temporal con un registro de horatimeObserved, en lugar de registrar solo el último valor. - También está validado para ser un
integeren el rango0–100. Solo el contenido de un componente se puede anotar como aviso histórico de esta declaración@typeen el ejemplo siguiente.
{ "@type": ["Telemetry","Historized","Validated"], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100 }En este modelo de climatización,dtdl-model-specifications.json- Este modelo se basa en la especificación DTDL v3 y contiene un identificador de modelo de gemelo digital (DTMI) como identificador único:
@id: "dtmi:com:oracle:iot:sample:hvac:<unique-id>;1" - Este modelo de gemelo digital de ejemplo permite la historización, los tipos cualitativos y los contextos de extensión de validación. Consulte DTMI Validation Extension Reference.
- Como se describe en el fragmento encima de la telemetría
humidityse anota comoHistorized, por lo que las lecturas de humedad se conservan como datos de series temporales y lecturas a lo largo del tiempo. - La telemetría
locationse anota comoHistorized, por lo que los cambios en la ubicación también se conservan a lo largo del tiempo, registrando el historial de ubicaciones de la propiedad con una pista de auditoría. - La telemetría
temperatureno se anota con Historized, registrando solo el último valor conocido otra persistencia descendente configurada en otro lugar. - La propiedad
serialNumberse marca comoValidatedmediante un patrón de expresión regular y no se anota como Histórico, por lo que solo se mantiene el valor actual o el último, no un seguimiento histórico de los cambios.
{ "@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 este ejemplo de respuesta de la CLI, se muestra que el modelo de gemelo digital se creó 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.
- Observe que el valor
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": false}, {"@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" }