Scénario : envoyer des 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 afin d'envoyer des données de télémétrie non structurées au cloud à l'aide de HTTP, 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 des données
- Configuration du domaine IoT pour accéder à APEX
- Accès aux données IoT dans APEX
Pour chaque appareil que vous souhaitez connecter à votre Internet of Things, procédez comme suit :
Etape 1 : création d'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 souhaitez créer le groupe de domaines. Remplacez <domain-group-name>
par votre nom de 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 train de créer et utilise cette URL d'hôte de données :
wtmn2xs4ifkba.data.iot.us-phoenix-1.oci.oraclecloud.com
domain group short id : 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 demande de travail provenant 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 répertorier toutes les erreurs de demande de travail pour le 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 répertorier 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"
}
]
}
}
- Facultatif. 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 le fichier <work-request-id> par l'OCID de demande d'intervention :oci iot work-request get --work-request-id <work-request-OCID>
Cet exemple de réponse indique 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>" }
Etape facultative : obtention des 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, si configuré. Remplacez <iot-domain-group-OCID>
par l'OCID du 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>"
}
Etape 2 : création d'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 du 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 device host avec l'domain short id :
"device-host": "cuay2mrhlgrrg.device.iot.<region>.oci.oraclecloud.com"
ID abrégé du 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>"
}
Facultatif. Pendant la durée nécessaire à la création du 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 la création du domaine. Remplacez <work-request-id> par l'ID de 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 indique 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 répertorier 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 la création du domaine. Remplacez le fichier <work-request-id> par l'OCID de demande d'intervention :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>"
}
Etape facultative : obtention des 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 du 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 du périphérique avec l'ID abrégé du 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>"
}
Etape 3 : création d'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 requiert un ID d'authentification. Utilisez un certificat ou une clé secrète. Reportez-vous à 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>"
}
Etape 4 : Envoyer des données
Envoyez des données à l'aide de l'URL de l'hôte de périphérique de l'étape précédente.
Vous pouvez envoyer autant de données que vous le souhaitez. Cet exemple illustre 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, reportez-vous à 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 du périphérique, affiche les valeurs basées sur ce scénario et inclut un exemple de rubrique :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
montre 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"
Etape 5 : configuration de l'accès du domaine IoT à APEX
Pour afficher vos données dans APEX, vous devez configurer l'accès afin de visualiser 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>"
}
Facultatif. Pendant la configuration de 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 de 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 répertorier les entrées de journal de la demande de travail :oci iot work-request list-logs --work-request-id <work-request-OCID>
Cet exemple de réponse indique que l'accès au domaine APEX est en cours et qu'il se termine :
{
"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 répertorier les erreurs de demandes 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 de demande d'intervention :oci iot work-request get --work-request-id <work-request-OCID>
Cet exemple de réponse montre comment configurer l'accès à APEX pour le domaine IoT est mis à 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>"
}
Etape 6 : accès aux données IoT dans APEX
Utilisez l'ID abrégé de domaine provenant de l'hôte de périphérique 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
Connectez-vous à APEX à l'aide des éléments suivants :- 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>
Remarque
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 SQL Workshop, puis Object Browser (Navigateur d'objet).URL de SQL Workshop :
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
Désormais, vous pouvez 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.