Azure IoT Central アプリケーション内でデバイス テンプレートを作成する
デバイス テンプレートは、Azure IoT Central アプリケーションに接続するデバイスの種類の特性と動作を定義するブループリントです。 たとえば、温度などのテレメトリや場所などのプロパティを送信するセンサー用のデバイス テンプレートを作成できます。 詳細については、「デバイス テンプレートとは」を参照してください。
この記事では、テレメトリ メッセージからデバイス テンプレートを自動生成したり、それを IoT Central UI で定義したりするなど、IoT Central 内でデバイス テンプレートを作成するいくつかの方法について説明します。
オペレーターは、デバイス テンプレートから、実際のデバイスを作成して接続できます。
次のスクリーンショットは、デバイス テンプレートの例を示しています。
デバイス テンプレートには次のセクションがあります。
- モデル - モデルを使用すると、お使いのデバイスと IoT Central アプリケーションの対話方法を定義できます。 各モデルには一意のモデル ID があり、デバイスの機能がそれぞれ定義されています。 機能はインターフェイスにグループ化されます。 インターフェイスを使用すると、モデル間でコンポーネントを再利用したり、継承を使用して一連の機能を拡張したりできます。
- 生データ - 指定したプレビュー デバイスによって送信された生データを表示します。 このビューは、デバイス テンプレートのデバッグまたはトラブルシューティングを行う場合に役立ちます。
- ビュー - デバイスからのデータを視覚化するにはビューを、デバイスを管理および制御するにはフォームを使用します。
IoT Central REST API を使用してデバイス テンプレートを管理する方法については、「IoT Central REST API を使用してデバイス テンプレートを管理する方法」を参照してください。
デバイス テンプレートを作成するオプションはいくつかあります。
- IoT Central UI 内でデバイス テンプレートを設計します。
- おすすめのデバイス テンプレートの一覧からデバイス テンプレートをインポートします。 必要に応じて、IoT Central の要件に合わせてデバイス テンプレートをカスタマイズします。
- デバイスが IoT Central に接続するとき、実装しているモデルのモデル ID が送信されるようにします。 IoT Central は、そのモデル ID を使用してモデル リポジトリからモデルを取得し、デバイス テンプレートを作成します。 IoT Central アプリケーションに必要なクラウド プロパティとビューを、デバイス テンプレートに追加します。
- デバイスが IoT Central に接続するときに、デバイスによって送信されるデータから、デバイス テンプレートの定義が IoT Central によって自動生成されるように指定できます。
- Digital Twins Definition Language (DTDL) v2 と IoT Central DTDL 拡張機能を使用して、デバイス モデルを作成します。 デバイス モデルをお使いの IoT Central アプリケーションに手動でインポートします。 その後、IoT Central アプリケーションが必要とするクラウド プロパティとビューを追加します。
- また、「IoT Central REST API を使用してデバイス テンプレートを管理する方法」を使って、デバイス テンプレートを IoT Central アプリケーションに追加することもできます。
Note
それぞれのケースで、デバイス コードは、モデルで定義されている機能を実装する必要があります。 デバイス コードの実装は、デバイス テンプレートのクラウド プロパティとビューのセクションの影響を受けません。
デバイス テンプレートをインポートする
このセクションでは、おすすめのデバイス テンプレートの一覧からデバイス テンプレートをインポートする方法と、IoT Central UI を使用してそれをカスタマイズする方法について説明します。 この例では、おすすめのデバイス テンプレートの一覧から、Onset Hobo MX-100 Temp Sensor デバイス テンプレートを使用します。
- 新しいデバイス テンプレートを追加するには、 [デバイス テンプレート] ページで [+ 新規] を選択します。
- [種類の選択] ページで、[おすすめのデバイス テンプレート] セクションに [Onset Hobo MX-100 Temp Sensor] タイルが見つかるまでスクロールダウンします。
- [Onset Hobo MX-100 Temp Sensor] タイルを選び、[次へ: 確認] を選択します。
- [Review](レビュー) ページで、 [Create](作成) を選択します。 作成したテンプレートの名前は Hobo MX-100 です。 このモデルには、Hobo MX-100 や IotDevice などのコンポーネントが含まれています。 コンポーネントは、Hobo MX-100 デバイスの機能を定義します。 機能には、テレメトリ、プロパティ、コマンドが含まれる場合があります。 このデバイスにはテレメトリ機能しかありません。
デバイス テンプレートを自動生成する
また、現在割り当てられていないデバイスからデバイス テンプレートを自動的に作成することもできます。 IoT Central は、デバイスから送信されるテレメトリ値とプロパティ値を使用して、デバイス モデルを推測します。
Note
現在、このプレビュー機能では、コンポーネントからのテレメトリとプロパティは使用できません。 ルート テレメトリとプロパティからのみ機能を生成できます。
次の手順は、この機能を使用する方法を示しています。
お使いのデバイスを IoT Central に接続し、データの送信を開始します。 [生データ] ビューにデータが表示されたら、[Manage template]\(テンプレートの管理\) ドロップダウンで [Auto-create template]\(テンプレートの自動作成\) を選択します。
[データのプレビュー] ページ上で生データに必要な変更を行い、[テンプレートの作成] を選択します。
[データのプレビュー] ページ上に表示されるデータ形式に基づいて、IoT Central によってテンプレートが生成され、そのテンプレートにデバイスが割り当てられます。 [デバイス テンプレート] ページ上で、名前の変更や機能の追加など、デバイス テンプレートをさらに変更することができます。
デバイス テンプレートを管理する
テンプレートの作成、編集、名前変更、削除はいずれも、テンプレートのエディター ページから行うことができます。
テンプレートを定義したら、それを発行することができます。 テンプレートを発行するまでは、テンプレートにデバイスを接続することはできず、また [デバイス] ページにもテンプレートは表示されません。
デバイス テンプレートの変更およびバージョン管理の詳細については、「既存のデバイス テンプレートを編集する」を参照してください。
モデル
このモデルを使用すると、デバイスと IoT Central アプリケーションの対話方法を定義できます。 機能を追加してモデルをカスタマイズしたり、機能を継承するためのインターフェイスや、他のインターフェイスに基づく新しいコンポーネントを追加したりできます。
デバイス モデルを作成するには、以下の手順を実行できます。
- IoT Central を使用して、最初からカスタム モデルを作成する。
- JSON ファイルから DTDL モデルをインポートする。 デバイス ビルダーが Visual Studio Code を使用して、アプリケーションのデバイス モデルを作成している場合があります。
- おすすめのデバイス テンプレートの一覧からデバイスのいずれかを選択します。 このオプションでは、製造元がこのデバイスのために発行したデバイス モデルをインポートします。 このようにインポートされたデバイス モデルは、自動的に発行されます。
モデル ID を表示するには、モデル内でルート インターフェイスを選択し、[ID の編集] を選択します。
コンポーネント ID を表示するには、モデル内の任意のコンポーネント インターフェイス上で [ID の編集] を選択します。
詳細については、「IoT Plug and Play モデリング ガイド」を参照してください。
インターフェイスとコンポーネント
お使いのデバイス モデル内のインターフェイスを表示および管理するには:
[デバイス テンプレート] ページに移動し、作成したデバイス テンプレートを選択します。 インターフェイスは、デバイス テンプレートの [モデル] セクション内に一覧表示されます。 次のスクリーンショットは、デバイス テンプレート内の Sensor Controller ルート インターフェイスの例です。
省略記号を選択して、継承インターフェイスまたはコンポーネントをルート インターフェイスに追加します。 インターフェイスとコンポーネントの詳細については、モデリング ガイド内の「複数のコンポーネント」を参照してください。
モデルまたはインターフェイスをエクスポートするには、 [エクスポート] を選択します。
インターフェイスまたは機能の DTDL を表示または編集するには、 [Edit DTDL](DTDL の編集) を選択します。
機能
機能をインターフェイスまたはコンポーネントに追加するには、 [+ 機能の追加] を選択します。 たとえば、 [Target Temperature](目標温度) 機能を SensorTemp コンポーネントに追加することができます。
テレメトリ
テレメトリは、デバイスから (通常はセンサーから) 送信される値のストリームです。 たとえば、次のスクリーンショットに示すように、センサーから気温が報告される場合があります。
テレメトリ機能の構成設定を次の表に示します。
フィールド | Description |
---|---|
表示名 | ビューとフォームで使用されるテレメトリ値の表示名。 |
名前 | テレメトリ メッセージ内のフィールドの名前。 IoT Central によって表示名からこのフィールドの値が生成されますが、必要に応じて独自の値を選択できます。 このフィールドは英数字である必要があります。 |
機能の種類 | テレメトリ。 |
セマンティックの種類 | テレメトリのセマンティックの種類 (温度、状態、イベントなど)。 セマンティックの種類の選択によって、次のどのフィールドを使用できるかが決まります。 |
スキーマ | テレメトリのデータ型 (double、string、vector など)。 セマンティックの種類によって、使用できる選択肢が決まります。 スキーマは、イベントおよび状態のセマンティックの種類には使用できません。 |
重大度 | イベントのセマンティックの種類にのみ使用できます。 重大度は、エラー、情報、または警告です。 |
状態の値 | 状態のセマンティックの種類にのみ使用できます。 考えられる状態の値を定義します。それぞれに表示名、名前、列挙型、および値があります。 |
ユニット | テレメトリ値の単位 (mph、%、°C など)。 |
表示単位 | ビューとフォームで使用する表示単位。 |
解説 | テレメトリ機能に関するコメント。 |
説明 | テレメトリ機能の説明。 |
Properties
プロパティは、特定の時点の値を表します。 IoT Central から、書き込み可能なプロパティを設定できます。 たとえば、デバイスは書き込み可能なプロパティを使用して、次のスクリーンショットに示すように、オペレーターに目標温度を設定させることができます。
プロパティ機能の構成設定を次の表に示します。
フィールド | Description |
---|---|
表示名 | ビューとフォームで使用されるプロパティ値の表示名。 |
名前 | プロパティの名前。 IoT Central によって表示名からこのフィールドの値が生成されますが、必要に応じて独自の値を選択できます。 このフィールドは英数字である必要があります。 |
機能の種類 | プロパティ。 |
セマンティックの種類 | テレメトリのセマンティックの種類 (温度、状態、イベントなど)。 セマンティックの種類の選択によって、次のどのフィールドを使用できるかが決まります。 |
スキーマ | プロパティのデータ型 (double、string、vector など)。 セマンティックの種類によって、使用できる選択肢が決まります。 スキーマは、イベントおよび状態のセマンティックの種類には使用できません。 |
書き込み可能 | プロパティが書き込み可能でない場合、デバイスはプロパティ値を IoT Central に報告できます。 プロパティが書き込み可能な場合、デバイスはプロパティ値を IoT Central に報告し、IoT Central がプロパティの更新をデバイスに送信できます。 |
重大度 | イベントのセマンティックの種類にのみ使用できます。 重大度は、エラー、情報、または警告です。 |
状態の値 | 状態のセマンティックの種類にのみ使用できます。 考えられる状態の値を定義します。それぞれに表示名、名前、列挙型、および値があります。 |
ユニット | プロパティ値の単位 (mph、%、°C など)。 |
表示単位 | ビューとフォームで使用する表示単位。 |
解説 | プロパティ機能に関するコメント。 |
説明 | プロパティ機能の説明。 |
色 | DTDL に対する IoT Central 拡張機能。 |
最小値 | 最小値の設定 - DTDL に対する IoT Central 拡張機能。 |
最大値 | 最大値の設定 - DTDL に対する IoT Central 拡張機能。 |
小数点以下の桁数 | DTDL に対する IoT Central 拡張機能。 |
コマンド
IoT Central からデバイス コマンドを呼び出すことができます。 コマンドは、必要に応じて、デバイスにパラメーターを渡し、デバイスから応答を受け取ります。 たとえば、次のスクリーンショットに示すように、10 秒でデバイスを再起動するコマンドを呼び出すことができます。
コマンド機能の構成設定を次の表に示します。
フィールド | Description |
---|---|
表示名 | ビューとフォームで使用されるコマンドの表示名。 |
名前 | コマンドの名前。 IoT Central によって表示名からこのフィールドの値が生成されますが、必要に応じて独自の値を選択できます。 このフィールドは英数字である必要があります。 |
機能の種類 | コマンド。 |
オフラインの場合にキューに入れる | 有効にした場合、デバイスがオフラインになっていてもコマンドを呼び出すことができます。 有効になっていない場合、コマンドを呼び出すことができるのは、デバイスがオフラインのときに限られます。 |
解説 | コマンド機能に関するコメント。 |
説明 | コマンド機能の説明。 |
Request | 有効になっている場合、名前、表示名、スキーマ、単位、および表示単位を含む要求パラメーターの定義。 |
Response | 有効になっている場合、名前、表示名、スキーマ、単位、および表示単位を含むコマンド応答の定義。 |
初期値 | パラメーターの既定値。 このパラメータは DTDL に対する IoT Central 拡張機能です。 |
デバイスでコマンドを実装する方法の詳細については、「テレメトリ、プロパティ、およびコマンドペイロード」の「コマンド」および「実行時間の長いコマンド」を参照してください。>
オフライン コマンド
デバイス テンプレートでコマンドの [Queue if offline]\(オフラインの場合にキュー\) オプションを有効にすることで、デバイスが現在オフラインになっている場合にキュー コマンドを選択できます。
このオプションによって、IoT Hub cloud-to-device メッセージが使用され、通知がデバイスに送信されます。 詳細については、cloud-to-device メッセージの送信に関する IoT Hub 記事を参照してください。
cloud-to-device メッセージ:
- ご利用のソリューションからデバイスへの一方向通知です。
- 少なくとも 1 回のメッセージ配信が保証されます。 IoT Hub によって cloud-to-device メッセージはデバイス別キューに保持されます。接続とデバイスの障害に対する回復性が保証されます。
- cloud-to-device メッセージを処理するため、メッセージ ハンドラーを実装することがデバイスに求められます。
Note
オフライン コマンドは、モデルを DTDL としてエクスポートした場合、durable
としてマークされます。
クラウド プロパティ
クラウド プロパティを使用して、デバイスに関する情報を IoT Central に格納します。 クラウド プロパティがデバイスに送信されることはありません。 たとえば、クラウド プロパティを使用して、デバイスをインストールした顧客の名前、またはデバイスの前回の点検日を格納できます。
ヒント
クラウド プロパティは、モデルのルート コンポーネントにのみ追加できます。
クラウド プロパティの構成設定を次の表に示します。
フィールド | Description |
---|---|
表示名 | ビューとフォームで使用されるクラウド プロパティ値の表示名。 |
名前 | クラウド プロパティの名前。 IoT Central によって表示名からこのフィールドの値が生成されますが、必要に応じて独自の値を選択できます。 |
セマンティックの種類 | テレメトリのセマンティックの種類 (温度、状態、イベントなど)。 セマンティックの種類の選択によって、次のどのフィールドを使用できるかが決まります。 |
スキーマ | クラウド プロパティのデータ型 (double、string、vector など)。 セマンティックの種類によって、使用できる選択肢が決まります。 |
ビュー
ビューを使用すると、オペレーターがデバイスを監視および操作できるビューとフォームを定義することができます。 ビューでは、グラフなどの視覚化を使用して、テレメトリ値とプロパティ値が表示されます。
既定のビューを生成すると、重要なデバイス情報をすばやく視覚化することができます。 3 つの既定のビューは次のとおりです。
既定のビュー
- [Commands]\(コマンド\): デバイス コマンドを含むビューを提供し、オペレーターがデバイスにコマンドをディスパッチできるようにします。
- [Overview]\(概要\): デバイス テレメトリを含むビューを提供し、グラフとメトリックを表示します。
- [About]\(詳細情報\): デバイス情報を含むビューを提供し、デバイス プロパティを表示します。
[Generate default views]\(既定のビューの生成\) を選択すると、デバイス テンプレートの [ビュー] セクションにそれらが自動的に追加されます。
カスタム ビュー
ビューをデバイス テンプレートに追加して、オペレーターがグラフとメトリックを使ってデバイスを視覚化できるようにします。 独自のカスタム ビューをデバイス テンプレートに追加することができます。
デバイス テンプレートにビューを追加するには:
- デバイス テンプレートにアクセスし、 [Views](ビュー) を選択します。
- [デバイスの視覚化] を選択します。
- [ビュー名] にビューの名前を入力します。
- [タイルの追加] で [Start with a visual](ビジュアルの使用を開始する) を選択し、ご自身のタイルのビジュアルの種類を選びます。 次に [タイルの追加] を選択し、ビジュアルをキャンバスにドラッグ アンド ドロップします。 タイルを構成するには、歯車アイコンを選択します。
ビューをテストするには、 [プレビュー デバイスの構成] を選択します。 この機能により、発行後にオペレーターに対して表示されるビューを確認できます。 この機能は、ビューに正しいデータが表示されているかどうかを検証するために使用します。 次のオプションを選択します。
- プレビュー デバイスなし。
- デバイス テンプレート用に構成した実際のテスト デバイス。
- デバイス ID を使用した、アプリケーション内の既存のデバイス。
フォーム
デバイス テンプレートにフォームを追加して、オペレーターがプロパティを表示および設定することによってデバイスを管理できるようにします。 オペレーターが編集できるのは、クラウド プロパティと書き込み可能なデバイス プロパティのみです。 1 つのデバイス テンプレートに対して複数のフォームを持つことができます。
[ビュー] ノードを選択し、 [デバイスとクラウドのデータの編集] タイルを選択して新しいビューを追加します。
フォーム名を「デバイスの管理」に変更します。
フォームに追加するプロパティとクラウド プロパティを選びます。 次に、 [セクションの追加] を選択します。
[保存] を選択して新しいフォームを保存します。
デバイス テンプレートを発行する
デバイス モデルを実装するデバイスを接続する前に、デバイス テンプレートを発行する必要があります。
デバイス テンプレートを発行するには、デバイス テンプレートにアクセスし、[発行] を選択します。
デバイス テンプレートを発行すると、オペレーターは [Devices](デバイス) ページに移動して、デバイス テンプレートを使用する実際のデバイスまたはシミュレートされたデバイスを追加できます。 変更を行っている間は、引き続きデバイス テンプレートを変更して保存できます。 これらの変更をオペレーターにプッシュして、 [Devices](デバイス) ページで表示する場合は、毎回、 [Publish](発行) を選択する必要があります。