Szenario: Upgrade einer digitalen Zwillingsinstanz auf eine kompatible digitale Zwillingsmodellversion

Aktualisieren Sie eine digitale Zwillingsinstanz, indem Sie eine kompatible Nebenversion des digitalen Zwillingsmodells erstellen, einen neuen digitalen Zwillingsadapter für diese digitale Zwillingsmodellversion erstellen und dann die digitale Zwillingsinstanz aktualisieren, um den neuen digitalen Zwillingsadapter zu verwenden, ohne die digitale Zwillingsinstanz zu löschen.

Verwenden Sie dieses Szenario, wenn ein Ersatzgerät oder ein aktualisiertes Gerät eine additive Payload-Ausprägung sendet, wie einen neuen Telemetriewert, und Sie die Kontinuität für die vorhandene Instanz des digitalen Zwillings beibehalten möchten. Das digitale Zwillingsmodell bleibt der Vertrag für normalisierte Daten. Der digitale Zwillingsadapter ordnet die eingehende Geräte-Payload diesem Vertrag zu.

OCI IoT unterstützt die Aktualisierung einer aktiven digitalen Zwillingsinstanz auf einen anderen digitalen Zwillingsadapter, wenn der neue digitale Zwillingsadapter dieselbe digitale Zwillingsmodellversion oder eine kompatible kleinere Version desselben digitalen Zwillingsmodells referenziert. Dieses Szenario zeigt, wie man auf einem digitalen HLK-Zwillingsmodell aufbaut und wie man eine neue digitale HLK-Zwillingsmodellversion mit einem zusätzlichen Sensor erstellt, während das vorherige digitale Zwillingsmodell intakt bleibt.

Änderungen an wichtigen Versionen des digitalen Zwillingsmodells sind für diesen Upgradeablauf nicht kompatibel. Downgrades werden nicht unterstützt.

HVAC steht für Heizung, Lüftung und Klimaanlage und bezieht sich auf die verschiedenen Systeme, die in Gebäuden verwendet werden, um Innentemperatur, Luftfeuchtigkeit und Gesamtluftqualität zu regulieren.

Aufgaben

Best Practices

  • Werte zu einem vorhandenen digitalen Zwillingsmodell hinzufügen: Mit den Schritten in diesem Szenario können Sie eine kleine DTMI-Version für Modelländerungen additiver digitaler Zwillinge erstellen, z.B. die Version ändern Durch die Nummer von 1 bis 1.1 bleibt die DTMI-Hauptversion beim Aktualisieren einer vorhandenen digitalen Zwillingsinstanz auf einen neuen digitalen Zwillingsadapter gleich, wie in der DTDL v3-Spezifikation unterstützt:

    dtmi:com:oracle:example:hvac;1 bis dtmi:com:oracle:example:hvac;1.1

  • Neue Werte in Ihrem digitalen Zwillingsmodell erstellen und dann eine neue digitale Zwillingsinstanz erstellen: Verwenden Sie eine neue größere DTMI-Version, wenn Sie ein digitales Zwillingsmodell mit verschiedenen Werten erstellen müssen. Für diesen Aktualisierungstyp müssen Sie eine neue Instanz für digitale Zwillinge mit einer Hauptversionsänderung für das neue digitale Zwillingsmodell erstellen. Beispiel:

    dtmi:com:oracle:example:hvac;1 bis dtmi:com:oracle:example:hvac;2

  • Vererbung empfohlen: Bei geringfügigen Aktualisierungen, bei denen neue Werte hinzugefügt werden, wird empfohlen, die Vererbung für Modelländerungen additiver digitaler Zwillinge zu verwenden, wie z.B. ein Modell des digitalen Zwillings, das die vorherige Modellversion des digitalen Zwillings erweitert. Anstatt grundlegende Attribute wie @id, Standort oder Core-Status für jede neue Modellversion des digitalen Zwillings neu zu definieren, erbt das neue digitale Zwillingsmodell die Werte automatisch, wodurch Fehler reduziert und Entwicklungszeit eingespart wird.
  • Halten Sie vorhandene Telemetrie, Eigenschaften, Befehle, Beziehungen und Schemas kompatibel. Bei einer geringfügigen Aktualisierung dürfen Sie vorhandene Vertragselemente nicht umbenennen, entfernen, eingrenzen oder ändern.
  • Erstellen Sie einen neuen digitalen Zwillingsadapter für die neue digitale Zwillingsmodellversion, und halten Sie den vorherigen digitalen Zwillingsadapter für das Rollback verfügbar, bis die aktualisierten Geräte validiert sind.
  • Testen Sie Payloads mit repräsentativer Telemetrie vor einem Produktions-Rollout.

