デバイス テンプレートの編集

デバイス テンプレートには、デバイスが IoT Central とどのようにやり取りするかを記述するモデルが含まれています。 このモデルによって、デバイスの機能と、IoT Central がそれらとどのようにやり取りするかが定義されます。 デバイスではテレメトリとプロパティ値を IoT Central に送信でき、IoT Central ではプロパティの更新とコマンドをデバイスに送信できます。 IoT Central では、モデルを使用して、ジョブ、ルール、エクスポートなどの IoT Central 機能とのやり取りも定義されます。

デバイス テンプレート内のモデルに対する変更は、接続されているデバイスを含め、アプリケーション全体に影響を与える可能性があります。 ルール、エクスポート、デバイス グループ、またはジョブによって使用される機能を変更すると、予期しない動作が発生したり、まったく機能しなかったりする可能性があります。 たとえば、テンプレートからテレメトリ定義を削除したとします。

  • IoT Central で値を解釈できなくなります。 IoT Central によって、モデル化されていないデータとして解釈できないデバイス データが、デバイスの [生データ] ページに表示されます。
  • IoT Central に、データ エクスポート内の値が含まれなくなります。

デバイス テンプレートの編集による意図しない結果を回避するために、この記事には、現在の開発ライフサイクル ステージに基づく推奨事項が含まれています。 一般に、開発ライフ サイクルの早い段階のほうが、デバイス テンプレートの変更をより許容できます。

デバイス テンプレートとデバイス テンプレートの作成方法の詳細については、「デバイス テンプレートとは」と「デバイス テンプレートを設定する」を参照してください。

IoT Central REST API を使用してデバイス テンプレートを管理する方法については、「IoT Central REST API を使用してデバイス テンプレートを管理する方法」を参照してください。

デバイス テンプレートを変更する

機能やインターフェイスをモデルに追加するなどの加法的変更は、非破壊的変更です。 開発ライフ サイクルの任意の段階で、モデルに加法的変更を行うことができます。

破壊的変更には、モデルの一部の削除や、機能名またはスキーマの種類の変更が含まれます。 これらの変更を行うと、ルール、エクスポート、ダッシュボードなどのアプリケーション機能でエラー メッセージが表示され、動作が停止する可能性があります。

デバイス開発の初期段階で、まだモデルの設計とテストを行っている間は、デバイス モデルに直接変更を加える余地が十分にあります。 実稼働デバイスをデバイス テンプレートに接続する前に、デバイス テンプレートを直接編集できます。 デバイス テンプレートを発行すると、これらの変更が IoT Central によってデバイスに自動的に適用されます。

デバイス テンプレートに実稼働デバイスをアタッチした後は、デバイス テンプレートを編集する前に、変更の影響を評価してください。 実稼働環境で、デバイス テンプレートに破壊的変更を加えるべきではありません。 このような変更を行うには、新しいバージョンのデバイス テンプレートを作成します。 新しいデバイス テンプレートをテストした後、実稼働デバイスをスケジュールされたダウンタイムで新しいテンプレートに移行します。

IoT Edge デバイス テンプレートを更新する

IoT Edge デバイスの場合、モデルでは、デバイスで実行される IoT Edge モジュールに対応するモジュール別に機能がグループ化されます。 配置マニフェストは、インストールするモジュールとその構成方法、およびモジュールに設定されているプロパティを IoT Edge デバイスに指示する別個の JSON ドキュメントです。 配置マニフェストを変更した場合は、マニフェストで定義されているモジュールとプロパティを含むようにデバイス テンプレートを更新できます。

  1. デバイス テンプレートの [モジュール] ノードに移動します。
  2. [モジュールの概要] ページで、[マニフェストからモジュールをインポートする] を選択します。
  3. 適切な配置マニフェストを選択し、[インポート] を選択します。

詳細については、IoT Edge デバイスと IoT Central に関する記事を参照してください。

編集および発行アクション

