デバイスの登録

概要

デバイス登録 ページには、現在登録処理中のすべてのデバイスが表示されます。

デバイス登録ページ

各デバイスについて次の情報が表示されます:

  • 登録プロセスで指定されたデバイス名
  • デバイスのステータス(以下参照)
  • 作成日
  • デバイスが登録されたテナント

デバイスは以下のいずれかのステータスを持つことがあります:

  • 接続待機中 - デバイスは登録されましたが、指定されたIDのデバイスが接続を試みていません。
  • 承認待ち - 指定されたIDのデバイスから通信がありますが、登録を行っているユーザーが明示的に承認する必要があります。その後認証情報がデバイスに送信されます。
  • 承認済み - ユーザーが認証情報をデバイスに送信することを許可しました。
  • ブロック済み - 失敗した試行の限度を超えたため、デバイスの登録がブロックされています。
備考
デバイス登録がブロックされている場合は、まずそれを削除し、再度作成する必要があります。

デバイスは、さまざまな方法でThings Cloudアカウントに接続できます。

デバイスを登録するには、以下のいずれかのオプションを選択できます:

マイクロサービス開発者は、拡張可能なデバイス登録を使用し、UIにシームレスに統合されるカスタム登録フォームを実装することもできます。

備考

以下の説明は一般的なデバイス登録プロセスに適用されます。

特定のプロトコル統合にサブスクライブしている場合、追加のプロトコル固有のオプションが表示されます(例えば、LWM2MやOPC UAなど)。サポートされているプロトコルの完全なリストはデバイス統合で確認できます。そこにはプロトコル固有の登録プロセスについての説明も含まれています。

単一デバイス登録

Things Cloud は、デバイスを手動で一つずつ接続するための単一デバイス登録を提供します。

デバイスを手動で接続する

備考
接続しようとしているデバイスの種類に応じて、以下のプロセスのすべてのステップが関連しない場合があります。
  1. ナビゲータの デバイス メニューで 登録 をクリックします。
  2. デバイス登録 ページで、上部バーの右側にある デバイスを登録 をクリックし、ドロップダウンメニューから 単一登録 > 一般 を選択します。 デバイスを登録 ダイアログボックスが表示されます。
  3. デバイスID フィールドに、デバイスのユニークなIDを入力します。IDを決定するには、デバイスのドキュメントを参照してください。モバイルデバイスの場合、IDは通常IMIE(国際移動体装置識別番号)であり、デバイスの背面に記載されています。
  4. オプションで、登録後にデバイスを割り当てるグループを選択します。グループ化については、デバイスのグループ化も参照してください。
  5. さらにもう一つのデバイスを登録するには、デバイスを追加 をクリックします。再度デバイスIDを入力し、オプションでグループを選択します。このようにして、1回のステップで複数のデバイスを追加できます。
  6. 次へ をクリックして、デバイスを登録します。
備考
エンタープライズテナント(親テナント) では、マネジメントテナント がここから直接デバイスが追加されるテナントを選択することもできます。マネジメントテナント はサブテナントのインベントリにアクセスできないため、デバイスをテナントに登録するか、グループに登録するかのいずれかだけを選択する必要があります。 一般デバイス登録

登録が成功すると、デバイスは デバイス登録 ページに「接続待機中」としてリストされます。

デバイスの電源を入れ、接続が確立されるのを待ちます。

デバイスが接続されると、そのステータスは「受理待ち」に変わります。

備考
受理待ち 画面は、セキュリティトークンポリシーによって異なる場合があります。

受理 をクリックして接続を確認します。デバイスのステータスは「受理済み」に変わります。

備考
問題が発生した場合は、Things Cloud Partner Devices Ecosystemに適用されるデバイスのドキュメントを参照するか、デバイスのマニュアルを確認してください。

セキュリティトークンポリシー

セキュリティトークンポリシーを設定して、まだ登録されていないデバイスが脅威の行為者に乗っ取られるリスクを低減します。たとえば、シリアル番号を推測されることによってです。