Dateien in diesem Szenario

  • hvac-model.json: Digitales Basis-DTDL-Doppelmodell für Temperatur- und Feuchtigkeitstelemetrie.
  • hvac-envelope.json: Digitaler Basis-Doppeladapter-Umschlag, der timeObserved extrahiert.
  • hvac-routes.json: Basis-Digital-Doppeladapter-Routenzuordnung für Temperatur und Feuchtigkeit.
  • hvac-e-model.json: Kompatible kleine DTDL digitale Zwillingsmodellversion, die Energieverbrauchstelemetrie hinzufügt.
  • hvac-e-envelope.json: Upgrade des digitalen Zwillingsadapters, der das zusätzliche Telemetriefeld akzeptiert.
  • hvac-e-routes.json: Upgrade der Routenzuordnung des digitalen Doppeladapters für Temperatur, Feuchtigkeit und Energieverbrauch.

Schritt 1: Compatible Digital Twin Model Versioning Rules überprüfen

Wenn Sie ein digitales Zwillingsmodell erstellen, prüft OCI IoT, ob für dieselbe Hauptversion bereits ein aktives digitales Zwillingsmodell vorhanden ist.

Wenn eines vorhanden ist, muss ein digitales Zwillingsmodell der neuen Nebenversion ein ausschließlich additiver mit einer kompatiblen Versionsnummer und kompatiblen Werten sein. Wenn Sie eine digitale Zwillingsinstanz aktualisieren, um einen anderen digitalen Zwillingsadapter zu verwenden, muss der Adapter dieselbe Version des digitalen Zwillingsmodells oder eine kompatible höhere Nebenversion referenzieren.

Folgende Kompatibilitätsprüfungen gelten zwischen der alten digitalen Zwillingsmodellversion und der neuen digitalen Zwillingsmodellversion:

Wenn Sie eine aktualisierte digitale Zwillingsschnittstelle und Modellversion erstellen, muss die neue Nebenversion genau die vorherige Nebenversion plus .1 sein. Beispiel:

dtmi:com:oracle:example:hvac;1 bis dtmi:com:oracle:example:hvac;1.1

Alle @id-Werte der Schnittstelle, einschließlich Schema und Pfad, müssen übereinstimmen. Die neue Nebenversion kann nur neu sein: die Versionsnummer mit kleineren Inkrementen und alle zusätzlichen Werte, die dem vorhandenen Modell hinzugefügt werden. Upgrades sind nur kompatibel, wenn die Hauptversion konstant bleibt und unverändert bleibt.

