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
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": "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": "<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 get
et 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 : Obtenir les détails du domaine IoT
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, elle nécessite un ID authentification. Utilisez un certificat ou une clé secrète, voir Création d'une clé secrète.
<iot-domain-OCID>
par l'OCID du domaine IoT pour 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 :oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <vault-secret-OCID> --display-name <display-name>
Exemple de réponse :{
"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. Le premier exemple montre la commande utilisant les valeurs de ce scénario. La deuxième commande affiche les noms de valeur. Pour plus d'informations, voir Utilisation de cURL.
Remplacez <domain-short-id>
et <region>
par les valeurs de votre environnement :
https://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic
curl
inclut l'URL de l'hôte de l'appareil et affiche les valeurs basées sur ce scénario et inclut un exemple de sujet :curl -u '9K7F8Y3HJGX1FA1GFG9QVV9E2C<vault-secret-OCID>' https://<domain-short-id>.device.iot.us-phoenix-1.oci.oraclecloud.com/sampletopic -H 'Content-Type: plain-text' -d "sample data 2"
Cet exemple de commande curl
affiche le nom des valeurs sans les exemples de valeurs de ce scénario :curl -u '<external-key>:<vault-secret-OCID>' https://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic -H 'Content-Type: plain-text' -d "sample data 1"
É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>
Exemple de réponse :
{
"opc-work-request-id": "<work-request-OCID>"
}
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
Utilisez l'ID court de domaine provenant de l'hôte de l'appareil pour vous connecter à APEX :
https://<domain-group-short-id-from-data-host>.data.iot.<region>.oci.oraclecloud.com/ords/r/apex
device-host:<domain-short-id>.device.iot.<region>.oci.oraclecloud.com
Dans APEX, connectez-vous à l'aide de :- Base de données :
<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
Utilisez uniquement des lettres majuscules pour<domain-short-id-from-device-host>
et notez les deux traits de soulignement : __WKSP- Base de données :
- 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-short-id-from-data-host>.data.iot.<region>.oci.oraclecloud.com/ords/r/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 approprié pour la table de base de données à interroger, exécutez la commande suivante :
select * from RAW_DATA
Vous 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.