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;3gibt 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;1ist 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
writableistfalseund 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 createmit 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.jsonmit Ihren Spezifikationen:oci iot digital-twin-model create --iot-domain-id <iot-domain-OCID> --spec file://digital-twin-model.jsonDiese 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 und inbound-routes nicht angeben. Infolgedessen enthält die Antwort die Standard-Payload des Geräts.
Wenn Sie die Optionen
inbound-envelope und inbound-routes nicht angeben, um die Standard-Payload vom Gerät abzurufen, müssen Sie sowohl die Parameter inbound-envelope als auch die Parameter inbound-routes weglassen. Sie können nicht nur einen dieser optionalen Parameter angeben. Wenn die Envelope-Zuordnung angegeben ist und einen Wert von timeObserved enthält, wird receivedTime als Wert von timeObserved 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 oder Szenario: Digitale Zwillingsinstanz erstellen, die ein mTLS-Zertifikat verwendet.
oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --display-name <display-name> --auth-id <secret-or-certificate-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 HTTPS verwendet, um Daten zu posten. Alternativ können Sie MQTTS oder MQTT über WebSockets verwenden. Spezielle Beispiele finden Sie unter Szenarios.
In diesem Beispiel ist <digital-twin-instance-external-key> der Gerätebenutzername und <secret-contents> das Gerätekennwort. Verwenden Sie den Nur-Text-Secret-Inhalt für das Gerätekennwort.
Verwenden Sie für die Produktion ein mTLS-Zertifikat für die Instanz des digitalen Zwillings --auth-id.
HTTP POST data
curl -i -X POST
-u '<digital-twin-instance-external-key>:<secret-contents>' \
-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>\"}]}" 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.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.