DTDL-ElementKompatibilitätsregelHinweis
InterfaceVorhandene extends-Werte müssen gleich bleiben. Zusätzliche Erweiterungen sind zulässig. Alle vorhandenen Modellinhalte müssen denselben Namen aufweisen. Neue Inhalte sind erlaubt. Schema-Collections müssen dieselbe Größe und dieselben Schema-ID-Pfade aufweisen.Das Hinzufügen wiederverwendbarer Schnittstellenschemas wird nicht unterstützt und abgelehnt.
TelemetryVorhandene Telemetrie muss denselben Namen, DTDL-Klasse, semantische oder ergänzende Typen, @id-Pfad, Einheit, Schema und Validierungs-Constraints beibehalten.comment, displayName und description werden nicht verglichen.
PropertyVorhandene Eigenschaften müssen dieselben Inhaltsregeln, beschreibbare Einstellungen, Schema-, Einheiten- und Validierungs-Constraints beibehalten.Gilt für Schnittstelleneigenschaften und Beziehungseigenschaften.
CommandVorhandene Befehle müssen beibehalten werden. Anforderungs- und Antwortpräsenz, Namen, Schemas und Validierungs-Constraints müssen übereinstimmen.Das Hinzufügen, Entfernen oder Ändern einer Anforderung oder Antwort ist nicht kompatibel.
RelationshipVorhandene Beziehungen müssen dieselbe beschreibbare Einstellung, dasselbe Ziel, dieselbe minimale Multiplizität, dieselbe maximale Multiplizität und dieselben vorhandenen Beziehungseigenschaften beibehalten.Neue Beziehungseigenschaften sind zulässig.
ComponentDas Komponentenschema muss gleich bleiben.Die referenzierte Komponentenschnittstelle wird in dieser Prüfung nicht rekursiv verglichen.
SchemaDer konkrete Schematyp muss gleich bleiben. Die vorhandenen Schemas primitive, geospatial, array, enum, map, object und field müssen kompatible Typen und Validierungs-Constraints beibehalten.Primitive-to-object, enum-to-map und ähnliche Änderungen sind nicht kompatibel.
EnumVorhandene enum-Werte müssen denselben Namen und Literalwert aufweisen.Neue enum-Werte sind zulässig.
ObjectVorhandene Felder müssen beibehalten werden. Jedes vorhandene Feldschema und Validierungs-Constraint muss übereinstimmen.Neue object-Felder sind zulässig.
Interface schemasJedes alte wiederverwendbare Schema muss im neuen digitalen Zwillingsmodell durch dasselbe DTMI-Schema und denselben Pfad existieren und seinen schemaspezifischen Vergleich bestehen.Das Entfernen oder Ändern eines vorhandenen wiederverwendbaren Schemas ist nicht kompatibel. Neue wiederverwendbare Schemas sind zulässig, wenn sie unterstützt werden.

Schritt 2: Erstellen des digitalen Basis-HVAC-Zwillingsmodells

Erstellen Sie das digitale Basismodell mit Temperatur- und Feuchtigkeitstelemetrie.

  • Verwenden Sie die Konsole, um das digitale HVAC-Basismodell in der IoT-Domain zu erstellen.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digitale Zwillingsmodelle und dann Erstellen aus.
    3. Laden Sie die DTDL-JSON von hvac-model.json hoch, oder fügen Sie sie ein.
    4. Wählen Sie Erstellen.
    hvac-model.json
    {
      "@context": [
        "dtmi:dtdl:context;3"
      ],
      "@id": "dtmi:com:oracle:example:hvac;1",
      "@type": "Interface",
      "displayName": "HVAC",
      "description": "A digital twin model for HVAC",
      "contents": [
        {
          "@type": "Telemetry",
          "name": "temperature",
          "schema": "integer"
        },
        {
          "@type": "Telemetry",
          "name": "humidity",
          "schema": "integer"
        }
      ]
    }
  • Verwenden Sie den Befehl oci iot digital-twin-model create, um das digitale HVAC-Basismodell in der IoT-Domain zu erstellen.

    oci iot digital-twin-model create \
      --iot-domain-id <iot-domain-OCID> \
      --spec file://hvac-model.json
    hvac-model.json
    {
      "@context": [
        "dtmi:dtdl:context;3"
      ],
      "@id": "dtmi:com:oracle:example:hvac;1",
      "@type": "Interface",
      "displayName": "HVAC",
      "description": "A digital twin model for HVAC",
      "contents": [
        {
          "@type": "Telemetry",
          "name": "temperature",
          "schema": "integer"
        },
        {
          "@type": "Telemetry",
          "name": "humidity",
          "schema": "integer"
        }
      ]
    }
  • Führen Sie den Vorgang CreateDigitalTwinModel aus, um das digitale Basiszwillingsmodell HVAC in der IoT-Domain zu erstellen.

    Verwenden Sie dieselbe DTDL-Payload, die in hvac-model.json angezeigt wird, wenn Sie die API aufrufen.

Schritt 3: Erstellen Sie den HVAC Digital Twin Adapter

