Scénario : Envoi de données non structurées à l'aide de HTTP
Ce scénario explique comment utiliser la plate-forme Internet of Things pour connecter un appareil à envoyer des données de télémétrie non structurées au nuage à l'aide de HTTPs et comment afficher les données dans APEX.
- Créer un groupe de domaines IoT
- Créer un domaine IoT
- Créer une instance de jumeau numérique
- Envoyer les données
- Configurer le domaine IoT pour accéder à APEX
- Accéder aux données IoT dans APEX
Avant de commencer
Assurez-vous que vous disposez des autorisations requises. Un administrateur accorde l'accès en créant les politiques requises. Pour plus d'informations, voir Préalables pour les politiques requises pour les certificats et Informations détaillées sur les politiques pour la plate-forme Internet of Things (IoT) pour les politiques requises pour les ressources IoT.
Pour chaque appareil que vous souhaitez connecter à votre Internet of Things, procédez comme suit :
Étape 1 : Créer un groupe de domaines IoT
Utilisez la commande oci iot domain-group create et les paramètres requis <compartment-OCID> et <domain-group-name> pour créer un groupe de domaines IoT dans un compartiment spécifique. Remplacez <compartment-OCID> par l'OCID du compartiment dans lequel vous voulez créer le groupe de domaines. Remplacez <domain-group-name> par le nom de votre groupe de domaines et, éventuellement, remplacez <your-sample-description> par une description :
oci iot domain-group create --compartment-id <compartment-OCID> --display-name <domain-group-name> --description <your-sample-description>La création d'un groupe de domaines IoT peut prendre quelques minutes. Cet exemple de réponse montre que le groupe de domaines est en cours de création et utilise cette URL d'hôte de données :
wtmn2xs4ifkba.data.iot.us-phoenix-1.oci.oraclecloud.com
ID abrégé du groupe de domaines : wtmn2xs4ifkba
data-host:<domain-group-short-id>.data.iot.<region>.oci.oraclecloud.com
{
"data": {
"compartment-id": "<compartment-OCID>",
"data-host": "domain-group-short-id.data.iot.<region>.oci.oraclecloud.com",
"db-allow-listed-vcn-ids": null,
"db-connection-string": null,
"db-token-scope": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-08-14T16:43:02.950Z"
}
},
"description": "<your-domain-group-description>",
"display-name": "<your-domain-group-name>",
"freeform-tags": {},
"id": "<domain-group-OCID>",
"lifecycle-state": "CREATING",
"system-tags": {},
"time-created": "2025-08-14T16:43:03.307000+00:00",
"time-updated": "2025-08-14T16:43:03.307000+00:00"
},
"etag": "<unique-id>",
"opc-work-request-id": "<work-request-OCID>"
}
oci iot work-request get et le paramètre requis pour obtenir les mises à jour de demande de travail pour le processus de création d'un groupe de domaines. Remplacez <work-request-id> par l'OCID de la demande de travail à partir de la création d'une réponse de groupe de domaines IoT :oci iot work-request get --work-request-id <work-request-OCID>Cet exemple de réponse montre que la création d'une opération de groupe de domaines est en cours.
{
"data": {
"compartment-id": "<compartment-OCID>",
"id": "<work-request-OCID>",
"operation-type": "CREATE_IOT_DOMAIN_GROUP",
"percent-complete": 50.0,
"resources": [
{
"action-type": "IN_PROGRESS",
"entity-type": "iotDomainGroup",
"entity-uri": "/20250531/iotDomainGroups/<iot-domain-group-OCID>",
"identifier": "<work-request-OCID>",
"metadata": null
}
],
"status": "ACCEPTED",
"time-accepted": "2025-08-14T16:43:03.327000+00:00",
"time-finished": null,
"time-started": null,
"time-updated": "2025-08-14T16:43:22.121000+00:00"
},
"etag": "<unique-id>"
}
oci iot work-request list-errors et le paramètre requis pour lister les erreurs de demande de travail lors du processus de création d'un groupe de domaines :oci iot work-request list-errors --work-request-id <work-request-OCID>{
"data": {
"items": []
}
}oci iot work-request list-logs et le paramètre requis pour lister les entrées de journal pour la demande de travail :oci iot work-request list-logs --work-request-id <work-request-OCID>Cet exemple de réponse présente les étapes de création du groupe de domaines IoT et indique qu'il se termine :
{
"data": {
"items": [
{
"message": "Generating database credentials",
"timestamp": "2025-08-14T16:43:12.150000+00:00"
},
{
"message": "Creating database",
"timestamp": "2025-08-14T16:43:18.156000+00:00"
},
{
"message": "Provisioning database",
"timestamp": "2025-08-14T16:43:22.121000+00:00"
},
{
"message": "Enabling data guard",
"timestamp": "2025-08-14T16:48:25.138000+00:00"
},
{
"message": "Configuring admin secret rotation ",
"timestamp": "2025-08-14T16:53:59.878000+00:00"
},
{
"message": "Generating DNS record(s)",
"timestamp": "2025-08-14T16:54:05.318000+00:00"
},
{
"message": "Configuring routing policy",
"timestamp": "2025-08-14T16:54:06.455000+00:00"
},
{
"message": "Finishing work request",
"timestamp": "2025-08-14T16:54:58.139000+00:00"
}
]
}
}
- Facultative. Utilisez la commande
oci iot work-request getet le paramètre requis pour obtenir la mise à jour de la demande de travail pour le groupe de domaines. Remplacez <work-request-id> par l'OCID de la demande de travail :oci iot work-request get --work-request-id <work-request-OCID>Cet exemple de réponse montre que la création du groupe de domaines IoT a réussi.
{ "data": { "compartment-id": "<compartment-OCID>", "id": "<work-request-OCID>", "operation-type": "CREATE_IOT_DOMAIN_GROUP", "percent-complete": 100.0, "resources": [ { "action-type": "CREATED", "entity-type": "iotDomainGroup", "entity-uri": "/20250531/iotDomainGroups/<domain-group-OCID>", "identifier": "<domain-group-OCID>", "metadata": null } ], "status": "SUCCEEDED", "time-accepted": "2025-08-14T16:43:03.327000+00:00", "time-finished": "2025-08-14T16:54:58.139000+00:00", "time-started": "2025-08-14T16:43:12.131000+00:00", "time-updated": "2025-08-14T16:54:58.139000+00:00" }, "etag": "<unique-id>" }
Étape facultative : Obtenir les détails du groupe de domaines IoT
Utilisez la commande oci iot domain-group get et le paramètre requis pour obtenir les détails du groupe de domaines IoT, y compris les détails de connexion à la base de données du groupe de domaines, s'ils sont configurés. Remplacez <iot-domain-group-OCID> par l'OCID de votre groupe de domaines IoT :
oci iot domain-group get --iot-domain-group-id <iot-domain-group-OCID>"lifecycleState": "ACTIVE" et utilise l'hôte de données suivant : wtmn2xs4ifkba.data.iot.us-phoenix-1.oci.oraclecloud.com. Dans cet exemple, wtmn2xs4ifkba est l'ID abrégé du groupe de domaines IoT. {
"data": {
"compartment-id": "<compartment-OCID>",
"data-host": "wtmn2xs4ifkba.data.iot.<region>.oci.oraclecloud.com",
"db-allow-listed-vcn-ids": null,
"db-connection-string": null,
"db-token-scope": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-08-14T16:43:02.950Z"
}
},
"description": "This is a sample domain group",
"display-name": "Sample Domain Group",
"freeform-tags": {},
"id": "<iot-domain-group-OCID>",
"lifecycle-state": "ACTIVE",
"system-tags": {},
"time-created": "2025-08-14T16:43:03.307000+00:00",
"time-updated": "2025-08-14T16:54:58.187000+00:00"
},
"etag": "<unique-id>"
}Étape 2 : Créer un domaine IoT
Utilisez la commande oci iot domain create et les paramètres <domain-group-OCID> et <compartment-OCID> requis pour créer un domaine Internet of Things. Remplacez <domain-group-OCID> par l'OCID du groupe de domaines à associer à ce domaine IoT. Remplacez <your-sample-description> par une description de votre domaine IoT.
oci iot domain create --compartment-id <compartment-OCID> --iot-domain-group-id <domain-group-OCID> --display-name <your-iot-domain-name> --description <your-iot-domain-description>La création d'un domaine peut prendre quelques minutes. Dans cet exemple de réponse, vous voyez l'URL de l'hôte de l'appareil avec l'ID court de domaine :
"device-host": "cuay2mrhlgrrg.device.iot.<region>.oci.oraclecloud.com"
ID abrégé de domaine : cuay2mrhlgrrg
"device-host": "<domain-short-id>.device.iot.<region>.oci.oraclecloud.com"
{
"data": {
"compartment-id": "<compartment-OCID>",
"data-retention-periods-in-days": {
"historized-data": 30,
"raw-command-data": 16,
"raw-data": 16,
"rejected-data": 16
},
"db-allow-listed-identity-group-names": null,
"db-allowed-identity-domain-host": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-08-14T16:57:03.140Z"
}
},
"description": "<your-iot-domain-description>",
"device-host": "cuay2mrhlgrrg.device.iot.<region>.oci.oraclecloud.com",
"display-name": "<your-iot-domain-name>",
"freeform-tags": {},
"id": "<iot-domain-OCID>",
"iot-domain-group-id": "<iot-domain-group-OCID>",
"lifecycle-state": "CREATING",
"system-tags": {},
"time-created": "2025-08-14T16:57:03.384000+00:00",
"time-updated": "2025-08-14T16:57:03.384000+00:00"
},
"etag": "<unique-id>",
"opc-work-request-id": "<work-request-OCID>"
}
Facultative. Pendant le temps nécessaire pour créer le domaine, utilisez la commande oci iot work-request get et le paramètre requis pour obtenir la mise à jour de la demande de travail pour créer le domaine. Remplacez <work-request-id> par l'ID demande de travail de la réponse précédente :
oci iot work-request get --work-request-id <work-request-OCID>L'exemple de réponse montre que la création d'un domaine IoT est acceptée et en cours.
{
"data": {
"compartment-id": "<iot-domain-OCID>",
"id": "<work-request-OCID>",
"operation-type": "CREATE_IOT_DOMAIN",
"percent-complete": 50.0,
"resources": [
{
"action-type": "IN_PROGRESS",
"entity-type": "iotDomain",
"entity-uri": "/20250531/iotDomains/<iot-domain-OCID>",
"identifier": "<iot-domain-OCID>",
"metadata": null
}
],
"status": "ACCEPTED",
"time-accepted": "2025-08-14T16:57:03.413000+00:00",
"time-finished": null,
"time-started": null,
"time-updated": "2025-08-14T16:57:23.124000+00:00"
},
"etag": "<unique-id>"
}
oci iot work-request list-logs et le paramètre requis pour lister les entrées de journal pour la création d'une demande de travail de domaine IoT :oci iot work-request list-logs --work-request-id <work-request-OCID>Cet exemple de réponse présente les étapes de création du domaine IoT et indique qu'il se termine :
{
"data": {
"items": [
{
"message": "Generating DNS record(s)",
"timestamp": "2025-08-14T16:57:22.148000+00:00"
},
{
"message": "Onboarding domain schema(s)",
"timestamp": "2025-08-14T16:57:23.124000+00:00"
},
{
"message": "Successfully onboarded domain schemas",
"timestamp": "2025-08-14T16:58:43.508000+00:00"
},
{
"message": "Finishing work request",
"timestamp": "2025-08-14T16:58:43.771000+00:00"
}
]
}
}
oci iot work-request get et les paramètres requis pour obtenir la mise à jour de la demande de travail pour créer le domaine. Remplacez <work-request-id> par l'OCID de la demande de travail :oci iot work-request get --work-request-id <work-request-OCID>Cet exemple de réponse montre que la création du domaine IoT a réussi.
"status": "SUCCEEDED",
{
"data": {
"compartment-id": "<compartment-OCID>",
"id": "<work-request-OCID>",
"operation-type": "CREATE_IOT_DOMAIN",
"percent-complete": 100.0,
"resources": [
{
"action-type": "CREATED",
"entity-type": "iotDomain",
"entity-uri": "/20250531/iotDomains/<iot-domain-OCID>",
"identifier": "<iot-domain-OCID>",
"metadata": null
}
],
"status": "SUCCEEDED",
"time-accepted": "2025-08-14T16:57:03.413000+00:00",
"time-finished": "2025-08-14T16:58:43.771000+00:00",
"time-started": "2025-08-14T16:57:22.147000+00:00",
"time-updated": "2025-08-14T16:58:43.771000+00:00"
},
"etag": "<unique-id>"
}
Étape facultative : Obtenez les détails du domaine IoT pour voir l'URL de l'hôte de l'appareil
oci iot domain get et le paramètre requis pour obtenir les détails d'un domaine. Remplacez <iot-domain-OCID> par l'OCID de votre domaine IoT.oci iot domain get --iot-domain-id <iot-domain-OCID>Cet exemple de réponse montre que le domaine est actif : "lifecycle-state": "ACTIVE" et l'URL de l'hôte de l'appareil avec l'ID court de domaine :
<domain-short-id>.device.iot.<region>.oci.oraclecloud.com
{
"data": {
"compartment-id": "<compartment-OCID>",
"data-retention-periods-in-days": {
"historized-data": 30,
"raw-command-data": 16,
"raw-data": 16,
"rejected-data": 16
},
"db-allow-listed-identity-group-names": null,
"db-allowed-identity-domain-host": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-08-14T16:57:03.140Z"
}
},
"description": "<your-iot-domain-description>",
"device-host": "<domain-short-id>.device.iot.<region>.oci.oraclecloud.com",
"display-name": "<your-iot-domain-name>",
"freeform-tags": {},
"id": "<iot-domain-OCID>",
"iot-domain-group-id": "<iot-domain-group-OCID>",
"lifecycle-state": "ACTIVE",
"system-tags": {},
"time-created": "2025-08-14T16:57:03.384000+00:00",
"time-updated": "2025-08-14T16:58:43.789000+00:00"
},
"etag": "<unique-id>"
}
Étape 3 : Créer une instance de jumeau numérique
Utilisez la commande oci iot digital-twin-instance create et le paramètre <iot-domain-OCID> requis pour créer une instance de jumeau numérique pour un domaine IoT associé.
Lorsque vous créez une instance de jumeau numérique qui n'a pas de modèle de jumeau numérique, celle-ci nécessite un ID d'authentification. Utilisez un certificat mTLS ou une clé secrète, voir Création d'une clé secrète.
<iot-domain-OCID> par l'OCID du domaine IoT que vous voulez associer à l'instance de jumeau numérique. Cet exemple de commande inclut le nom d'affichage facultatif, remplacez <display-name> par un nom convivial pour votre instance de jumeau numérique. Cet exemple n'utilise pas le paramètre facultatif --external-key, de sorte que la réponse contient un ID unique généré en tant que clé externe. oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <vault-secret-OCID-or-certificate-OCID> --display-name <display-name>Exemple de réponse avec une clé externe générée. Utilisez la clé externe de l'instance de jumeau numérique à l'étape suivante :{
"data": {
"auth-id": "<vault-secret-OCID>",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-08-14T06:12:43.393Z"
}
},
"description": null,
"digital-twin-adapter-id": "<iot-digital-twin-adapter-OCID>",
"digital-twin-model-id": "<iot-digital-twin-model-OCID>",
"digital-twin-model-spec-uri": "dtmi:com:oracle:example:core:Space:sp;1",
"display-name": "device for conference room 103",
"external-key": "<unique-id>",
"freeform-tags": {},
"id": "<iot-digital-twin-instance-OCID>",
"iot-domain-id": "<iot-domain-OCID>",
"lifecycle-state": "ACTIVE",
"system-tags": {},
"time-created": "2025-09-11T06:12:44.178000+00:00",
"time-updated": "2025-09-11T06:12:44.178000+00:00"
},
"etag": "<unique-id>"
}
Étape 4 : Envoyer les données
Envoyer des données à l'aide de l'URL de l'hôte de l'appareil à l'étape précédente.
Vous pouvez envoyer autant de données que vous le souhaitez. Cet exemple montre l'envoi de 2 messages de données en texte brut. Pour plus d'informations, voir Utilisation de cURL.
curl inclut l'URL de l'hôte de l'appareil avec un exemple de sujet et des données en tant que message texte brut sample data 1, et montre également comment utiliser une clé secrète de chambre forte pour l'authentification. Pour la production, utilisez un certificat mTLS pour l'instance de jumeau numérique --auth-id.- Remplacez
<iot-domain-short-id>et<region>par les valeurs de votre environnement - Remplacez
<digital-twin-instance-external-key>par la clé externe de la réponse de création d'une instance de jumeau numérique à l'étape 3 précédente, Créer une instance de jumeau numérique. - Si vous utilisez une clé secrète de chambre forte pour l'instance de jumeau numérique
--auth-id, utilisez le contenu de clé secrète en texte brut pour le mot de passe de l'appareil.
curl -i -X POST \
-u '<digital-twin-instance-external-key>:<secret-contents>' \
-H 'Content-Type: plain-text' \
https://<iot-domain-short-id>.device.iot.region.oci.oraclecloud.com/sampletopic \
-d "sample data 1"Cet exemple de commande curl affiche un message en texte brut sous la forme sample data 2 comme exemple de sujet :curl -u '<digital-twin-instance-external-key>:<secret-contents>' https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic -H 'Content-Type: plain-text' -d "sample data 2"
Étape 5 : Configurer l'accès du domaine IoT à APEX
Pour voir vos données dans APEX, vous devez configurer l'accès pour voir vos données IoT dans APEX. Une étape de ce processus utilise la commande suivante pour ajouter le mot de passe APEX au domaine IoT afin qu'il puisse accéder à APEX.
oci iot domain configure-apex-data-access et les paramètres requis pour configurer l'accès d'un domaine IoT à APEX. Remplacez <your-initial-apex-password> et <iot-domain-OCID> par les valeurs de votre environnement :oci iot domain configure-apex-data-access --iot-domain-id <iot-domain-OCID> --db-workspace-admin-initial-password <your-inital-apex-password>Facultative. Pendant le temps nécessaire pour configurer l'accès à APEX, utilisez la commande oci iot work-request get et le paramètre requis pour obtenir la mise à jour de la demande de travail. Remplacez <work-request-id> par l'ID demande de travail de la réponse précédente :
oci iot work-request get --work-request-id <work-request-OCID>Exemple de réponse :
{
"data": {
"compartment-id": "<compartment-OCID>",
"id": "<work-request-OCID>",
"operation-type": "CONFIGURE_DOMAIN_DATA_ACCESS",
"percent-complete": 0.0,
"resources": [
{
"action-type": "IN_PROGRESS",
"entity-type": "iotDomain",
"entity-uri": "/20250531/iotDomains/<iot-domain-OCID>",
"identifier": "<iot-domain-OCID>",
"metadata": null
}
],
"status": "ACCEPTED",
"time-accepted": "2025-08-14T17:44:44.716000+00:00",
"time-finished": null,
"time-started": null,
"time-updated": "2025-08-14T17:44:44.716000+00:00"
},
"etag": "<unique-id>"
}
oci iot work-request list-logs et le paramètre requis pour lister les entrées de journal pour la demande de travail :oci iot work-request list-logs --work-request-id <work-request-OCID>Cet exemple de réponse montre que l'accès à APEX pour le domaine est en cours et qu'il est terminé :
{
"data": {
"items": [
{
"message": "Configuring domain data access is in Progress",
"timestamp": "2025-08-14T17:45:19.708000+00:00"
},
{
"message": "Finishing work request",
"timestamp": "2025-08-14T17:45:19.978000+00:00"
}
]
}
}
oci iot work-request list-errors et le paramètre requis pour lister les erreurs de demande de travail :oci iot work-request list-errors --work-request-id <work-request-OCID>{
"data": {
"items": []
}
}oci iot work-request get et le paramètre requis pour obtenir la demande de travail. Remplacez <work-request-id> par l'ID demande de travail :oci iot work-request get --work-request-id <work-request-OCID>Cet exemple de réponse montre que la configuration de l'accès à APEX pour le domaine IoT est mise à jour :
"status": "SUCCEEDED"
{
"data": {
"compartment-id": "<compartment-OCID>",
"id": "<work-request-OCID>",
"operation-type": "CONFIGURE_DOMAIN_DATA_ACCESS",
"percent-complete": 100.0,
"resources": [
{
"action-type": "UPDATED",
"entity-type": "iotDomain",
"entity-uri": "/20250531/iotDomains/<iot-domain-OCID>",
"identifier": "<iot-domain-OCID>",
"metadata": null
}
],
"status": "SUCCEEDED",
"time-accepted": "2025-08-14T17:44:44.716000+00:00",
"time-finished": "2025-08-14T17:45:19.978000+00:00",
"time-started": "2025-08-14T17:45:19.708000+00:00",
"time-updated": "2025-08-14T17:45:19.978000+00:00"
},
"etag": "<unique-id>"
}
Étape 6 : Accéder aux données IoT dans APEX
- Allez à l'URL APEX pour IoT :
https://<domain-group-data-host>/ords/apex/Dans APEX, connectez-vous à l'aide de :
Utilisez l'ID court de domaine provenant de l'hôte de l'appareil pour vous connecter à APEX :
Par exemple :
device-host:<domain-short-id>.device.iot.<region>.oci.oraclecloud.com- Espace de travail :
<domain-short-id-from-device-host>__WKSP - Nom d'utilisateur :
<domain-short-id-from-device-host>__WKSP - Mot de passe initial défini lorsque vous avez utilisé la commande d'interface de ligne de commande pour configurer l'accès aux données d'un domaine IoT pour APEX :
<initial-apex-password>
Note
Notez les deux traits de soulignement :__WKSPet__IOT. - Espace de travail :
- Pour interroger les données IoT, sélectionnez le schéma
<domain-short-id-from-device-host>__IOT. Sélectionnez Atelier SQL, puis Navigateur d'objets.URL de l'atelier SQL :
https://<domain-group-data-host>/ords/apex/sql-workshop - Interrogez les données IoT en entrant et en exécutant une commande SQL. Confirmez que vous avez sélectionné le schéma correct à interroger, exécutez la commande suivante :
select * from RAW_DATAVous pouvez maintenant voir les vues de base de données, les schémas et les données brutes de votre appareil connecté à Internet of Things.
Pour afficher une capture d'écran plus grande, cliquez avec le bouton droit de la souris et ouvrez l'image dans une nouvelle fenêtre du navigateur.