デバイス テンプレートを編集するときは、次のアクションが役立ちます。

  • 保存。 デバイス テンプレートの一部を変更したときは、変更を保存することで、戻ることができるドラフトが作成されます。 これらの変更は、接続されているデバイスにはまだ影響しません。 このテンプレートから作成されたデバイスでは、保存された変更を発行するまで、変更は反映されません。
  • 発行。 デバイス テンプレートを発行すると、保存したすべての変更が既存のデバイス インスタンスに適用されます。 新しく作成されたデバイス インスタンスでは、常に最新の発行済みテンプレートが使用されます。
  • テンプレートのバージョン作成。 デバイス テンプレートのバージョンを作成すると、保存された最新のすべての変更を含む新しいテンプレートが作成されます。 新しいバージョンに加えられた変更は、既存のデバイス インスタンスには影響しません。 詳細については、「デバイス テンプレートのバージョン作成」を参照してください。
  • インターフェイスのバージョン作成。 インターフェイスのバージョンを作成すると、保存された最新のすべての機能を含む新しいインターフェイスが作成されます。 テンプレート内の複数の場所でインターフェイスを再利用できます。 このため、インターフェイスへの 1 つの参照に対して行われた変更によって、そのインターフェイスを使用するテンプレート内のすべての場所で変更が行われます。 インターフェイスのバージョンを作成すると、新しいバージョンは別のインターフェイスになるので、この動作が変わります。 詳細については、「インターフェイスのバージョン作成」を参照してください。
  • デバイスの移行。 デバイスを移行すると、デバイス インスタンスがデバイス テンプレート間でスワップされます。 デバイスの移行では、IoT Central で変更が処理される間、不足が発生する可能性があります。 詳細については、「バージョン間でデバイスを移行する」を参照してください。

バージョン番号

デバイス モデルとインターフェイスの両方にバージョン番号があります。 異なるバージョン番号によって、モデルまたはインターフェイスで @id 値を共有しながら、更新履歴を提供できます。 バージョン番号は、テンプレートまたはインターフェイスのバージョン作成を選択した場合、またはバージョン番号を意図的に変更した場合にのみインクリメントされます。 テンプレートまたはインターフェイスに大きな変更を行った場合は、バージョン番号を変更する必要があります。

次のスニペットは、あるサーモスタット デバイスのデバイス モデルを示しています。 デバイス モデルに、1 つのインターフェイスがあります。 @id フィールドの末尾のバージョン番号 1 を確認できます。

{
  "@context": "dtmi:dtdl:context;2",
  "@id": "dtmi:com:example:Thermostat;1",
  "@type": "Interface",
  "displayName": "Thermostat",
  "description": "Reports current temperature and provides desired temperature control.",
  "contents": [
    // ...
  ]
}

IoT Central UI でこの情報を表示するには、デバイス テンプレート エディターで [ID の表示] を選択します。

Screenshot that shows how to view the identity of an interface to see the version number.

デバイス テンプレートのバージョンを更新する

デバイス テンプレートのバージョンを更新するには次を行います。

  1. [デバイス テンプレート] ページに移動します。
  2. バージョンを作成するデバイス テンプレートを選択します。
  3. ページ上部にある [バージョン] を選択して、テンプレートに新しい名前を付けます。 IoT Central が新しい名前を提案します。この名前は編集できます。
  4. [作成] を選択します。

これで、既存のデバイスにアタッチされていない一意の ID を持つ新しいテンプレートが作成されました。

インターフェイスのバージョンを更新する

インターフェイスのバージョンを更新するには次を行います。

  1. [デバイス テンプレート] ページに移動します。
  2. ドラフト モードになっているデバイス テンプレートを選択します。
  3. バージョンを作成して編集する、発行済みのインターフェイスを選択します。
  4. インターフェイス ページの上部にある [バージョン] ボタンを選択します。
  5. [作成] を選択します

これで、以前のインターフェイス バージョンと同期されていない一意の ID を持つ新しいインターフェイスが作成されました。

デバイスを複数のバージョンに移行する

複数のバージョンのデバイス テンプレートを作成できます。 時間の経過と共に、接続された複数のデバイスがこれらのデバイス テンプレートを使用するようになります。 デバイス テンプレートの 1 つのバージョンから、別のバージョンに、デバイスを移行できます。 次の手順では、デバイスを移行する方法について説明します。

  1. [デバイス] ページに移動します。

  2. 別のバージョンに移行する必要があるデバイスを選択します。

  3. [移行] を選択します。

    Screenshot that shows how to choose the option to start migrating a device.

  4. デバイスの移行先のバージョンが設定されているデバイス テンプレートを選択し、 [移行] を選択します。

ヒント

ジョブを使用することで、あるデバイス グループに属するすべてのデバイスを新しいデバイス テンプレートに同時に移行できます。