Erstellen Sie einen digitalen Zwillingsadapter, der die Basisversion des digitalen Zwillingsmodells HVAC referenziert und die Geräte-Payload den Telemetriefeldern des digitalen Zwillingsmodells zuordnet.

  • Verwenden Sie die Konsole, um den digitalen HVAC-Basisadapter für Zwillinge zu erstellen und den eingehenden Envelope hochzuladen oder einzufügen und JSON weiterzuleiten.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digital Twin Adapter und dann Erstellen aus.
    3. Geben Sie einen Namen und eine optionale Beschreibung für den digitalen HVAC-Basisadapter ein.
    4. Wählen Sie mit dem DTMI dtmi:com:oracle:example:hvac;1 das digitale Basismodell HVAC aus.
    5. Aktivieren Sie Eingehenden Envelope und Routen angeben, und laden Sie hvac-envelope.json und hvac-routes.json hoch oder fügen Sie sie ein.
    6. Wählen Sie Erstellen.
    hvac-envelope.json
    {
      "referenceEndpoint": "/telemetry",
      "referencePayload": {
        "dataFormat": "JSON",
        "data": {
          "time": 1773768299143534,
          "temp": 0,
          "hum": 0
        }
      },
      "envelopeMapping": {
        "timeObserved": "$.time"
      }
    }
    hvac-routes.json
    [
      {
        "condition": "*",
        "payloadMapping": {
          "$.temperature": "$.temp",
          "$.humidity": "$.hum"
        }
      }
    ]
  • Verwenden Sie den Befehl oci iot digital-twin-adapter create, um den digitalen Zwillingsadapter des HVAC-Basismoduls zu erstellen.

    oci iot digital-twin-adapter create \
      --iot-domain-id <iot-domain-OCID> \
      --digital-twin-model-spec-uri "dtmi:com:oracle:example:hvac;1" \
      --inbound-envelope file://hvac-envelope.json \
      --inbound-routes file://hvac-routes.json
    hvac-envelope.json
    {
      "referenceEndpoint": "/telemetry",
      "referencePayload": {
        "dataFormat": "JSON",
        "data": {
          "time": 1773768299143534,
          "temp": 0,
          "hum": 0
        }
      },
      "envelopeMapping": {
        "timeObserved": "$.time"
      }
    }
    hvac-routes.json
    [
      {
        "condition": "*",
        "payloadMapping": {
          "$.temperature": "$.temp",
          "$.humidity": "$.hum"
        }
      }
    ]
  • Führen Sie den Vorgang CreateDigitalTwinAdapter aus, um den digitalen Zwillingsadapter für HVAC in der IoT-Domain zu erstellen.

    Verwenden Sie dieselben eingehenden Envelope- und eingehenden Routen-Payloads, die in den herunterladbaren Dateien angezeigt werden.

Schritt 4: Erstellen der digitalen Zwillingsinstanz

Erstellen Sie eine digitale Zwillingsinstanz, die den digitalen HVAC-Basisdoppeladapter verwendet. Der externe Schlüssel ist der Benutzername, den das Gerät bei der Verbindung verwendet.

  • Verwenden Sie die Konsole, um die digitale Zwillingsinstanz für das HVAC-Gerät zu erstellen.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digitale Zwillingsinstanzen und dann Erstellen aus.
    3. Geben Sie LG HVAC 1 als Anzeigenamen ein.
    4. Wählen Sie den in Schritt 3 erstellten digitalen HVAC-Basisadapter.
    5. Wählen Sie die Authentifizierungs-ID aus, oder fügen Sie das Zertifikat oder die Secret-OCID ein.
    6. Geben Sie hvac1 als externen Schlüssel ein.
    7. Wählen Sie Erstellen.
  • Verwenden Sie den Befehl oci iot digital-twin-instance create, um die digitale Zwillingsinstanz zu erstellen.

    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-OCID> \
      --display-name "LG HVAC 1" \
      --auth-id <certificate-or-secret-OCID> \
      --digital-twin-adapter-id <base-digital-twin-adapter-OCID> \
      --external-key hvac1
  • Führen Sie den Vorgang CreateDigitalTwinInstance aus, um die digitale Zwillingsinstanz zu erstellen.

    Verwenden Sie die OCID des HVAC-Digital Twin-Basisadapters und die Authentifizierungs-ID für die Gerätezugangsdaten.

Schritt 5: Senden der Telemetrie an die Basis-Digital-Twin-Instanz

