Risoluzione dei problemi

Utilizzare le informazioni di risoluzione dei problemi per identificare e risolvere i problemi comuni che possono verificarsi quando si lavora con la piattaforma Internet of Things (IoT).

Assicurarsi di disporre delle autorizzazioni necessarie. Un amministratore concede l'accesso creando i criteri necessari. Per ulteriori informazioni, vedere Prerequisiti e Dettagli dei criteri per la piattaforma Internet of Things (IoT).

Aggiorna le password

Potrebbe essere necessario reimpostare la password del database durante la connessione al database utilizzando APEX o durante la connessione diretta al database utilizzando il gruppo di domini Identity.

Causa: se si utilizza APEX ed è necessario reimpostare la password

Se si configura l'accesso per visualizzare i dati IoT in APEX, vengono creati due utenti diversi, un utente di database e un utente amministratore di APEX Workspace. Si tratta di due utenti diversi con lo stesso nome utente e la stessa password iniziale. È possibile aggiornare le password per ciascun utente.

Rimedio: aggiornare la password del database APEX

  1. Solo un amministratore dell'area di lavoro APEX può modificare la password dell'utente del database. Inizialmente, l'amministratore dell'area di lavoro APEX utilizza la password del database APEX per eseguire il login, quindi segue questi passi per modificare la password del database.

    In APEX, eseguire il login all'area di lavoro del dominio IoT come amministratore, utilizzando quanto riportato di seguito come nome area di lavoro e nome utente database, con la password del database APEX corrente.
    Nota

    I due caratteri di sottolineatura sono __WKSP.
    <domain-short-id-from-device-host>__WKSP
  2. Andare a Workshop SQL e selezionare Comandi SQL.
  3. Verificare che lo schema <iot-domain-short-id-from-device-host>__WKSP sia selezionato dal menu a discesa dello schema in alto a destra. Si noti che lo schema contiene due caratteri di sottolineatura.
  4. Utilizzare questa istruzione SQL ALTER USER e la clausola REPLACE richiesta per modificare la password dell'utente del database:
    ALTER USER <workspace-administrator-user-name> IDENTIFIED BY "<new-password>" REPLACE "<old-password>";
  5. Selezionare Esegui.
  6. Risultati di esempio che mostrano l'aggiornamento della password:
    User altered.
    
    0.24 seconds

Rimedio: aggiornare la password APEX

Per modificare la password APEX:
  • L'amministratore dell'area di lavoro APEX può modificare la password dell'amministratore dell'area di lavoro. Dopo aver eseguito il login ad APEX come amministratore, selezionare l'opzione Imposta password account APEX. Per ulteriori informazioni, vedere Reimpostazione della password in APEX.
  • Come utente APEX, quando si esegue il login all'applicazione APEX per la prima volta, verrà richiesto di modificare la password APEX. Dopo aver eseguito il login iniziale, è possibile reimpostare la password nella pagina di login APEX.
Nota

A seconda del sistema utilizzato, potrebbero essere necessarie virgolette doppie quando la password contiene caratteri speciali.

Rimedio: reimpostare la password dell'area di lavoro APEX utilizzando l'API

L'amministratore dell'area di lavoro APEX può modificare se l'account dell'area di lavoro APEX IoT è bloccato, in quanto amministratore è possibile eseguire questa operazione ConfigureIotDomainDataAccess due volte per reimpostare la password dell'area di lavoro APEX.
POST /20250531/iotDomains/{iotDomainId}/actions/configureDataAccess
{
  "type": "APEX",
  "dbWorkspaceAdminInitialPassword": "<your-apex-initial-password>"
}

Causa: autorizzazione mancante durante la connessione diretta al database

Se si stabilisce una connessione diretta al database utilizzando il comando CLI riportato di seguito e non si dispone dell'autorizzazione per connettersi direttamente al database, è possibile creare una nuova password del database per la connessione al gruppo di domini Identity.

Ad esempio, quando si utilizza il comando oci iot domain configure-direct-data-access e i parametri richiesti per configurare l'autenticazione di un dominio IoT per stabilire una connessione diretta al database e non è possibile connettersi.

oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID:<identity-domain-name>/<identity-group-name>"]'

o se si utilizza questo formato:

oci iot domain configure-direct-data-access --iot-domain-id <iot-domain-OCID> --db-allow-listed-identity-group-names '["<tenancy-OCID:<identity-group-name>"]'

Rimedio: aggiornare la password del database per l'utente del dominio di Identity

Aggiornare la password del database dell'utente del dominio di IAM Identity. A tale scopo, eseguire il login alla tenancy IoT ed effettuare le operazioni riportate di seguito.
  1. Aprire il menu di navigazione, andare a Identity & Management, selezionare domini.
  2. Nella pagina dell'elenco dei domini, selezionare il dominio di identità da utilizzare e connettersi a un dominio IoT.
  3. Selezionare la scheda Gestione utenti, quindi selezionare l'utente per il quale si desidera aggiornare la password. Selezionare la scheda Password database per aggiornare la password eliminare la password del database IAM corrente e creare una nuova password del database IAM.

I modelli gemelli digitali utilizzano le specifiche DTDL v3

Causa: la creazione di un modello gemello digitale genera un errore

Quando si crea un modello gemello digitale in caso di errore, verificare di utilizzare solo le specifiche DTDL v3 supportate.

Rimedio: utilizzare solo specifiche DTDL v3 supportate

Quando si definisce il modello gemello digitale, tutte le specifiche DTDL v3 sono supportate, ad eccezione delle estensioni MQTT e delle proprietà scrivibili.
  • Se una proprietà writable è inclusa nel modello gemello digitale, deve essere impostata su false.
  • Solo il content all'interno del componente può essere annotato come historized, indicando che la piattaforma IoT deve conservare la telemetria della serie temporale del sensore, vedere l'esempio del modello gemello digitale dtdl-model-specifications.json. Per un esempio, vedere Creazione di un modello Digital Twin.

Limiti servizio superati

Risolvere i problemi relativi al dominio IoT o ai limiti del servizio delle risorse del gruppo di domini IoT per area.

Causa: IoT limiti di risorse per area

La piattaforma Internet of Things (IoT) prevede limiti per il numero di risorse per ogni area.

Se si tenta di creare più di 2 domini IoT o più in un gruppo di domini IoT, è possibile che venga visualizzato il seguente errore. Per ulteriori informazioni, vedere creare un dominio IoT o un gruppo di dominiIoT.

The following service limits were exceeded: <resource-count>. Request a service limit increase from the service limits page in the console.

Nota

Oracle limita la creazione di un massimo di 2 domini IoT in ogni gruppo di domini IoT. Il numero massimo di gruppi di domini IoT è 5 e il numero massimo di domini IoT è 10 per area nella tenancy. Per creare un dominio IoT, l'utente deve disporre dell'accesso in lettura per il gruppo di domini IoT associato.

Rimedio: Aggiorna e aumenta i limiti

Vedere Limiti del servizio per esaminare i limiti per le risorse IoT. Se è necessario aumentare i limiti, è possibile richiedere un aumento del limite del servizio.

Utilizzo di virgolette con OCID

In Oracle Cloud Infrastructure (OCI), un OCID (Oracle Cloud Identifier) è un ID univoco assegnato a ciascuna risorsa cloud. A seconda dello scenario specifico, quando si interagisce con OCI tramite l'interfaccia a riga di comando (CLI), l'input JSON o le chiamate API, potrebbe essere necessario citare l'OCID in modo che venga interpretato come valore stringa. In alternativa, potrebbe essere necessario rimuovere le virgolette se un editor di codice in uso aggiunge virgolette indesiderate.

Nota

Alcune applicazioni o editor di codice possono aggiungere virgolette indesiderate ai valori, rivedere e rimuovere eventuali virgolette indesiderate o causare un errore.

