Szenario: Befehle empfangen und Antworten mit MQTTs senden
Verwenden Sie dieses Szenario, um Befehle in der Cloud zu empfangen und Antworten mit dem MQTTs-Protokoll an ein Gerät zu senden, um mit Ihren Internet of Things-(IoT-)Geräten zu interagieren.
Aufgaben
Um die folgenden Schritte auszuführen, können Sie eine vorhandene IoT-Domain und eine IoT-Domaingruppe verwenden oder eine IoT-Domaingruppe und eine IoT-Domain erstellen und dann die folgenden Schritte ausführen.
Schritt 1: Digitale Zwillingsinstanz erstellen
CLI verwenden
- Wenn Sie eine Instanz mit digitalem Zwilling erstellen, verwenden Sie ein Secret oder ein Zertifikat, damit sich die Instanz mit digitalem Zwilling sicher authentifizieren kann. Sie müssen ein Secret erstellen oder ein Zertifikat erstellen, um dieses Szenario abzuschließen. Oracle empfiehlt, für jede Instanz des digitalen Zwillings ein Secret zu verwenden. Für die Produktion sollte die Instanz des digitalen Zwillings ein mTLS-Zertifikat zur Authentifizierung verwenden.
Verwenden Sie den Befehl
oci iot digital-twin-instance createund die erforderlichen Parameter, um einen digitalen Zwilling zu erstellen. Das folgende Beispiel zeigt den Befehl, wie Sie den Parameter für die Authentifizierungs-ID mit dem erforderlichen Domainparameter IoT verwenden, um die Domain IoT mit der Instanz des digitalen Zwillings zu verknüpfen:oci iot digital-twin-instance create --auth-id <vault-secret-or-client-certificate-id> --iot-domain-id <iot-domain-OCID>Beachten Sie in dieser Beispielantwort den externen Schlüsselwert. Verwenden Sie diesen Wert für den externen Schlüssel, und beachten Sie den externen Schlüssel, den Sie im nächsten Schritt verwenden können:
"external-key": "<unique-id>"{ "data": { "auth-id": "<vault-secret-or-certificate-OCID>", "defined-tags": { "Oracle-Tags": { "CreatedBy": "default/user@oracle.com", "CreatedOn": "2025-08-05T18:03:15.264Z" } }, "description": null, "digital-twin-adapter-id": null, "digital-twin-model-id": null, "digital-twin-model-spec-uri": null, "display-name": "HVAC-instance", "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-08-05T18:03:15.870000+00:00", "time-updated": "2025-08-05T18:03:15.870000+00:00" }, "etag": "<unique-id>" }
Schritt 2: Richten Sie die MQTT-Session mit Brokerzugangsdaten ein
- Laden Sie MQTTX herunter, und richten Sie es ein. Befolgen Sie diese Anweisungen unter Erste Schritte mit MQTTX. Öffnen Sie MQTTX.
- Wählen Sie + Neue Verbindung aus, um eine neue Verbindung zu erstellen. Geben Sie einen Namen für die Verbindung ein. Geben Sie keine vertraulichen Informationen ein.
- Geben Sie den Wert Externer Schlüssel
<unique-id>als Benutzername ein. Sie finden den externen Schlüssel in der Antwortoci iot digital-twin-instance createaus dem vorherigen Schritt 1: Digitale Zwillingsinstanz erstellen:"external-key": "<unique-id>" - Geben Sie das Passwort für das Gerät ein. Wenn Sie Vault Secret verwenden, muss dies das Klartext-Secret sein, oder Sie können ein mTLS-Zertifikat verwenden.
- Geben Sie den Host ein. Wählen Sie das Protokoll
mqtts://aus der Dropdown-Liste "Host" aus, und geben Sie den Gerätehost<domain-short-id>.device.iot.<region>.oci.oraclecloud.comaus der Domain IoT ein. Informationen hierzu finden Sie unter Details einer IoT-Domain abrufen. - Geben Sie den Port ein. Beispiel:
8883Hinweis
Derzeit wird MQTT Secure (MQTTS) nur über Port8883unterstützt. - Schalten Sie SSL/TLS ein.
- Aktivieren Sie SSL Secure umschalten.
- Wählen Sie für das Zertifikat die Option CA-signiertes Serverzertifikat.
- Wenn Sie die MQTTX-Verbindung konfigurieren, stellen Sie sicher, dass Sie Folgendes verwenden:
clean session: Setzen Sie die Option "Clean Session" auftrue. Wenn "Clean Session" auf "true" gesetzt ist, speichert der Broker keine Informationen für den Client und verwirft vorherigen Status aus einer persistenten Session. Alle Sitzungsdaten werden gelöscht, sobald die Netzwerkverbindung beendet ist.- Setzen Sie die Option
Last-Will-Retainauffalse, damit Clientabonnements beibehalten werden können, wenn das Gerät kurzzeitig getrennt wird.
- Setzen Sie Last Will QoS auf 1. So definieren Sie die Zuverlässigkeit der Zustellung "Mindestens einmal" für Ihre Trennbenachrichtigung.
- Wählen Sie Verbinden aus.
Diese Abbildung zeigt diese Einstellungen in MQTTX. Klicken Sie mit der rechten Maustaste, und öffnen Sie sie in einer neuen Registerkarte, um einen größeren Screenshot anzuzeigen.