Senden Sie eine Payload, die mit der Zuordnung des Basisadapters für digitale Zwillinge übereinstimmt, und rufen Sie dann den Inhalt der digitalen Zwillingsinstanz ab, um die normalisierte Telemetrie zu prüfen.

  • Verwenden Sie MQTTX, um Telemetrie über MQTTS zu senden.

    mqttx pub \
      -t "data" \
      -m '{
        "temp": 70,
        "hum": 60
      }' \
      -u hvac1 \
      -P '<secret-contents>'
  • Verwenden Sie curl, um Telemetrie über HTTPS zu senden. In diesem Beispiel wird die HTTP-Basisauthentifizierung mit dem externen Schlüssel der digitalen Zwillingsinstanz und dem Klartext-Secret-Content verwendet.

    curl -i -u "hvac1:<secret-contents>" \
      -H "Content-Type: application/json" \
      -X POST \
      "https://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com/data" \
      -d '{
        "temp": 70,
        "hum": 60
      }'

Rufen Sie den Inhalt der digitalen Zwillingsinstanz ab, um die neuesten normalisierten Werte zu prüfen.

  • Öffnen Sie auf der Registerkarte Digitale Zwillingsinstanzen die Detailseite für die digitale Zwillingsinstanz für LG HVAC 1, und prüfen Sie die neuesten Inhaltswerte.

  • Mit dem Befehl oci iot digital-twin-instance get-content können Sie Inhalte aus der Instanz des digitalen Zwillings abrufen.

    oci iot digital-twin-instance get-content \
      --digital-twin-instance-id <lg-hvac-1-OCID>
  • Führen Sie den Vorgang GetDigitalTwinInstanceContent aus, um Inhalt aus der Instanz des digitalen Zwillings abzurufen.

Schritt 6: Erstellen Sie eine kompatible Version des digitalen HVAC-Doppelmodells

Erstellen Sie eine kompatible kleinere digitale Zwillingsmodellversion, die das digitale Basismodell HVAC extends und Telemetrie für den Energieverbrauch hinzufügt. Die Hauptversion bleibt 1, und die Nebenversion wird auf 1.1 erhöht.

  • Verwenden Sie die Konsole, um die kompatible Version des kleineren digitalen HVAC-Doppelmodells in der IoT-Domain zu erstellen.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digitale Zwillingsmodelle und dann Erstellen aus.
    3. Laden Sie die DTDL-JSON von hvac-e-model.json hoch, oder fügen Sie sie ein.
    4. Wählen Sie Erstellen.
    hvac-e-model.json
    {
      "@context": [
        "dtmi:dtdl:context;3"
      ],
      "@id": "dtmi:com:oracle:example:hvac;1.1",
      "@type": "Interface",
      "extends": "dtmi:com:oracle:example:hvac;1",
      "displayName": "HVACe",
      "description": "A digital twin model for HVACe",
      "contents": [
        {
          "@type": "Telemetry",
          "name": "energyConsumption",
          "schema": "integer"
        }
      ]
    }
  • Verwenden Sie den Befehl oci iot digital-twin-model create, um die kompatible Version des digitalen HVAC-Mollzwillingsmodells zu erstellen.

    oci iot digital-twin-model create \
      --iot-domain-id <iot-domain-OCID> \
      --spec file://hvac-e-model.json
    hvac-e-model.json
    {
      "@context": [
        "dtmi:dtdl:context;3"
      ],
      "@id": "dtmi:com:oracle:example:hvac;1.1",
      "@type": "Interface",
      "@extends": "dtmi:com:oracle:example:hvac;1",
      "displayName": "HVACe",
      "description": "A digital twin model for HVACe",
      "contents": [
        {
          "@type": "Telemetry",
          "name": "energyConsumption",
          "schema": "integer"
        }
      ]
    }
  • Führen Sie den Vorgang CreateDigitalTwinModel aus, um die kompatible Version des kleineren digitalen HVAC-Twin-Modells in der IoT-Domain zu erstellen.

    Verwenden Sie dieselbe DTDL-Payload, die in hvac-e-model.json angezeigt wird, wenn Sie die API aufrufen.

Schritt 7: Erstellen Sie einen Digital Twin Adapter für die neue Digital Twin Model Version

