Scenario: invio di dati non strutturati mediante HTTP
Questo scenario spiega come utilizzare la piattaforma Internet of Things per connettere un dispositivo per inviare dati di telemetria non strutturati al cloud utilizzando HTTP e come visualizzare i dati in APEX.
- Creare un gruppo di domini IoT
- Creare un dominio IoT
- Creare un'istanza digital twin
- Invia dati
- Configurare il dominio IoT per accedere a APEX
- Accedi ai dati IoT in APEX
Per ogni dispositivo che si desidera connettere a Internet of Things, attenersi alla seguente procedura:
Passo 1: creare un gruppo di domini IoT
Utilizzare il comando oci iot domain-group create
, <compartment-OCID>
e i parametri richiesti <domain-group-name>
per creare un gruppo di domini IoT in un compartimento specifico. Sostituire <compartment-OCID>
con l'OCID per il compartimento in cui si desidera creare il gruppo di domini. Sostituire <domain-group-name>
con il nome del gruppo di domini e, facoltativamente, sostituire <your-sample-description>
con una descrizione:
oci iot domain-group create --compartment-id <compartment-OCID> --display-name <domain-group-name> --description <your-sample-description>
La creazione di un gruppo di domini IoT può richiedere alcuni minuti. Questa risposta di esempio mostra che il gruppo di domini sta creando e utilizza questo URL host dati:
wtmn2xs4ifkba.data.iot.us-phoenix-1.oci.oraclecloud.com
ID breve del gruppo di domini: 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
e il parametro necessario per ottenere gli aggiornamenti delle richieste di lavoro per il processo di creazione di un gruppo di domini. Sostituire <work-request-id> con l'OCID della richiesta di lavoro creando una risposta del gruppo di domini IoT:oci iot work-request get --work-request-id <work-request-OCID>
Questa risposta di esempio mostra che è in corso l'operazione di creazione di un gruppo di domini.
{
"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
e il parametro necessario per elencare eventuali errori delle richieste di lavoro per il processo di creazione di un gruppo di domini:oci iot work-request list-errors --work-request-id <work-request-OCID>
{
"data": {
"items": []
}
}
oci iot work-request list-logs
e il parametro necessario per elencare le voci di log per la richiesta di lavoro:oci iot work-request list-logs --work-request-id <work-request-OCID>
Questa risposta di esempio mostra i passi per creare il gruppo di domini IoT e che sta per terminare:
{
"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"
}
]
}
}
- Facoltativa. Utilizzare il comando
oci iot work-request get
e il parametro necessario per ottenere l'aggiornamento della richiesta di lavoro per il gruppo di domini. Sostituire <work-request-id> con l'OCID della richiesta di lavoro:oci iot work-request get --work-request-id <work-request-OCID>
Questa risposta di esempio mostra che la creazione del gruppo di domini IoT è riuscita.
{ "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>" }
Passo facoltativo: ottenere i dettagli del gruppo di domini IoT
Utilizzare il comando oci iot domain-group get
e il parametro necessario per ottenere i dettagli del gruppo di domini IoT, inclusi i dettagli di connessione al database del gruppo di domini, se configurati. Sostituire <iot-domain-group-OCID>
con OCID per il gruppo di domini IoT:
oci iot domain-group get --iot-domain-group-id <iot-domain-group-OCID>
"lifecycleState": "ACTIVE"
e utilizza il seguente host dati: wtmn2xs4ifkba.data.iot.us-phoenix-1.oci.oraclecloud.com
. In questo esempio, wtmn2xs4ifkba
è l'ID breve del gruppo di domini 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>"
}
Passo 2: creare un dominio IoT
Utilizzare il comando oci iot domain create
e i parametri <domain-group-OCID>
e <compartment-OCID>
richiesti per creare un dominio Internet of Things. Sostituire <domain-group-OCID> con l'OCID per il gruppo di domini che si desidera associare a questo dominio IoT. Sostituire <your-sample-description> con una descrizione per il dominio 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 creazione di un dominio può richiedere alcuni minuti. In questa risposta di esempio viene visualizzato l'URL dell'host del dispositivo con l'ID breve del dominio:
"device-host": "cuay2mrhlgrrg.device.iot.<region>.oci.oraclecloud.com"
ID breve del dominio: 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>"
}
Facoltativa. Durante il tempo necessario per creare il dominio, utilizzare il comando oci iot work-request get
e il parametro richiesto per ottenere l'aggiornamento della richiesta di lavoro per la creazione del dominio. Sostituire <work-request-id> con l'ID della richiesta di lavoro della risposta precedente:
oci iot work-request get --work-request-id <work-request-OCID>
La risposta di esempio mostra che la creazione di un dominio IoT è stata accettata ed è in corso.
{
"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
e il parametro necessario per elencare le voci di log per la creazione di una richiesta di lavoro del dominio IoT:oci iot work-request list-logs --work-request-id <work-request-OCID>
Questa risposta di esempio mostra i passi per creare il dominio IoT e che sta per terminare:
{
"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
e i parametri richiesti per ottenere l'aggiornamento della richiesta di lavoro per la creazione del dominio. Sostituire <work-request-id> con l'OCID della richiesta di lavoro:oci iot work-request get --work-request-id <work-request-OCID>
Questa risposta di esempio mostra la creazione del dominio IoT riuscita.
"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>"
}
Passo facoltativo: ottenere i dettagli del dominio IoT
oci iot domain get
e il parametro richiesto per ottenere i dettagli di un dominio. Sostituire <iot-domain-OCID>
con l'OCID per il dominio IoT.oci iot domain get --iot-domain-id <iot-domain-OCID>
Questa risposta di esempio mostra che il dominio è attivo: "lifecycle-state": "ACTIVE"
e l'URL dell'host dispositivo con l'ID breve del dominio:
<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>"
}
Passo 3: creare un'istanza Digital Twin
Utilizzare il comando oci iot digital-twin-instance create
e il parametro <iot-domain-OCID>
richiesto per creare un'istanza digital twin per un dominio IoT associato. Quando si crea un'istanza di gemello digitale, è necessario un ID di autenticazione. Utilizzare un certificato o un segreto. Vedere Creazione di un segreto.
<iot-domain-OCID>
con l'OCID del dominio IoT per l'istanza gemella digitale. Questo comando di esempio include il nome visualizzato facoltativo, sostituire <display-name>
con un nome riconoscibile dall'utente per l'istanza digital twin:oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <vault-secret-OCID> --display-name <display-name>
Risposta di esempio:{
"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>"
}
Passo 4: inviare i dati
Inviare i dati utilizzando l'URL dell'host del dispositivo indicato nel passo precedente.
Puoi inviare tutti i dati che vuoi inviare. Questo esempio mostra l'invio di 2 messaggi di dati in testo semplice. Il primo esempio mostra il comando che utilizza i valori di questo scenario. Il secondo comando mostra i nomi dei valori. Per ulteriori informazioni, vedere Uso di cURL.
Sostituire <domain-short-id>
e <region>
con i valori dell'ambiente in uso:
https://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic
curl
di esempio include l'URL dell'host del dispositivo e mostra i valori basati su questo scenario e include un argomento di esempio: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"
Il comando curl
di esempio mostra il nome dei valori senza i valori di esempio di questo scenario: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"
Passo 5: configurare l'accesso del dominio IoT ad APEX
Per visualizzare i dati in APEX è necessario configurare l'accesso per visualizzare i dati IoT in APEX, un passo di tale processo utilizza il comando seguente per aggiungere la password APEX al dominio IoT in modo che possa accedere ad APEX.
oci iot domain configure-apex-data-access
e i parametri necessari per configurare l'accesso di un dominio IoT ad APEX. Sostituire <your-initial-apex-password>
e <iot-domain-OCID>
con i valori dell'ambiente in uso:oci iot domain configure-apex-data-access --iot-domain-id <iot-domain-OCID> --db-workspace-admin-initial-password <your-inital-apex-password>
Risposta di esempio:
{
"opc-work-request-id": "<work-request-OCID>"
}
Facoltativa. Durante il tempo necessario per configurare l'accesso ad APEX, utilizzare il comando oci iot work-request get
e il parametro necessario per ottenere l'aggiornamento della richiesta di lavoro. Sostituire <work-request-id> con l'ID della richiesta di lavoro della risposta precedente:
oci iot work-request get --work-request-id <work-request-OCID>
Risposta di esempio:
{
"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
e il parametro necessario per elencare le voci di log per la richiesta di lavoro:oci iot work-request list-logs --work-request-id <work-request-OCID>
Questa risposta di esempio mostra che l'accesso ad APEX per il dominio è in corso e che sta per concludersi:
{
"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
e il parametro necessario per elencare gli errori delle richieste di lavoro:oci iot work-request list-errors --work-request-id <work-request-OCID>
{
"data": {
"items": []
}
}
oci iot work-request get
e il parametro necessario per ottenere la richiesta di lavoro. Sostituire <work-request-id> con l'ID richiesta lavoro:oci iot work-request get --work-request-id <work-request-OCID>
Questa risposta di esempio mostra che l'accesso di configurazione ad APEX per il dominio IoT è stato aggiornato:
"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>"
}
Passo 6: accedere ai dati IoT in APEX
Utilizzare l'ID breve del dominio proveniente dall'host del dispositivo per eseguire il login ad 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
In APEX eseguire il login utilizzando:- Database:
<domain-short-id-from-device-host>__WKSP
- Nome utente:
<domain-short-id-from-device-host>__WKSP
- Password iniziale impostata quando si utilizzò il comando CLI per configurare l'accesso ai dati di un dominio IoT per APEX:
<initial-apex-password>
Nota
I due caratteri di sottolineatura sono:__WKSP
e__IOT
.- Database:
- Per eseguire una query sui dati IoT, selezionare lo schema
<domain-short-id-from-device-host>__IOT
. Selezionare SQL Workshop, quindi selezionare Browser oggetti.URL del workshop SQL:
https://<domain-group-short-id-from-data-host>.data.iot.<region>.oci.oraclecloud.com/ords/r/apex/sql-workshop
- Eseguire una query sui dati IoT immettendo ed eseguendo un comando SQL. Confermare di aver selezionato lo schema corretto per la tabella di database di cui si desidera eseguire una query, eseguire il comando seguente:
select * from RAW_DATA
Ora è possibile visualizzare le viste del database, gli schemi e i dati raw per il dispositivo connesso a Internet of Things.
Per visualizzare uno screenshot più grande, fare clic con il pulsante destro del mouse e aprire l'immagine in una nuova finestra del browser.