備考
この機能には、「オプション管理」に対する読み取り権限が必要です。権限がない場合、セキュリティトークンポリシーはデフォルトでオプションとなります。

Things Cloud は、セキュリティトークンポリシーに対して以下の値をサポートしています。

  • IGNORED - デバイスが安全な登録を要求しても、Things Cloud はその要件を無視します。
  • OPTIONAL - デバイスが安全な登録を要求する場合、Things Cloud はユーザーに追加のセキュリティトークンを要求します。
  • REQUIRED - Things Cloud に接続されるすべてのデバイスは、登録時にセキュリティトークンを使用しなければなりません。

ポリシーは、以下のテナントオプションを設定することで構成できます。たとえば:

{
  "category": "device-registration",
  "key": "security-token.policy",
  "value": "IGNORED"
}
備考
受理待ち 画面は、セキュリティトークンポリシーによって異なる場合があります。

無視されたセキュリティトークンポリシー

セキュリティトークンポリシーが無視された場合、Things Cloud に接続されているデバイスはトークン検証なしで受理できます:

無視されたセキュリティトークンポリシーの下でのデバイス登録を受理する

オプションのセキュリティトークンポリシー

デバイス登録のリストは以下の画像に示されています。セキュリティトークンの入力はすべてのデバイスに表示されます。

オプションのセキュリティトークンポリシーの下でのデバイス登録を受理する

セキュリティトークンを使用せずに登録

Things Cloud に接続されているデバイスがセキュリティトークンを使用しない場合、セキュリティトークンの入力に値を提供することなく登録を進めることができます。

セキュリティトークンが必要ない接続を行ったデバイスには、トークンが提供されても受理され、トークンは無視されます。

セキュリティトークンを使用して登録

Things Cloud に接続されているデバイスがセキュリティトークンを使用する場合、ユーザーが接続確立時にデバイスから送信されたトークンと一致するトークンを提供した場合にのみ、登録を完了できます。

オプションのセキュリティトークンポリシーでのデバイス登録リクエストのためのトークンを提供する

不正なトークンを提供した場合、デバイスで使用された値とユーザーインターフェイスを通じて提供された値の不一致を通知するエラーメッセージが表示されます。

一定回数の失敗した試行の後、登録はブロック状態に達し、対応するエラーメッセージで示されます。ブロックされた登録は、デバイスを接続するための次の試行の前に削除する必要があります。

「すべて受理する」機能の使用制限

すべて受理する 機能は、セキュリティトークンを使用せずに Things Cloud に接続されるデバイスに対してサポートされています。

セキュリティトークンを使用しているデバイスには、すべて受理する 機能は利用できず、警告メッセージが表示されます。警告メッセージの詳細には、自動的に受理できなかったデバイスのリストが提供されます。

そのようなデバイスは、正しい セキュリティトークン 値を提供し、受理 をクリックすることで手動で受理する必要があります。

必要なセキュリティトークンポリシー

このモードでは、Things Cloud に接続されるすべてのデバイスは、接続時にセキュリティトークンを使用し、デバイスを受理する際にユーザーは同じトークンを入力する必要があります。

デバイスを受理する手順は、オプションのセキュリティトークンポリシーで説明した内容と同じです。

このモードでは、セキュリティトークンなしで Things Cloud に接続されるデバイスはすべてブロックされ、登録を完了することはできません。

一括デバイス登録

大規模なデバイスを接続するために、Things Cloudではデバイスを一括登録するオプションを提供しています。これは、CSVファイルをアップロードすることで多数のデバイスを登録することを意味します。

備考
一括登録できるデバイスの数に制限はありませんが、デバイスが多くなるほど、作成および操作が遅くなります。

デバイスを一括登録する

  1. ナビゲータの デバイス メニューで 登録 をクリックします。

  2. デバイス登録 ページで、上部バーの右側にある デバイスを登録 をクリックし、ドロップダウンメニューから 一括登録 > 一般 を選択します。一括デバイス登録 ダイアログボックスが表示されます。

  3. プラスボタンをクリックして、アップロードしたいCSVファイルを選択またはドラッグ&ドロップします。

