シナリオ: IoTフロー・ランタイム・シナリオのリソースの設定

次のフロー・ランタイム・シナリオで使用される共通IoTリソースを作成し、この設定を1回実行して、次のシナリオでこれらのIoTリソースを再利用できるようにします。

デプロイメントの例には、1つの直接接続ゲートウェイ、2つの間接接続HVACデバイス、2つの間接接続ボイラー・デバイスがあります。

シナリオでは、外部MQTTブローカ、オブジェクト・ストレージまたはOCI IoTキューによって、IoTフロー・ランタイムでデータがNode-REDに送信されます。その後、フローはOCI IoTデバイス・ホストまたはOCI通知トピックに公開されます。

シナリオのネットワーク設定

各シナリオでは、次のネットワーク設定を使用します。

シナリオまたはアクセス・パス 接続 ネットワーク設定
シナリオ: 外部ブローカからのライブ・データの取込み 外部MQTTブローカおよびOCI IoTデバイス・ホスト プライベート・サブネットを、NATゲートウェイを介したアウトバウンド・ルートまたは別の承認されたインターネット・エグレス・パスとともに使用します。TCPポート8883上のアウトバウンドMQTT TLSトラフィックをブローカおよびデバイス・ホストに許可します。
シナリオ: オブジェクト・ストレージからのバッチ・データの取込み OCI Object StorageおよびOCI IoTデバイス・ホスト オブジェクト・ストレージへのOCIサービス接続を提供し、TCPポート8883のアウトバウンドMQTT TLSトラフィックをデバイス・ホストに許可します。フロー・ランタイム動的グループを作成し、シナリオ・バケットのオブジェクト・ストレージ読取りポリシーでリソース・プリンシパルを使用するようにオブジェクト・ストレージ・ノードを構成します。パブリック・サブネットまたはパブリック・ロード・バランサは必要ありません。
シナリオ: 正規化されたIoTデータの監視と電子メール・アラートの送信 OCI IoTデータベース・キューとOCI通知 IoTデータベース・キュー、NotificationsサービスおよびIoTコマンド・サービスへのOCIサービス接続を提供します。通知ポリシーおよびデジタル・ツイン・コマンド・インボーク・ポリシーでリソース・プリンシパルを使用するように、OCI通知ノードおよびIoT送信コマンド・ノードを構成します。パブリックMQTTブローカ、パブリック・サブネットまたはパブリック・ロード・バランサは必要ありません。
ノード-RED UIおよびフロー・ドキュメント管理 フロー・ランタイム・ホストおよびOCIサービスAPI フロー・ランタイムからノード-REDエディタを開き、コンソール、CLIまたはAPIを使用してフロー・ドキュメントを管理します。これらの管理パスは、フローに由来するMQTTおよびOCIサービス接続とは別です。
ノート

ファイル・ストレージは、シナリオ: オブジェクト・ストレージからのバッチ・データの取込みでは使用されません。ファイル・ストレージ・マウントを明示的に使用する別のフローについては、選択したサブネットがマウント・ターゲットに到達でき、そのセキュリティ・ルールで必要なファイル・ストレージ・トラフィックが許可されていることを確認します。IoTフロー・ランタイムのファイル・ストレージ・アクセスの構成を参照してください。

リソース名とツール

フロー・ランタイム・シナリオでは、次の名前を使用します。異なる名前を使用する場合は、対応するすべてのトピック、外部キーおよびフロー値を更新します。

リソース値の例
ドメイン・グループFR-GUIDE-DG
IoTドメインfr-guide-domain
ゲートウェイの表示名FR-GUIDE-GW-01
ゲートウェイ外部キーfr-guide-gw-01
HVAC表示名FR-GUIDE-HVAC-01およびFR-GUIDE-HVAC-02
HVAC外部キーfr-guide-hvac-01およびfr-guide-hvac-02
ボイラー表示名FR-GUIDE-BOILER-01およびFR-GUIDE-BOILER-02
ボイラー外部キーfr-guide-boiler-01およびfr-guide-boiler-02
パブリックMQTTブローカtest.mosquitto.org
パブリックMQTT TLSポート8883
単一実行時のトピックsource/+/+
共有サブスクリプション・トピック$share/fr-guide/source/+/+