Per essere conforme agli standard JSON e garantire la corretta interpretazione da parte dei servizi OCI, un OCID deve essere racchiuso tra virgolette doppie, in modo che venga considerato come valore stringa all'interno di strutture JSON o input complessi. Quando vengono passati come argomenti semplici e diretti ai comandi CLI, spesso non è necessario fare preventivi espliciti.

  • Non citare gli OCID nell'interfaccia CLI: se un OCID è un argomento diretto di un comando CLI, non è necessario utilizzare le virgolette in modo esplicito a meno che non faccia parte di una stringa più ampia o di un tipo complesso che richiede la citazione.
    Questo esempio mostra come utilizzare un OCID è un comando CLI senza virgolette.
    oci iot digital-twin-adapter create --iot-domain-id ocid1.iotdomain.oc1.example-ocid 
  • Preventivo degli OCID durante l'incorporamento nelle stringhe JSON: se si passa un parametro complesso a un comando CLI come stringa JSON con un valore OCID, l'OCID all'interno della stringa JSON deve essere racchiuso tra virgolette doppie e, se necessario, con escape. A seconda dello strumento e del sistema operativo in uso, per Windows è necessario. Per ulteriori informazioni, vedere Passaggio di un input complesso nell'interfaccia CLI.
  • Preventivo degli OCID negli oggetti JSON: tutti i valori stringa all'interno di un oggetto JSON devono essere racchiusi tra virgolette doppie. Se un OCID è un valore in un oggetto JSON che si sta inviando a OCI utilizzando un'API o in un comando CLI, deve essere racchiuso tra virgolette:
    { "displayName": "my_resource", "compartmentId": "ocid1.compartment.oc1..<example>" } 
  • Preventivo degli OCID nelle chiamate API: nei corpi o nei parametri della richiesta: quando si effettuano chiamate API a OCI, se un OCID fa parte del corpo della richiesta come payload JSON o parametro di query, deve essere considerato come una stringa e racchiuso tra virgolette doppie nel payload JSON. Oppure deve essere codificato correttamente come stringa per i parametri URL. I requisiti specifici dipendono dall'endpoint API e dal tipo di dati previsti per tale parametro.

Nelle istanze gemelle digitali che utilizzano preventivi per una chiave esterna

La chiave esterna equivale al nome utente del dispositivo: se un'istanza digital twin viene creata con virgolette incorporate nella chiave esterna, ad esempio "\"american-auto\"", il nome utente di autenticazione di base, tali virgolette diventano parte del nome utente richiesto e devono essere inviate letteralmente. Questo spesso causa problemi di quotazione della shell. Se sono state incluse virgolette nel nome della chiave esterna, anche la richiesta curl deve includere le virgolette oppure si verifica una mancata corrispondenza e si verifica un errore 401 Unauthorized.

Se si utilizzano le virgolette nel valore istanza gemella digitale external key, è necessario utilizzare le virgolette quando si effettua una chiamata API. In alternativa, è possibile omettere i preventivi nel valore della chiave esterna.

Per evitare problemi di quotazione, non utilizzare le virgolette nel valore della chiave esterna di un'istanza gemello digitale. Ad esempio, viene visualizzato il parametro dell'interfaccia CLI --external-key e il valore corrispondente che non utilizza le virgolette:

--external-key 01-23-45-67-89-ab

Procedura ottimale: creare istanze digital twin con chiavi esterne e non includere virgolette, ad esempio american-auto oppure quando è necessario eseguire l'autenticazione con nomi utente citati, creare un'intestazione Authorization: Basic ... anziché utilizzare -u per evitare errori di citazione.

In Digital Twin Adapters gli oggetti JSON devono utilizzare le virgolette

Le espressioni senza virgolette non sono supportate negli instradamenti in entrata digital twin adapter. Per ulteriori esempi, vedere Scenari.

In un adattatore digital twin, le espressioni inbound-route non sono supportate come valori raw senza virgolette, ad esempio:

"$.speed": ${(.velocity_kph / 1.609) | floor}
In un adattatore digital twin, le espressioni dei valori inbound-route devono essere incorporate come stringhe utilizzando virgolette, ad esempio:
"$.speed": "${(.velocity_kph / 1.609) | floor}"