アップロードされたCSVファイルの形式に応じて、以下のいずれかの登録タイプが処理されます:

  • シンプル登録
  • フル登録
備考
一括登録は、デバイスの基本的な表現を作成します。次に、デバイスは自身のステータスを使用してフル表現に更新する必要があります。

CSVファイルから区切り文字が自動的に取得されます。適切な区切り文字の値は次の通りです: \t(タブ)、 ;(セミコロン)、および ,(カンマ)。

シンプル登録

CSVファイルには2つの列が含まれています:ID;PATH、ここでIDはデバイス識別子(例:シリアル番号)、PATHはスラッシュで区切られたグループ名のリスト(デバイスが登録後に割り当てられるグループへのパス)です。

ID;PATH
Device1;Group A
Device2;Group A/Group B			

ファイルがアップロードされると、すべての必要な新しいグループが作成され、新しい登録が「接続待ち」状態で作成され、通常の登録プロセスを続行する必要があります(上記を参照)。

フル登録

CSVファイルにはデバイス識別子としてのIDとデバイスの認証情報を少なくとも含める必要があります。

これらの列に加えて、ファイルにはICCID、NAME、TYPEなどの他の列を含めることもできます。以下の例を参照してください:

ID;CREDENTIALS;TYPE;NAME;ICCID;IDTYPE;PATH;SHELL;AUTH_TYPE
006064ce800a;LF2PWJoLG1Fz;c8y_Device;Sample_Device1;+491555555;c8y_Serial;bulk group/subgroup1;1;BASIC
006064ce8077;OowoGKAbiNJs;c8y_Device;Sample_Device2;+491555555;c8y_Serial;bulk group/subgroup2;1;BASIC

デバイスを接続するために、それらは関連情報で事前登録されます。具体的には、各デバイスは次のように構成されます:

  • ユーザー名 - Things Cloudにアクセスするためのユーザー名は形式<tenant>/device_<id>でなければならず、ここで<tenant>はCSVファイルがインポートされるテナントを指し、<id>はCSVファイル内のそれぞれの値を指します。
  • パスワード - 各デバイスがThings Cloudにアクセスするための一意のパスワードは、CSVファイル内の「Credentials」の値に等しくなります。
  • 管理対象オブジェクト表現内のデバイス - CSVファイル内のフィールドTYPE、NAME、ICCID、IDTYPE、PATH、SHELL。

データがインポートされると、事前登録されたデバイスの数および発生する可能性のあるエラーに関するフィードバックが得られます。

一括登録タイプ(シンプル/フル)のためのCSVテンプレートファイルを提供しており、これを登録ウィザードからダウンロードして構造を見るかコピーできます。

備考
指定された識別子を持つデバイスがすでに存在する場合、CSVファイルのデータで更新されます。

Microsoft ExcelでCSVデータをインポートする

  1. Microsoft Excelで、データタブに切り替えます。
  2. データタブで、上部メニューバーからテキストからを選択します。
  3. インポートしたいCSVファイルをブラウズして選択します(この場合、Things Cloudプラットフォームからダウンロードしたテンプレートファイル)。
  4. テキストインポートウィザードのステップ1では、デフォルトの設定のままにして次へをクリックします。
  5. テキストインポートウィザードのステップ2では、区切り文字としてセミコロンを選択し、完了をクリックします。

ファイル形式と使用可能なCSVのデータ形式の詳細については、Things Cloud OpenAPI仕様 の 一括デバイス認証情報リクエストを作成する も参照してください。

備考
エンタープライズテナント(親テナント)では、スプレッドシートにテナント列を追加し、マネジメントテナントからCSVファイルをインポートすることで、複数のテナントにわたってデバイスを登録することもできます。追加サポートが必要な場合は、運用チームにご連絡ください。

拡張可能なデバイス登録

増え続ける IoT プロトコルと、一般的な単一または一括のデバイス登録における特定の制限に対処するため、Things Cloud では拡張可能なデバイス登録機能が提供されています。