フロー・ランタイムの場合はノードREDエディタにアクセスし、MQTTXなどのMQTTクライアントにアクセスする必要があります。

次の設定でMQTTX接続を作成します:

フィールド
名前fr-guide-public-broker
ホストtest.mosquitto.org
ポート8883
SSL/TLS有効
プロトコルMQTT 5.0
ユーザー名とパスワード空白のまま

プレースホルダ値

この例のプレースホルダ値の説明。

プレースホルダ摘要
<compartment-ocid>IoTリソースのコンパートメント。
<iot-domain-group-ocid>IoTドメイン・グループOCID。
<iot-domain-ocid>IoTドメインOCID。
<device-host>IoTドメインのデバイス・ホスト。IoTドメインの詳細の取得を参照してください
<subnet-ocid>顧客のネットワーク・アクセスを必要とするフロー・ランタイムで使用されるサブネット。
<nsg-ocid>顧客のネットワーク・アクセスを必要とするフロー・ランタイムで使用されるネットワーク・セキュリティ・グループ。
<object-storage-namespace>バッチ・データ・シナリオのオブジェクト・ストレージ・ネームスペース。
<bucket-name>バッチCSVオブジェクトを含むオブジェクト・ストレージ・バケット。
<notification-topic-ocid>モニタリング・シナリオのOCI通知トピックのOCID。
<domain-short-id>IoTドメイン・デバイス・ホストの最初のラベル。IoTドメインの詳細の取得を参照してください。
<flow-runtime-short-id>フロー・ランタイム・ホストの最初のラベル。
<secret-or-certificate-ocid>ゲートウェイの認証に使用されるVaultシークレットまたは証明書OCID。
<gateway-adapter-ocid>ゲートウェイ・デジタル・ツイン・アダプタのOCID。
<hvac-adapter-ocid>HVACデジタルツインアダプタのOCID。
<boiler-adapter-ocid>Boiler Digital Twin AdapterのOCID。
<gateway-instance-ocid>ゲートウェイ・デジタル・ツイン・インスタンスのOCID。
<hvac-01-digital-twin-ocid>最初のHVACデジタル・ツイン・インスタンスのOCID。
<hvac-02-digital-twin-ocid>2番目のHVACデジタル・ツイン・インスタンスのOCID。
<boiler-01-digital-twin-ocid>最初のボイラー・デジタル・ツイン・インスタンスのOCID。
<boiler-02-digital-twin-ocid>2番目のボイラー・デジタル・ツイン・インスタンスのOCID。

ステップ1: デジタル・ツイン・モデルの作成

ゲートウェイ・ヘルス・テレメトリ、HVACテレメトリ、ボイラー温度および圧力テレメトリ用のデジタル・ツイン・モデルを作成します。次の指定をgateway-model.jsonhvac-model.jsonおよびboiler-model.jsonとして保存します。

ゲートウェイモデル.json
{
  "@context": [
    "dtmi:dtdl:context;3",
    "dtmi:dtdl:extension:historization;1"
  ],
  "@id": "dtmi:com:oracle:iot:flowruntime:GatewayGuide;1",
  "@type": "Interface",
  "displayName": "Flow Runtime Gateway Guide Model",
  "contents": [
    {"@type": ["Telemetry", "Historized"], "name": "cpuUtilization", "schema": "integer"},
    {"@type": ["Telemetry", "Historized"], "name": "memoryUtilization", "schema": "integer"},
    {"@type": ["Telemetry", "Historized"], "name": "storageUtilization", "schema": "integer"},
    {"@type": ["Telemetry", "Historized"], "name": "firmwareVersion", "schema": "string"}
  ]
}
hvacモデル.json
{
  "@context": [
    "dtmi:dtdl:context;3",
    "dtmi:dtdl:extension:historization;1"
  ],
  "@id": "dtmi:com:oracle:iot:flowruntime:HVACGuide;1",
  "@type": "Interface",
  "displayName": "Flow Runtime HVAC Guide Model",
  "contents": [
    {"@type": ["Telemetry", "Historized"], "name": "temperature", "schema": "double"},
    {"@type": ["Telemetry", "Historized"], "name": "humidity", "schema": "double"},
    {"@type": ["Telemetry", "Historized"], "name": "pressure", "schema": "double"},
    {"@type": ["Telemetry", "Historized"], "name": "mode", "schema": "string"}
  ]
}
ボイラーモデル.json
{
  "@context": [
    "dtmi:dtdl:context;3"
  ],
  "@id": "dtmi:com:oracle:example:boiler;1",
  "@type": "Interface",
  "displayName": "Boiler",
  "description": "A digital twin model for Boiler",
  "contents": [
    {
      "@type": "Telemetry",
      "name": "temperature",
      "schema": "integer"
    },
    {
      "@type": "Telemetry",
      "name": "pressure",
      "schema": "integer"
    }
  ]
}

