Création d'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 jumeau numérique utilise un identificateur de modèle jumeau numérique (DTMI) comme identificateur unique.
Par exemple : dtmi:com:oracle:iot:connectable;1
Une instance jumeau numérique nécessite un modèle jumeau numérique et un adaptateur jumeau numérique pour recevoir des données d'appareil structurées. Pour des exemples spécifiques, voir Scénarios.
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 inscriptibles ne sont pas prises en charge.
Si une propriété writable
est incluse, elle doit être réglée à 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 vos spécifications et référence le fichier dans la commande. Pour plus d'informations sur le référencement de fichiers, voir Utilisation d'un fichier JSON pour les entrées complexes :
Exemple de fichieroci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://dtdl-specifications.json
dtdl-specifications.json
basé sur la spécification DTDL v3 qui contient un identificateur de modèle jumeau numérique (DTMI) en tant qu'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 la liste complète des paramètres et des valeurs pour les commandes de l'interface de ligne de commande, voir Informations de référence sur les commandes de l'interface de ligne de commande.
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" }