一般的なコンセプトは、メタデータベースのアプローチを使用してデバイス登録を拡張することに基づいています。現在のデバイス登録を実装するマイクロサービスとエージェントは、必要な登録属性の簡単な説明を提供することで、デバイス登録ウィザードにカスタムフォームを追加できます。その後、メタデータは UI によって使用され、対応するデバイス登録ウィザードが表示されます。

UIを拡張するには 2 つの方法があります。

必要条件
拡張可能なデバイス登録には、アプリケーション拡張 が定義され、デバイス登録メタデータの取得とデバイスの作成に使用される定義済みのエンドポイントを実装するマイクロサービスが必要です。

拡張デバイス登録の利点

拡張デバイス登録には次のような利点があります。

  • デバイス登録ウィザードの拡張性: デバイス管理アプリケーションの UI 内で、デバイス登録ウィザードに独自のフォームを簡単に追加できます。ユーザー指定のフォームに入力される値は、デバイス統合開発者によって自由にカスタマイズできます。

  • カスタム CSV による一括登録への対応: 一括登録をカスタマイズすることで、異なるフォーマットのCSVファイルのサポートを実装することができます。

  • UIコードの変更が不要: UI の Angular コードを書く必要はありません。このため、統合作業は可能な限り少なくて済みます。デバイス統合開発者は、独自のウィザードを提供するマイクロサービスをサブスクライブするだけでよく、ウィザードは自動的に表示されます。

拡張機能の有効化

デバイス登録フローを拡張する最初のステップとして、アプリケーション表現で拡張機能を定義する必要があります。

備考
extensions フラグメントはルートレベルか、アプリケーション表現の manifest フラグメントの中に置くことができます。

拡張機能には 2 つのタイプがあります。

  • 単一デバイス登録タイプ:例:extensibleDeviceRegistration
"extensions": [
  {
    "name": "<extension name>",
    "description": "<description>",
    "type": "extensibleDeviceRegistration"
  },
  ...
]
  • 一括デバイス登録タイプ:例:extensibleBulkDeviceRegistration
"extensions": [
  {
    "name": "<extension name>",
    "description": "<description>",
    "type": "extensibleBulkDeviceRegistration"
  },
  ...
]

単一デバイスの登録

extensibleDeviceRegistration拡張タイプを有効にすると、デバイス管理アプリケーションの デバイス > デバイス登録 メニューに拡張タイプ name プロパティに対応する項目が追加されます。

今後は、カスタムマイクロサービス経由で提供されるデータに基づいて、すべてがレンダリングされます。追加されたメニュー項目は、以下のエンドポイントを使用してフォーム定義を取得するウィンドウを開きます。

GET /service/<contextPath>/deviceRegistration/metadata&lang=<user-language>

マイクロサービスの lang クエリパラメータを使用して、翻訳済みの JSON Schema メタデータで応答してください。詳細は、制約事項を参照してください。

UIは、自動的にマイクロサービスのアプリケーション定義から GET リクエストの contextPath を取得します。

{
  "contextPath": "<relative path>",
  "availability": "MARKET",
  "type": "MICROSERVICE",
  "name": "<agent name>",
  ...
}

メタデータの定義例:

{
    "c8y_DeviceRegistration": {
      "title": "Example extensible registration",
      "description": "The required and optional properties to register and setup devices",
        "pages": [
            {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "title": "Mandatory settings",
                "properties": {
                    "security": {
                      "default": "NO_SEC",
                      "type": "string",
                      "title": "Security mode",
                      "enum": [
                        "NO_SEC",
                        "SEC"
                      ]
                    },
                    "imei": {
                        "examples": [
                            "012345678901234"
                        ],
                        "type": "string",
                        "title": "Imei number"
                    }
                },
                "required": [
                    "imei",
                    "security"
                ]
            },
            {...}
        ]
    }
}

重要なパートである pages 配列には、モーダルが JSON Schema 定義に従ってレンダリングするウィザードのステップが含まれます:https://json-schema.org/

その結果、以下のウィザードが表示されます。

example-wizard-single