Schritt 3: Thema abonnieren, um Antworten in MQTTX zu erhalten
Wenn ein externes System oder IoT-Gerät eine Nachricht an das abonnierte Thema veröffentlicht, werden in MQTTX die eingehenden Nachrichten unter diesem Thema angezeigt. Wenn Sie auf eine Antwort von einem vorherigen Befehl warten, stellen Sie sicher, dass Sie das richtige Antwortthema abonniert haben.
Definieren Sie die responseEndpoint im nächsten Schritt, wenn Sie den Befehl in einer JSON-Datei definieren. Die Zeichenfolge "responseEndpoint": "/endpoints/4321" stellt das Thema oder den Endpunktpfad dar, in dem das Gerät seine Antwort veröffentlichen soll. Wählen Sie einen logischen Endpunktpfad für Ihre digitalen Zwillingsrouten aus. Sie müssen denselben Pfad sowohl auf der Cloud-Seite (wenn Sie den Befehl senden) als auch auf der Geräteseite (wenn Sie die Antwort veröffentlichen) verwenden.
- Wählen Sie in MQTTX + Neues Abonnement aus.
- Geben Sie den Endpunkt als Thema ein.
- Wählen Sie im Dropdown-Menü QoS die Option 1 Mindestens einmal aus.
- Wählen Sie Bestätigen aus.
- Client-ID: your-client-ID
- Benutzername: Externe ID.
- Kennwort: Geben Sie das Gerätekennwort ein.
- Geben Sie
mqtts://mit dem Gerätehost der IoT-Domain und Portnummer 8883 ein:mqtts://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com:8883
.
Schritt 4: Definieren des Befehls in einer JSON-Datei
Sie können die Befehlsdetails in einer JSON-Datei definieren und diese Datei im nächsten Schritt Raw-JSON-Befehl auf einem Gerät aufrufen verwenden.
Speichern Sie dieses Snippet in diesem Beispiel in einer command.json-Datei, damit Sie es verwenden können, um den Befehl aufzurufen und die Antwort gemäß den Anweisungen in der Datei zu verarbeiten.
{
"requestEndpoint": "/endpoints/1234",
"requestDuration": "PT3M",
"requestDataFormat": "JSON",
"requestData": {
"temp": 33
},
"requestDataContentType": "application/json",
"responseEndpoint": "/endpoints/4321",
"responseDuration": "PT3M"
}requestEndpoint: Der URL-Pfad/endpoints/1234, an den die Anforderung gesendet wird. Dies ist in der Regel ein API-Endpunkt oder eine Adresse, bei der die IoT-Plattform auf Befehle horcht.Wenn Sie bereits einen Endpunkt haben, der für Antworten dediziert ist. Beispiel:
/endpoints/<external-id>/responseverwenden diesen Pfad inresponseEndpoint.Oder erstellen Sie eine neue
endpoint/routefür die digitale Zwillingsinstanz in den Regeln für das eingehende Routing des Digital Twin Adapters, in dem das Gerät veröffentlichen kann. Referenzieren Sie diesen Pfad in der Dateicommand.json. Halten Sie den Endpunktpfad konsistent. Der Pfad, den Sie inresponseEndpointdefinieren, wird zum MQTT-Thema, das der Client in Schritt 3 abonnieren muss, damit die Antwort des Befehls angezeigt wird.requestDuration: Die zulässige oder angeforderte Dauer für den Abschluss der Anforderung im ISO 8601-Dauerformat. Beispiel:PT3Mentspricht 3 Minuten.requestDataFormat: Gibt das Datumsformat für die in der JSON-Anforderung gesendeten Daten an.requestData: Die JSON-Payload, die mit einem Schlüssel/Wert-Paar gesendet wird, um einen Temperaturwert auf dem Gerät festzulegen:"temp": 33
Schritt 5: JSON-Raw-Befehl auf einem Gerät aufrufen
Sie können die CLI oder die API verwenden, um einen Befehl auf einem Gerät aufzurufen. Im folgenden Beispiel wird die CLI verwendet.
CLI verwenden
Verwenden Sie den Befehl oci iot digital-twin-instance invoke-raw-json-command und die Parameter, um einen Raw-JSON-Befehl auf einem Gerät aufzurufen.
- Ersetzen Sie <digital-twin-instance-OCID> durch die OCID der digitalen Zwillingsinstanz aus Schritt 1: Digitale Zwillingsinstanz erstellen.
- Verwenden Sie die Datei
command.jsonaus dem vorherigen Schritt 2: Befehl in einer JSON-Datei definieren. - Ersetzen Sie
/endpoints/1234durch den Wert, den Sie in der Dateicommand.jsonfür den Parameter--request-endpointdefiniert haben.
oci iot digital-twin-instance invoke-raw-json-command --digital-twin-instance-id <digital-twin-instance-OCID> --request-endpoint "/endpoints/1234" --from-json file://command.jsonSchritt 6: In MQTTX überprüfen
{
"temp": 33
}Um ein größeres Bildschirmfoto anzuzeigen, klicken Sie mit der rechten Maustaste und öffnen Sie es in einem neuen Tab.