各ゲートウェイおよびHVACメッセージでは、4つの正規化された行が生成されます。各ボイラー・メッセージは、temperatureおよびpressureに対してそれぞれ1つずつ、2つの正規化された行を生成します。

    1. 「IoTドメイン」リスト・ページで、操作するIoTドメインを選択します。リスト・ページの検索に関するヘルプが必要な場合は、IoTドメインのリストを参照してください。
    2. 「デジタル・ツイン・モデル」を選択し、「作成」を選択します。
    3. ゲートウェイ・モデルの名前を入力し、gateway-model.jsonをアップロードするか、その仕様を貼り付けて、「作成」を選択します。
    4. hvac-model.jsonおよびboiler-model.jsonに対して前述のステップを繰り返します。
  • 3つのデジタル・ツイン・モデルすべてを作成するには、oci iot digital-twin-model createコマンドを使用します。

    oci iot digital-twin-model create \
      --iot-domain-id <iot-domain-ocid> \
      --spec file://gateway-model.json
    
    oci iot digital-twin-model create \
      --iot-domain-id <iot-domain-ocid> \
      --spec file://hvac-model.json
    
    oci iot digital-twin-model create \
      --iot-domain-id <iot-domain-ocid> \
      --spec file://boiler-model.json
  • gateway-model.jsonhvac-model.jsonおよびboiler-model.jsonに対してCreateDigitalTwinModel操作を実行します。IoTドメインOCIDおよび対応するDTDL仕様を各リクエストで指定します。

ステップ2: デジタルツインアダプタを作成する

各モデルのデジタル・ツイン・アダプタを作成します。次の定義をgateway-envelope.jsongateway-routes.jsonhvac-envelope.jsonhvac-routes.jsonboiler-envelope.jsonおよびboiler-routes.jsonとして保存します。

ゲートウェイエンベロープ.json
{
  "referenceEndpoint": "/data",
  "referencePayload": {
    "dataFormat": "JSON",
    "data": {
      "time": 1773768299143534,
      "cpuUtil": 30,
      "memUtil": 25,
      "diskUtil": 20,
      "firmware": "Oracle Linux 9.1"
    }
  },
  "envelopeMapping": {
    "timeObserved": "$.time",
    "target": "${if ([\"boilers\", \"hvacs\"] | contains([endpoint(1)])) then endpoint(2) else null end}",
    "contentRoot": "$"
  }
}
ゲートウェイルート.json
[
  {
    "condition": "${endpoint(1) == \"data\"}",
    "referencePayload": {
      "dataFormat": "JSON",
      "data": {
        "time": 1773768299143534,
        "cpuUtil": 30,
        "memUtil": 25,
        "diskUtil": 20,
        "firmware": "Oracle Linux 9.1"
      }
    },
    "payloadMapping": {
      "$.cpuUtilization": "$.cpuUtil",
      "$.memoryUtilization": "$.memUtil",
      "$.storageUtilization": "$.diskUtil",
      "$.firmwareVersion": "$.firmware"
    }
  }
]
hvac-envelope.json
{
  "referenceEndpoint": "/data",
  "referencePayload": {
    "dataFormat": "JSON",
    "data": {
      "time": 1773768299143534,
      "temperature": 72,
      "humidity": 45,
      "pressure": 101.2,
      "mode": "cool"
    }
  },
  "envelopeMapping": {
    "timeObserved": "$.time"
  }
}
hvac-routes.json
[
  {
    "condition": "*",
    "referencePayload": {
      "dataFormat": "JSON",
      "data": {
        "time": 1773768299143534,
        "temperature": 72,
        "humidity": 45,
        "pressure": 101.2,
        "mode": "cool"
      }
    },
    "payloadMapping": {
      "$.temperature": "$.temperature",
      "$.humidity": "$.humidity",
      "$.pressure": "$.pressure",
      "$.mode": "$.mode"
    }
  }
]
ボイラエンベロープ.json
{
  "referenceEndpoint": "/telemetry",
  "referencePayload": {
    "dataFormat": "JSON",
    "data": {
      "timestamp": 1773768299143534,
      "temperature": 0,
      "pressure": 0
    }
  },
  "envelopeMapping": {
    "timeObserved": "$.timestamp"
  }
}
ボイラ・ルート.json
[
  {
    "condition": "*",
    "payloadMapping": {
      "$.temperature": "$.temperature",
      "$.pressure": "$.pressure"
    }
  }
]