Erstellen Sie einen neuen digitalen Zwillingsadapter, der die kompatible Version des digitalen Zwillingsmodells HVAC referenziert und das zusätzliche Telemetriefeld abbildet.

  • Verwenden Sie die Konsole, um den aktualisierten digitalen HVAC-Zwillingsadapter zu erstellen und den eingehenden Envelope hochzuladen oder einzufügen und JSON weiterzuleiten.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digital Twin Adapter und dann Erstellen aus.
    3. Geben Sie einen Namen und eine optionale Beschreibung für den aktualisierten digitalen HVAC-Doppeladapter ein.
    4. Wählen Sie mit dem DTMI dtmi:com:oracle:example:hvac;1.1 die HVAC-Version des digitalen Zwillingsmodells.
    5. Aktivieren Sie Eingehenden Envelope und Routen angeben, und laden Sie hvac-e-envelope.json und hvac-e-routes.json hoch oder fügen Sie sie ein.
    6. Wählen Sie Erstellen.
    hvac-e-envelope.json
    {
      "referenceEndpoint": "/telemetry",
      "referencePayload": {
        "dataFormat": "JSON",
        "data": {
          "time": 1773768299143534,
          "temp": 0,
          "hum": 0,
          "ec": 0
        }
      },
      "envelopeMapping": {
        "timeObserved": "$.time"
      }
    }
    hvac-e-routes.json
    [
      {
        "condition": "*",
        "payloadMapping": {
          "$.temperature": "$.temp",
          "$.humidity": "$.hum",
          "$.energyConsumption": "$.ec"
        }
      }
    ]
  • Verwenden Sie den Befehl oci iot digital-twin-adapter create, um den aktualisierten digitalen Zwillingsadapter für HVAC zu erstellen.

    oci iot digital-twin-adapter create \
      --iot-domain-id <iot-domain-OCID> \
      --digital-twin-model-spec-uri "dtmi:com:oracle:example:hvac;1.1" \
      --inbound-envelope file://hvac-e-envelope.json \
      --inbound-routes file://hvac-e-routes.json
    hvac-e-envelope.json
    {
      "referenceEndpoint": "/telemetry",
      "referencePayload": {
        "dataFormat": "JSON",
        "data": {
          "time": 1773768299143534,
          "temp": 0,
          "hum": 0,
          "ec": 0
        }
      },
      "envelopeMapping": {
        "timeObserved": "$.time"
      }
    }
    hvac-e-routes.json
    [
      {
        "condition": "*",
        "payloadMapping": {
          "$.temperature": "$.temp",
          "$.humidity": "$.hum",
          "$.energyConsumption": "$.ec"
        }
      }
    ]
  • Führen Sie den Vorgang CreateDigitalTwinAdapter aus, um den aktualisierten digitalen Zwillingsadapter für HVAC in der IoT-Domain zu erstellen.

    Verwenden Sie dieselben eingehenden Envelope- und eingehenden Routen-Payloads, die in den herunterladbaren Dateien angezeigt werden.

Schritt 8: Aktualisieren Sie die Digital Twin Instance, um den neuen Digital Twin Adapter zu verwenden

Aktualisieren Sie die vorhandene digitale Zwillingsinstanz, um den digitalen Zwillingsadapter für die kompatible Version des digitalen Zwillingsmodells zu referenzieren. Die digitale Zwillingsinstanz behält die gleiche Identität, den gleichen externen Schlüssel und die gleiche Datenkontinuität bei, während sie beginnt, Payloads für den neuen Vertrag über das digitale Zwillingsmodell zu akzeptieren.

Hinweis

