Créer un modèle de jumeau numérique

Créez un modèle de jumeau numérique pour votre Internet of Things (IoT).

Un modèle de jumeau numérique définit la sémantique d'un jumeau numérique et est basé sur les spécifications DTDL v3. Un modèle de jumeau numérique utilise un identificateur de modèle de jumeau numérique (DTMI) comme identificateur unique.

Par exemple : dtmi:com:oracle:iot:connectable;1

Une instance de jumeau numérique nécessite un modèle de jumeau numérique et un adaptateur de jumeau numérique pour recevoir des données d'appareil structurées. Pour obtenir des exemples spécifiques, reportez-vous à Scénarios.

Remarque

Le langage DTDL (Digital Twins Definition Language) v3 est pris en charge sur GitHub par le consortium Digital Twin. Il est important de noter que les extensions MQTT et les propriétés accessibles en écriture ne sont pas prises en charge.

Si une propriété writable est incluse, elle doit être définie sur false.

  • Utilisez la commande oci iot digital-twin-model create et les paramètres requis pour créer un modèle de jumeau numérique dans un domaine IoT spécifique. Fournissez les spécifications en tant que contenu JSON directement dans la ligne de commande ou en tant que fichier référencé dans la ligne de commande :

    Cet exemple montre comment fournir les spécifications JSON directement dans la ligne de commande :

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

    Cet exemple montre comment créer un fichier dtdl-specifications.json qui contient les spécifications et référence le fichier dans la commande. Pour plus d'informations sur le référencement de fichiers, reportez-vous à la section Using a JSON File for Complex Input :

    oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-specifications.json
    Exemple de fichier dtdl-specifications.json basé sur la spécification DTDL v3 qui contient un identificateur de modèle jumeau numérique (DTMI) comme identificateur unique.
    {
      "@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}$"
        }
      ]
    }

    Cet exemple de réponse montre que le modèle de jumeau numérique a été créé pour le domaine IoT, avec un URI 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>"
    }

    Pour obtenir la liste complète des paramètres et des valeurs des commandes de la CLI, reportez-vous à Référence des commandes de la CLI

  • Exécutez l'opération CreateDigitalTwinModel pour créer un modèle de jumeau numérique dans le domaine IoT spécifique.

    Exemple de demande :

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

    Exemple de réponse :

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