| Szenario | Gerätestatus | Erwarteter Befehlsstatus | Kommentare |
|---|---|---|---|
| Nicht angemeldet | Nicht verbunden, nicht abonniert | ABGELEHNT | Befehlszustellung nicht erfolgreich |
| Verbunden, aber nicht abonniert | Verbunden | ABGELEHNT | Gerät ist online, empfängt jedoch keinen Befehl |
| Abonniert, aber nicht verbunden | Nur abonniert | AUSSTEHEND → ABGELAUFEN | Befehl wartet; läuft nach Timeout ab |
| Ursprünglich abonniert, aber nicht verbunden und wird vor Timeout verbunden | Ursprünglich offline | AUSSTEHEND → GESENDET | Befehl empfangen |
| Verbunden und abonniert | Verbunden und abonniert | SENT | Befehl empfangen |
| One-Way-Befehl (keine Antwort erwartet) | Verbunden und abonniert | ABGESCHLOSSEN | Antwort wird nicht erwartet und verfolgt |
| Zwei-Wege-Befehl (keine Antwort empfangen) | Verbunden und abonniert | NOT_RESPONDED | Gerät reagiert nicht innerhalb des Antwortdauer-Timeouts |
| Zwei-Wege-Befehl (Antwort empfangen) | Verbunden und abonniert | ABGESCHLOSSEN | Gerät sendet Daten innerhalb der Antwortzeitüberschreitung und schließt den Ablauf ab |
Schritt 7: Übermittlungsstatus des Befehls in APEX überwachen
Um Ihre IoT-Daten in APEX anzuzeigen, muss der Zugriff auf Ihre Daten konfiguriert werden. Nachdem diese Konfiguration abgeschlossen ist, können Sie APEX verwenden, um mit Ihren IoT-Daten zu arbeiten.
- Melden Sie sich in APEX beim Workspace der bestimmten IoT-Domain an. Verwenden Sie dazu den folgenden Workspace-Namen und den Datenbankbenutzernamen. Beachten Sie die beiden Unterstriche im Namen des Datenbankschemas:Gehen Sie zu SQL Workshop, und wählen Sie SQL Commands aus, um die IoT-Daten abzufragen.
<domain-short-id-from-device-host>__IOT - Geben Sie den folgenden Befehl ein, ersetzen Sie
<digital-twin-instance-OCID>durch die OCID des digitalen Zwillings, und wählen Sie Ausführen aus, um die Raw-Befehlsdaten abzufragen:select * from raw_command_data where digital_twin_instance_id='<digital-twin-instance-OCID>' - Zeigen Sie unter Ergebnisse die RESPONSE_DATA an:
{"test":1}