ゲートウェイ・ターゲット・マッピングは、hvacs/<external-key>またはboilers/<external-key>にパブリッシュされたメッセージを、間接的に接続された一致するデジタル・ツイン・インスタンスに委任します。

    1. 「IoTドメイン詳細」ページで、「デジタル・ツイン・アダプタ」「作成」の順に選択します。
    2. ゲートウェイ・アダプタ名前を入力し、ゲートウェイ・モデルを選択します。
    3. gateway-envelope.jsonインバウンド・エンベロープとしてアップロードまたは貼り付け、gateway-routes.jsonインバウンド・ルートとして貼り付け、「作成」を選択します。
    4. HVACモデルを選択し、hvac-envelope.jsonおよびhvac-routes.jsonを使用して、HVACアダプタを作成します。
    5. ボイラー・アダプタを作成するには、「ボイラー・モデル」を選択し、boiler-envelope.jsonおよびboiler-routes.jsonを使用します。
    6. デジタル・ツイン・アダプタのOCIDを記録します。
  • 3つのデジタル・ツイン・アダプタすべてを作成するには、oci iot digital-twin-adapter createコマンドを使用します。

    oci iot digital-twin-adapter create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name "FR Guide Gateway Adapter" \
      --digital-twin-model-spec-uri "dtmi:com:oracle:iot:flowruntime:GatewayGuide;1" \
      --inbound-envelope file://gateway-envelope.json \
      --inbound-routes file://gateway-routes.json
    
    oci iot digital-twin-adapter create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name "FR Guide HVAC Adapter" \
      --digital-twin-model-spec-uri "dtmi:com:oracle:iot:flowruntime:HVACGuide;1" \
      --inbound-envelope file://hvac-envelope.json \
      --inbound-routes file://hvac-routes.json
    
    oci iot digital-twin-adapter create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name "FR Guide Boiler Adapter" \
      --digital-twin-model-spec-uri "dtmi:com:oracle:example:boiler;1" \
      --inbound-envelope file://boiler-envelope.json \
      --inbound-routes file://boiler-routes.json

    デジタル・ツイン・アダプタごとに返されるOCIDを記録します。

  • ゲートウェイ、HVACおよびボイラー・アダプタに対してCreateDigitalTwinAdapter操作を実行します。各リクエストで、IoTドメインOCID、対応するモデル仕様URI、インバウンド・エンベロープおよびインバウンド・ルートを指定します。各アダプタに対して返されたOCIDを記録します。

ステップ3: デジタル・ツイン・インスタンスの作成