Verwenden Sie eine neue Instanz des digitalen Zwillings, anstatt die vorhandene Instanz des digitalen Zwillings zu aktualisieren, wenn das digitale Zwillingsmodell eine neue Hauptversion verwendet, vorhandene Elemente entfernt, Felder umbenannt, Constraints eingeschränkt oder der Vertrag des digitalen Zwillingsmodells anderweitig nicht additiv geändert wird.
  • Verwenden Sie die Konsole, um die vorhandene digitale Zwillingsinstanz zu aktualisieren und den aktualisierten digitalen Zwillingsadapter für HVAC zu verwenden.

    1. Öffnen Sie auf der Listenseite IoT-Domains die IoT-Domain, mit der Sie arbeiten möchten.
    2. Wählen Sie die Registerkarte Digital Twin Instances aus.
    3. Öffnen Sie die Detailseite der digitalen Zwillingsinstanz für LG HVAC 1.
    4. Wählen Sie Bearbeiten aus.
    5. Ändern Sie den digitalen Zwillingsadapter in den aktualisierten digitalen Zwillingsadapter für HVAC, der in Schritt 7 erstellt wurde.
    6. Speichern Sie die Änderungen.
  • Verwenden Sie den Befehl oci iot digital-twin-instance update, um die digitale Zwillingsinstanz zu aktualisieren.

    oci iot digital-twin-instance update \
      --digital-twin-instance-id <lg-hvac-1-OCID> \
      --digital-twin-adapter-id <upgraded-digital-twin-adapter-OCID>
  • Führen Sie den Vorgang UpdateDigitalTwinInstance aus, um die digitale Zwillingsinstanz zu aktualisieren.

    Stellen Sie die ID des digitalen Zwillingsadapters auf die OCID des aktualisierten digitalen Zwillingsadapters für HVAC ein.

Schritt 9: Digital Twin Instance-Telemetrie nach dem Upgrade validieren

Senden Sie eine Payload, die das neue Telemetriefeld enthält, und prüfen Sie, ob der Inhalt der digitalen Zwillingsinstanz die vom aktualisierten digitalen Zwillingsadapter zugeordneten Werte enthält.

Wenn die Validierung fehlschlägt, vergleichen Sie das digitale Zwillingsmodell DTMI, den digitalen Zwillingsadapter --digital-twin-model-spec-uri, das Envelope-Mapping und das Routing-Payload-Mapping. Der aktualisierte digitale Zwillingsadapter muss die kompatible Version des kleinen digitalen Zwillingsmodells referenzieren und Nutzlastfelder den Namen zuordnen, die von diesem digitalen Zwillingsmodell definiert werden.

  • Verwenden Sie MQTTX, um Telemetrie über MQTTS zu senden.

    mqttx pub \
      -t "data" \
      -m '{
        "temp": 70,
        "hum": 60,
        "ec": 38
      }' \
      -u hvac1 \
      -P '<secret-contents>'
  • Verwenden Sie curl, um Telemetrie über HTTPS zu senden. In diesem Beispiel wird die HTTP-Basisauthentifizierung mit dem externen Schlüssel der digitalen Zwillingsinstanz und dem Klartext-Secret-Content verwendet.

    curl -i -u "hvac1:<secret-contents>" \
      -H "Content-Type: application/json" \
      -X POST \
      "https://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com/data" \
      -d '{
        "temp": 70,
        "hum": 60,
        "ec": 38
      }'

Optionaler Schritt: Inhalt abrufen

Rufen Sie den Inhalt der digitalen Zwillingsinstanz ab, um die neuesten normalisierten Werte zu prüfen.

  • Öffnen Sie auf der Registerkarte Digitale Zwillingsinstanzen die Detailseite für die digitale Zwillingsinstanz für LG HVAC 1, und prüfen Sie die neuesten Inhaltswerte.

  • Mit dem Befehl oci iot digital-twin-instance get-content können Sie Inhalte aus der Instanz des digitalen Zwillings abrufen.

    oci iot digital-twin-instance get-content \
      --digital-twin-instance-id <lg-hvac-1-OCID>
  • Führen Sie den Vorgang GetDigitalTwinInstanceContent aus, um Inhalt aus der Instanz des digitalen Zwillings abzurufen.

Häufig gestellte Fragen (FAQ)

In dieser FAQ werden kompatible digitale Zwillingsmodellupgrades und additive Nutzlastformen beschrieben.

