Szenario: Strukturierte Daten mit HTTPs in einem Standardformat senden
Verwenden Sie dieses Szenario für ein IoT-Gerät, das strukturierte Daten in einem Standardformat an die Internet of Things-(IoT-)Plattform sendet.
Dieses Szenario gilt für ein Gerät, das so programmiert werden kann, dass Daten in einem von der IoT-Plattform erwarteten Format gesendet werden. Für dieses Szenario müssen ein digitales Zwillingsmodell, ein digitaler Zwillingsadapter, eine digitale Zwillingsinstanz und das physische Gerät so konfiguriert werden, dass Telemetriedaten in dem von der IoT-Plattform definierten Format gesendet werden.
Ein Administrator muss Ihrem Mandanten und den Compartments, die Sie verwenden möchten, eine Policy hinzufügen. Policy-Beispiele und -Voraussetzungen finden Sie unter Policy-Details für die Internet of Things-(IoT-)Plattform und IoT-Voraussetzungen.
Aufgaben
Schritt 1: Domaingruppe IoT und Domain IoT erstellen
Verwenden Sie eine vorhandene IoT-Domaingruppe und eine IoT-Domain, oder erstellen Sie eine IoT-Domaingruppe, und erstellen Sie eine IoT-Domain, die für dieses Szenario verwendet werden soll.
Nachdem Sie die Domaingruppe IoT und die Domain IoT haben, die Sie arbeiten möchten, führen Sie die folgenden Schritte aus, um digitale Zwillingsressourcen so einzurichten, dass sie strukturierte Daten in einem Standardformat von einem Gerät empfangen. Alle IoT-Ressourcen müssen sich in derselben Region befinden.
Schritt 2: Erstellen eines digitalen Zwillingsmodells
CLI verwenden
- Speichern Sie ein Code-Snippet als
digital-twin-model.json
-Datei. Referenzieren Sie diese Datei im nächsten Schritt, wenn Sie ein digitales Zwillingsmodell erstellen. Weitere Informationen zum Referenzieren von Dateien finden Sie unter JSON-Datei für komplexe Eingaben nutzen.Verwenden Sie zum Erstellen dieser Datei die Digitale Zwillingsdefinitionssprache (DTDL), um die Semantik für das digitale Zwillingsmodell zu definieren. Ein digitales Zwillingsmodell verwendet einen Digital Twin Model Identifier (DTMI) als eindeutige ID.
Beispiel:
{ "@context": [ "dtmi:dtdl:context;3", "dtmi:dtdl:extension:historization;1", "dtmi:dtdl:extension:quantitativeTypes;1", "dtmi:com:oracle:dtdl:extension:validation;1" ], "@id": "dtmi:com:oracle:example:hvac;1", "@type": "Interface", "displayName": "HVAC", "description": "A digital twin model for HVAC", "contents": [ { "@type": [ "Telemetry", "Temperature" ], "name": "temperature", "schema": "integer", "unit": "degreeFahrenheit" }, { "@type": [ "Telemetry", "Historized", "Validated" ], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100 }, { "@type": [ "Property", "Historized" ], "name": "location", "schema": "point", "writable": false }, { "@type": [ "Property", "Validated" ], "name": "serialNumber", "schema": "string", "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$" } ] }
Das obige Code-Snippet zeigt eine HVAC DTDL-Modellschnittstelle mit einem bestimmten Kontext und Erweiterungen, die Folgendes beschreibt:
-
dtmi:dtdl:context;3
gibt an, dass dieses Modell DTDL Version 3 verwendet. dtmi:dtdl:extension:historization;1
: Gibt an, dass dieses Modell Historisierungsdaten verwendet und verfolgt, wie sich Eigenschaften und Telemetriedaten im Laufe der Zeit ändern.dtmi:dtdl:extension:quantitativeTypes;1
: Gibt an, dass dieses Modell erweiterte quantitative Typen verwendet.dtmi:com:oracle:dtdl:extension:validation;1
: Gibt an, dass dieses Modell die Datenvalidierung verwendet.dtmi:com:oracle:example:hvac;1
ist die eindeutige ID für die HLK-Einheit."@type": "Interface"
: Gibt an, dass dieses Modell eine einzelne Schnittstelle verwendet.contents
: Beschreibt die Telemetrie und die Eigenschaften für diese HLK-Einheit.- Dieses Array beschreibt, dass Telemetriedaten für Zeitreihentemperaturen im Laufe der Zeit gesendet werden. Integer ist der Datentyp und wird in Fahrenheit Grad gemessen.
{ "@type": ["Telemetry", "Temperature"], "name": "temperature", "schema": "integer", "unit": "degreeFahrenheit" }
- In diesem Array werden die zuvor verzeichneten Feuchtigkeitstelemetriedaten beschrieben. Das System validiert und erzwingt den Mindest- und Höchstwertbereich.
{ "@type": [ "Telemetry", "Historized", "Validated" ], "name": "humidity", "schema": "integer", "minimum": 0, "maximum": 100 }
- Dieses Array beschreibt die Positionseigenschaft, die sich im Laufe der Zeit statisch oder langsam ändert und Daten in der Historie enthält. Der Schematyppunkt gibt einen geografischen Standort an. Die Eigenschaft
writable
istfalse
und wird in diesem Release nicht unterstützt:{ "@type": [ "Property", "Historized" ], "name": "location", "schema": "point", "writable": false }
- In diesem Array wird die Eigenschaft für die Seriennummer für die HVAC-Einheit beschrieben. Wenn der Seriennummernwert nicht mit dem definierten Muster übereinstimmt, lehnt das System die Seriennummer ab.
{ "@type": [ "Property", "Validated" ], "name": "serialNumber", "schema": "string", "pattern": "^([0-9]){2}([0-9]){5}([0-9]){6}$" }
-
- Verwenden Sie den Befehl
oci iot digital-twin-model create
mit dem erforderlichen Parameter, um ein digitales Zwillingsmodell zu erstellen. Ersetzen Sie<iot-domain-OCID>
durch die OCID für die IoT-Domain, mit der Sie arbeiten möchten. Referenzieren Sie die Dateidigital-twin-model.json
mit Ihren Spezifikationen:oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://digital-twin-model.json
Diese Beispielantwort enthält die<iot-digital-twin-model-OCID>
mit der zugehörigen IoT-Domain, die DTMI-URI für die HVAC-Einheit und zeigt, dass sie aktiv ist:{ "data": { "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/user@oracle.com", "CreatedOn": "2025-08-05T17:43:00.438Z" } }, "description": "Digital-twin-model-for-HVAC", "display-name": "HVAC", "freeform-tags": {}, "id": "<iot-digital-twin-model-OCID>", "iot-domain-id": "<iot-domain-OCID>", "lifecycle-state": "ACTIVE", "spec-uri": "dtmi:com:oracle:example:hvac;1", "system-tags": {}, "time-created": "2025-09-10T17:43:00.508000+00:00", "time-updated": "2025-09-10T17:43:00.508000+00:00" }, "etag": "<unique-id>" }
Schritt 3: Erstellen eines digitalen Twin-Adapters
Wenn Sie einen digitalen Zwillingsadapter erstellen, können Sie das System zwingen, eine Standard-Payload und -zuordnung zu erstellen, indem Sie die Optionen inbound-envelope
oder inbound-routes
nicht angeben. Infolgedessen enthält die Antwort die Payload des Geräts.
Wenn die Envelope-Zuordnung nicht angegeben ist und einen timeObserved
-Wert enthält, wird receivedTime
als timeObserved
-Wert verwendet.
CLI verwenden
Verwenden Sie den Befehl oci iot digital-twin-adapter create
, um einen digitalen Zwillingsadapter zu erstellen. Ersetzen Sie <iot-domain-OCID>
durch die OCID der IoT-Domain. Um das digitale Zwillingsmodell zu verknüpfen, verwenden Sie entweder den DTMI-URI-Parameter --digital-twin-model-spec-uri
oder den Parameter für die OCID des digitalen Zwillings --digital-twin-model-id
, um das digitale Zwillingsmodell mit diesem digitalen Zwillingsadapter zu verknüpfen.
In diesem Beispiel wird der Befehl mit dem Parameter --digital-twin-model-spec-uri
verwendet. Ersetzen Sie dtmi:com:oracle:example:hvac;1 durch den DTMI-URI für das digitale Zwillingsmodell, das Sie diesem digitalen Zwillingsadapter zuordnen möchten:
oci iot digital-twin-adapter create --iot-domain-id <iot-domain-OCID> --digital-twin-model-spec-uri "dtmi:com:oracle:example:hvac;1"
Oder in diesem Beispiel wird der Befehl mit dem Parameter --digital-twin-model-id
verwendet. Ersetzen Sie <digital-twin-model-OCID>
durch die OCID des digitalen Zwillings für das digitale Zwillingsmodell, das Sie diesem digitalen Zwillingsadapter zuordnen möchten:oci iot digital-twin-adapter create --iot-domain-id <iot-domain-OCID> --digital-twin-model-id <digital-twin-model-OCID>
{
"data": {
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user",
"CreatedOn": "2025-09-10T17:45:41.318Z"
}
},
"description": null,
"digital-twin-model-id": "<digital-twin-model-OCID>",
"digital-twin-model-spec-uri": "dtmi:com:oracle:example:hvac;1",
"display-name": "<your-digital-twin-adapter-name>",
"freeform-tags": {},
"id": "<digital-twin-adapter-OCID>",
"inbound-envelope": {
"envelope-mapping": {
"time-observed": "$.time"
},
"reference-endpoint": "/",
"reference-payload": {
"data": {
"humidity": 0,
"location": {
"coordinates": [0.0, 0.0],
"type": "Point"
},
"temperature": 0,
"time": "2025-09-10T17:45:41.387069258Z"
},
"data-format": "JSON"
}
},
"inbound-routes": [
{
"condition": "*",
"description": "Default condition",
"payload-mapping": {
"$.humidity": "$.humidity",
"$.location": "$.location",
"$.temperature": "$.temperature"
},
"reference-payload": null
}
],
"iot-domain-id": "<iot-domain-OCID>",
"lifecycle-state": "ACTIVE",
"system-tags": {},
"time-created": "2025-09-10T17:45:41.389000+00:00",
"time-updated": "2025-09-10T17:45:41.389000+00:00"
},
"etag": "<unique-id>"
}
Schritt 4: Erstellen einer digitalen Zwillingsinstanz mit einem digitalen Zwillingsadapter
CLI verwenden
Verwenden Sie die Parameter oci iot digital-twin-instance create
und <iot-domain-OCID>
, <vault-secret-OCID>
und <digital-twin--adapter-OCID>
, um eine digitale Zwillingsinstanz für strukturierte Daten zu erstellen.
Ersetzen Sie <iot-domain-OCID>
durch die OCID für die IoT-Domain, die Sie aktualisieren möchten. Optional können Sie den Anzeigeparameter einbeziehen und <display-name>
durch einen benutzerfreundlichen Namen für die Instanz des digitalen Zwillings ersetzen.
Ersetzen Sie <digital-twin--adapter-OCID>
durch die OCID des Digital Twin-Adapters, die im vorherigen Schritt erstellt wurde. Ersetzen Sie <vault-secret-OCID>
durch ein Secret, das sich in derselben Region wie Ihre anderen digitalen Zwillingsressourcen befindet. Oracle empfiehlt, für jede digitale Zwillingsinstanz ein eindeutiges Secret zu verwenden. Weitere Informationen finden Sie unter Secret erstellen.
oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --display-name <display_name> --auth-id <vault-secret-OCID> --digital-twin-adapter-id <digital-twin-adapter-OCID>
Diese Beispielantwort zeigt das digitale Zwillingsmodell, den Adapter, die Instanz-OCIDs und die externe Schlüssel-ID für die Instanz des digitalen Zwillings:{
"data": {
"auth-id": "<vault-secret-OCID>",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/user@oracle.com",
"CreatedOn": "2025-09-11T06: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:hvac;1",
"display-name": "your display name",
"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>"
}
Schritt 5: Telemetriedaten senden
In diesem Beispiel wird HTTP verwendet, um Daten zu posten. Alternativ können Sie MQTT und MQTT über WebSockets verwenden. Spezielle Beispiele finden Sie unter Szenarios.
HTTP POST data
curl -i -X POST -u '<digital-twin-external-key>:<vault-secret>' -H "Content-Type:application/json" 'https://<domain-short-id-from-device-host>.device-iot.<region>.oci.oraclecloud.com/telemetry' -d '{
"temperature": 72,
"humidity": 60,
"location": {
"type": "point",
"coordinates": [40.759010, -73.984474]
},
"serialNumber": "5099627036043"
}'
Schritt 6: Telemetriedaten anzeigen
Je nachdem, wo Sie Ihre IoT-Daten anzeigen möchten, erfordert jedes System eine spezifische Konfiguration, um die IoT-Daten zu verbinden und anzuzeigen.
Daten mit der Daten-API IoT anzeigen
raw
, rejected
oder historized
.Weitere Informationen finden Sie in der Dokumentation zur Internet of Things-(IoT-)Daten-API.
Diese Beispielanforderung zeigt, wieraw
-Telemetriedaten vom Datenhost der Domaingruppe abgerufen werden.curl -H "Authorization: Bearer <token>" \
-X GET "https://<domain-group-short-id>.data.iot.<region>.oci.oraclecloud.com/ords/<domain-short-id>/20250531/rawData?q={\"$and\":[{\"digital_twin_instance_id\":\"<iot-digital-twin-OCID>\"}]}"
In diesem Beispiel werden HTTPs verwendet. Alternativ können Sie MQTT und MQTT über WebSockets verwenden. Spezielle Beispiele finden Sie unter Szenarios.
Daten in APEX oder der Datenbank mit SQL-Anweisungen anzeigen
Mit dieser SQL-Anweisung können Sie die Telemetriedaten rejected
anzeigen. Ersetzen Sie <domain-short-id-from-device-host>
durch die Domain-Kurz-ID von Ihrem Gerätehost, und ersetzen Sie <digital-twin-OCID>
durch die OCID des digitalen Zwillings, aus der Sie die abgelehnten Daten anzeigen möchten:
select * from <domain-short-id-from-device-host>__IOT.REJECTED_DATA where digital_twin_instance_id = '<digital-twin-instance-OCID>';
Beachten Sie, dass der Schemaname zwei Unterstriche enthält: __IOT
<domain-short-id-from-device-host>
durch die Domain-Kurz-ID, und ersetzen Sie <digital-twin-instance-OCID>
durch die OCID für die digitale Zwillingsinstanz, für die Sie die abgelehnten Daten anzeigen möchten:select * from <domain-short-id-from-device-host>__IOT.DIGITAL_TWIN_HISTORIZED_DATA where digital_twin_instance_id = '<digital-twin-instance-OCID>';
Verwenden Sie diese SQL-Anweisung, um raw
-Telemetriedaten zu konsumieren:select * from <domain-short-id-from-device-host>__IOT.RAW_DATA where digital_twin_instance_id = '<digital-twin-instance-OCID>';
Um die <domain-short-id-from-device-host>
für die Domain IoT abzurufen, holen Sie die Details für die Domain IoT, mit der Sie arbeiten möchten.