最初に直接接続されたゲートウェイのデジタル・ツイン・インスタンスを作成してから、間接的に接続された2つのHVACおよび間接的に接続された2つのボイラー・デジタル・ツイン・インスタンスを作成します。サンプル・フローは、デバイス・ホストに対してfr-guide-gw-01として認証します。

    1. 「IoTドメイン詳細」ページで、「デジタル・ツイン・インスタンス」「作成」の順に選択します。
    2. 表示名FR-GUIDE-GW-01、外部キーfr-guide-gw-01、接続タイプゲートウェイゲートウェイ・アダプタおよびデバイス認証IDを使用して、ゲートウェイを作成します。
    3. ゲートウェイ・デジタル・ツイン・インスタンスのOCIDおよびデバイス・パスワードを記録します。
    4. 表示名FR-GUIDE-HVAC-01および外部キーfr-guide-hvac-01を使用して、間接接続インスタンスを作成します。
    5. HVACアダプタを選択し、デジタル・ツイン・インスタンスゲートウェイに関連付けます。
    6. FR-GUIDE-HVAC-02および外部キーfr-guide-hvac-02に対して前述のステップを繰り返します。
    7. 表示名FR-GUIDE-BOILER-01および外部キーfr-guide-boiler-01を使用して、間接的に接続されたインスタンスを作成します。ボイラー・アダプタを選択し、インスタンスをゲートウェイに関連付けます。
    8. FR-GUIDE-BOILER-02および外部キーfr-guide-boiler-02に対して前述のステップを繰り返します。
    9. IoTドメイン・デバイス・ホストを記録します。既存のIoTドメインのデバイス・ホストを検索するには、IoTドメインの詳細の取得を参照してください。
  • 最初にゲートウェイを作成するには、oci iot digital-twin-instance createコマンドを使用します。

    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name FR-GUIDE-GW-01 \
      --connectivity-type GATEWAY \
      --external-key fr-guide-gw-01 \
      --auth-id <secret-or-certificate-ocid> \
      --digital-twin-adapter-id <gateway-adapter-ocid>

    ゲートウェイ・インスタンスのOCIDを記録し、間接的に接続されたHVACおよびボイラー・インスタンスを作成します。

    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name FR-GUIDE-HVAC-01 \
      --connectivity-type INDIRECT \
      --external-key fr-guide-hvac-01 \
      --gateways '["<gateway-instance-ocid>"]' \
      --digital-twin-adapter-id <hvac-adapter-ocid>
    
    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name FR-GUIDE-HVAC-02 \
      --connectivity-type INDIRECT \
      --external-key fr-guide-hvac-02 \
      --gateways '["<gateway-instance-ocid>"]' \
      --digital-twin-adapter-id <hvac-adapter-ocid>
    
    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name FR-GUIDE-BOILER-01 \
      --connectivity-type INDIRECT \
      --external-key fr-guide-boiler-01 \
      --gateways '["<gateway-instance-ocid>"]' \
      --digital-twin-adapter-id <boiler-adapter-ocid>
    
    oci iot digital-twin-instance create \
      --iot-domain-id <iot-domain-ocid> \
      --display-name FR-GUIDE-BOILER-02 \
      --connectivity-type INDIRECT \
      --external-key fr-guide-boiler-02 \
      --gateways '["<gateway-instance-ocid>"]' \
      --digital-twin-adapter-id <boiler-adapter-ocid>

    ゲートウェイ・デバイス・パスワードおよびIoTドメイン・デバイス・ホストを記録します。既存のIoTドメインのデバイス・ホストを検索するには、IoTドメインの詳細の取得を参照してください。

  • CreateDigitalTwinInstance操作を実行して、接続タイプGATEWAY、外部キーfr-guide-gw-01、ゲートウェイ・アダプタOCIDおよび認証IDを持つゲートウェイを作成します。

    この操作をさらに2回実行して、FR-GUIDE-HVAC-01およびFR-GUIDE-HVAC-02を作成します。接続タイプをINDIRECTに設定し、一致する外部キーを使用し、HVACアダプタOCIDを指定し、ゲートウェイ・インスタンスのOCIDをgatewaysに含めます。

    この操作をさらに2回実行して、FR-GUIDE-BOILER-01およびFR-GUIDE-BOILER-02を作成します。接続タイプをINDIRECTに設定し、一致する外部キーを使用して、ボイラー・アダプタのOCIDを指定し、ゲートウェイ・インスタンスのOCIDをgatewaysに含めます。

    ゲートウェイ・デバイス・パスワードおよびIoTドメイン・デバイス・ホストを記録します。既存のIoTドメインのデバイス・ホストを検索するには、IoTドメインの詳細の取得を参照してください。

トピック契約および共有サブスクリプション

外部パブリッシャはsource/<device-type>/<external-key>を使用します。「ファンクション」ノードは、そのトピックをアダプタに必要なデバイス・ホスト・トピックに変換します。

パブリックブローカーのトピックIoTデバイス・ホストのトピック
source/gateway/fr-guide-gw-01data
source/hvacs/fr-guide-hvac-01hvacs/fr-guide-hvac-01
source/hvacs/fr-guide-hvac-02hvacs/fr-guide-hvac-02
source/boilers/fr-guide-boiler-01boilers/fr-guide-boiler-01
source/boilers/fr-guide-boiler-02boilers/fr-guide-boiler-02