Was ist eine zusätzliche Payload-Form?
Eine zusätzliche Payload-Ausprägung behält die vorhandenen Payload-Felder bei und fügt neue Felder hinzu, ohne die vorhandenen Feldnamen, Datentypen, Bedeutung, Einheiten oder Constraints zu ändern. In diesem Szenario wird die Basis-Payload { "temp": 70, "hum": 60 } zu { "temp": 70, "hum": 60, "ec": 38 }. Die Payload ist additiv, da temp und hum immer noch dasselbe bedeuten und das Gerät nur ec für den Energieverbrauch hinzufügt.
Wie hängt eine additive Payload-Form mit der Modellversion des digitalen Zwillings zusammen?
Die Geräte-Nutzlast und das digitale Zwillingsmodell müssen sich gemeinsam weiterentwickeln. Die neue Version des digitalen Zwillingsmodells fügt energyConsumption hinzu, während die vorhandene Telemetrie temperature und humidity kompatibel bleibt. Der aktualisierte digitale Zwillingsadapter ordnet das neue Payload-Feld ec dem neuen digitalen Zwillingsmodellfeld energyConsumption zu.
Was ist nicht additiv?
Eine Änderung ist nicht additiv, wenn sie ein vorhandenes Feld umbenennt, ein vorhandenes Feld entfernt, einen Schematyp ändert, Einheiten oder Bedeutung ändert, Validierungs-Constraints eingrenzt, Befehls- oder Antwortverträge ändert oder zu einer anderen digitalen Hauptmodellversion wechselt. Beispiel: Wenn Sie hum in humidityPct ändern oder temp von einer Ganzzahl in eine Zeichenfolge ändern, ist dies nicht additiv.
Können alte Geräte weiterhin die ursprüngliche Nutzlast senden?
Ja, alte Geräte können die ursprünglichen Felder weiterhin senden, wenn das aktualisierte digitale Zwillingsadapter-Mapping sie noch verarbeitet. Das neue Feld wird nur ausgefüllt, wenn das aktualisierte Gerät es sendet und der digitale Zwillingsadapter es dem neuen Feld des digitalen Zwillingsmodells zuordnet.

Fehlerbehebung

Die Anforderung zur Erstellung des digitalen Zwillingsmodells wurde abgelehnt

Die neue Modellversion für kleinere digitale Zwillinge könnte ein vorhandenes Vertragselement geändert haben, anstatt nur neuen Inhalt hinzuzufügen. Vergleichen Sie die alten und neuen digitalen Zwillingsmodelle DTDL. Vorhandene Telemetrie-, Eigenschafts-, Befehls-, Beziehungs-, Schemas- und Validierungs-Constraints müssen kompatibel bleiben.

Die Aktualisierungsanforderung für die digitale Zwillingsinstanz wurde abgelehnt

Der neue digitale Zwillingsadapter kann auf eine inkompatible digitale Zwillingsmodellversion, eine andere Hauptversion oder ein Downgrade verweisen. Bestätigen Sie, dass der digitale Zwillingsadapter dieselbe digitale Zwillingsmodellversion oder die nächste kompatible höhere Nebenversion verwendet, wie dtmi:com:oracle:example:hvac;1.1.

Das Upgrade ist erfolgreich, aber das neue Feld ist nicht gespeichert

Die digitale Zwillingsinstanz verwendet möglicherweise immer noch den alten digitalen Zwillingsadapter, oder die aktualisierte Routenzuordnung ordnet das neue Payload-Feld möglicherweise nicht zu. Prüfen Sie die OCID des Digital Twin-Adapters der Digital Twin Instance, und prüfen Sie, ob hvac-e-routes.json $.energyConsumption $.ec zuordnet.

Vorhandene Telemetrie fehlt nach dem Upgrade

Die aktualisierte Zuordnung des digitalen Zwillingsadapters hat möglicherweise die vorhandenen Payload-Zuordnungen gelöscht oder den Payload-Pfad geändert. Behalten Sie die vorhandenen Mappings für temperature und humidity bei, und fügen Sie dann die neue Zuordnung für energyConsumption hinzu.

Alte Geräte scheitern, nachdem die digitale Zwillingsinstanz auf den aktualisierten digitalen Zwillingsadapter verschoben wurde

Der aktualisierte digitale Zwillingsadapter erfordert möglicherweise das neue Feld oder unterstützt nicht mehr die ursprüngliche Payload-Ausprägung. Machen Sie das Mapping des digitalen Zwillingsadapters tolerant gegenüber Payloads, die das neue Feld nicht enthalten, oder verschieben Sie Geräte in kleineren Gruppen, nachdem Sie jede Payload-Form des Geräts validiert haben.