最後のステップでは、ウィザードを介して収集されたすべてのデータは、次の REST エンドポイントを使用してマイクロサービスに返送されます。

POST /service/<contextPath>/deviceRegistration

{
  "imei": "012345678901234",
  "security": "NO_SEC",
  ...
}

フォームは、JSON スキーマで定義されたものをマイクロサービスに送信することができます。マイクロサービスはフォームの定義を提供し、送信されたデータの適切な処理を担当します。

API仕様

デバイス統合マイクロサービスは、以下の REST エンドポイントを実装する必要があります。

GET /service/<contextPath>/deviceRegistration/metadata?lang=<user-language>
Accept: application/json

JSON スキーマの語彙でメタデータを返します。

POST /service/<contextPath>/deviceRegistration
Content-type: application/json

収集されたデータに基づいて、単一のデバイスを作成します。キーと値のペアで application/json を送信します。

単一デバイス登録フロー図

以下の図は、単一デバイス登録フローを視覚化しています。

Single diagram

一括デバイスの登録

多くのデバイス統合では、多数のデバイスを同時に登録する必要があります。現在のところ、すべてのプロトコルはプラットフォームの一括登録メカニズムに頼らざるを得ず、多くのフィールドを必要とするか、カスタムフィールドを追加する必要があります。ただし、後者はコアが直接デバイスを作成し、マイクロサービスやエージェントはマネージドオブジェクトに書き込まれるプロパティを制御できないため、検証することができません。

extensibleBulkDeviceRegistration 拡張タイプを有効にすると、デバイス管理と接続 > デバイス > デバイス登録 の 一括デバイス登録 モーダルが表示され、拡張の name プロパティに対応する拡張ウィザード項目が表示されます。

さらに、マイクロサービスはウィザードステップのタイトルと一括ファイルの例を提供します。

{
  "c8y_DeviceRegistration": {
    "title": "<title>",
    "description": "<description>",
    "bulk": {
      "title": "<bulk form title>",
      "exampleFileUrls": [{
        "title": "<example title>",
        "description": "<example description>",
        "url": "<publicly-reachable-URL>"
      }]
    }
  }
}

その結果、以下のウィザードが表示されます。

example-wizard-bulk

API仕様

デバイス統合マイクロサービスは、以下の REST エンドポイントを実装する必要があります。

GET /service/<contextPath>/deviceRegistration/metadata?lang=<user-language>
Accept: application/json

JSONスキーマの語彙でメタデータを返します。

POST /service/<contextPath>/deviceRegistration/bulk
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="file"; filename="<input csv file>"
Content-Type: text/csv

--boundary--

CSV ファイルタイプの multipart form-data を送信します。

一括デバイス登録フロー図

次の図は、一括デバイス登録フローを視覚化しています。

Bulk diagram

制約事項

  • このコンセプトでは、マイクロサービスがデバイスの登録解除/廃止にフックすることはできません。
    • デバイス統合マイクロサービスは、ガベージ コレクションを実行するなど、デバイスが削除されたかどうかを確認する必要があります。
  • インタラクティブなステップ(「Bluetooth ペアリング」など)は、今のところ実装できません。その理由は、このコンセプトでは、デバイス登録に必要なのは静的プロパティのみであり、ユーザーとの相互作用を必要とするプロセスは想定していないためです。
    • 理論的には、メタデータベースのアプローチは、フォームをレンダリングするために使用される JSON が静的ではなく、マイクロサービスによって動的に生成される方法で簡単に拡張できます。例えば、与えられたすべてのユーザー入力をそこに投稿した後、エンドポイントから動的に次の仕様を描画する「ページ」を指定することができます。
    • データモデルとマイクロサービスが満たすべき要件が複雑になるため、このようなソリューションからは一旦距離を置きます。
  • JSON スキーマ語彙による入力検証以外に、UI でのカスタム検証がありません。
  • カスタムのスタイリングはできません。
  • UI による国際化は処理されません。マイクロサービス開発者は、翻訳済みの JSON スキーマ メタデータを提供する責任があります。