1つのフロー・ランタイムの場合は、source/+/+をサブスクライブします。2つのフロー・ランタイム間でメッセージを分散するには、両方のランタイムを$share/fr-guide/source/+/+にサブスクライブし、MQTT 5.0を使用して、各ランタイムに異なるクライアントID (fr-guide-fr1fr-guide-fr2など)を指定します。パブリッシャは、通常のsource/...トピックに引き続きパブリッシュします。

共通コンソールの検証

メッセージを公開した後、メッセージ・タイムスタンプを使用して、OCIコンソールでターゲットのデジタル・ツイン・インスタンスを検証します。

  • ゲートウェイ、HVACおよびボイラのデジタル・ツイン・インスタンスがアクティブであることを確認します。
  • rawまたは取り込まれたデータビューに、新しいゲートウェイまたは間接的に接続されたデバイスメッセージが含まれていることを確認します。
  • ゲートウェイ・スナップショットにcpuUtilizationmemoryUtilizationstorageUtilizationおよびfirmwareVersionが含まれていることを確認します。
  • 各HVACスナップショットにtemperaturehumiditypressureおよびmodeが含まれていることを確認します。
  • 各ボイラー・スナップショットにtemperatureおよびpressureが含まれていることを確認します。
  • ゲートウェイおよびHVACサンプル・メッセージごとに4つの正規化値および履歴値が作成され、ボイラー・サンプル・メッセージごとに2つの正規化値が作成されていることを確認します。

トラブルシューティング

  • インスタンス作成リクエストが拒否された場合は、ゲートウェイが認証IDを使用し、ゲートウェイ・ターゲット・マッピングを持つアダプタを使用していることを確認します。間接的に接続されたHVACまたはボイラー・インスタンスごとに認証IDがなく、ゲートウェイ・ターゲット・マッピングなしでデバイス固有のアダプタが使用され、アクティブ・ゲートウェイがリストされていることを確認します。
  • HVACまたはボイラー・メッセージが間違ったインスタンスに割り当てられている場合は、トピックの外部キーがゲートウェイに関連付けられたそのデバイス・タイプのアクティブ・インスタンスと完全に一致することを確認します。
  • 正規化された値が表示されない場合は、モデル・コンテンツ・パスがアダプタ・ペイロード・マッピングと一致し、受信タイムスタンプと数値がサンプル・フォーマットと一致することを確認します。
  • フロー・ランタイムが外部ブローカまたはIoTデバイス・ホストに到達できない場合は、サブネット・ルート、NATゲートウェイまたは承認済エグレス・パス、NSGルール、TLSおよびアウトバウンドTCPポート8883を確認します。
  • OCIノードが後のシナリオで認可エラーをレポートした場合、フロー・ランタイムが動的グループと一致すること、およびリソース・プリンシパル・ポリシーが正確なオブジェクト・ストレージ・バケット、通知トピックまたはデジタル・ツイン・コマンド操作へのアクセス権を付与することを確認します。

一般的なリカバリ・ステップは、IoTフロー・ランタイムのトラブルシューティングを参照してください。

FAQ

HVACおよびボイラー・インスタンスの前にゲートウェイを作成するのはなぜですか。
間接的に接続されたデジタル・ツイン・インスタンスは、作成時に少なくとも1つのアクティブ・ゲートウェイを参照する必要があります。
ゲートウェイが別のアダプタを使用するのはなぜですか。
ゲートウェイ・アダプタには、転送されたメッセージを一致するHVACまたはボイラー・インスタンスに委任するターゲット・マッピングが含まれています。HVACアダプタおよびボイラー・アダプタは、委任されたデバイス・ペイロードをマップし、ゲートウェイ・ターゲット・マッピングを含みません。
フロー・ランタイム・シナリオごとにこの設定を繰り返しますか。
番号共有モデル、アダプタ、ゲートウェイ、HVACインスタンスおよびボイラー・インスタンスを1回作成し、ライブ・データ取込みバッチ・データ取込みおよびモニタリングのシナリオで再利用します。
独自のリソース名と外部キーを使用できますか。
はい。一致するすべてのトピック、外部キー、フロー値およびOCIDを、設定および個々のシナリオ全体で一貫して置換します。