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
Avant de commencer
Assurez-vous de disposer des droits d'accès requis. Un administrateur accorde l'accès en créant les stratégies requises. Pour plus d'informations, reportez-vous à Prérequis pour les stratégies requises pour les certificats et à Détails de stratégie pour la plate-forme Internet of Things (IoT) pour les stratégies requises pour les ressources IoT.
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": "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 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 getet 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 : obtenez les détails du domaine IoT pour afficher l'URL de l'hôte du périphérique
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 qui n'a pas de modèle de jumeau numérique, l'instance de jumeau numérique requiert un ID d'authentification. Utilisez un certificat mTLS ou une clé secrète. Reportez-vous à Création d'une clé secrète.
<iot-domain-OCID> par l'OCID du domaine IoT à 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é comme 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>"
}
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. Pour plus d'informations, reportez-vous à Utilisation de cURL.
curl inclut l'URL d'hôte de périphérique avec un exemple de sujet et des données en tant que message en texte brut sample data 1, et indique également comment utiliser une clé secrète de coffre 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'instance de jumeau numérique de l'étape 3 précédente, Créer une instance de jumeau numérique. - Si vous utilisez la clé secrète de coffre 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 montre 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"
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>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
- Accédez à l'URL APEX pour IoT :
https://<domain-group-data-host>/ords/apex/Connectez-vous à APEX à l'aide des éléments suivants :
Utilisez l'ID abrégé de domaine provenant de l'hôte de périphérique 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>
Remarque
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 SQL Workshop, puis Object Browser (Navigateur d'objet).URL de SQL Workshop :
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_DATADé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.
