こんにちは、5G&IoTプラットフォーム部で、IoT Connect Gatewayの機能開発を担当している角田です。 前回のコンフィグマネージャーの概要に引き続き、コンフィグマネージャーでIoTデバイスへ配信する設定ファイルの生成方法についてご紹介します。
【IoT Connect Gateway】コンフィグマネージャーのご紹介
1. 設定ファイルの生成の流れ
IoTデバイスへ配信する設定ファイルを生成するには、以下の作業を実施します。
テンプレート
を作成する共通パラメーター
を作成するデバイスグループ
を作成するプロファイル
を作成する
それぞれの作業の関係をざっくりと纏めると下図のようになります。詳細は以降の内容で説明します。
詳細情報については、下記の公式ドキュメントをご参照ください。
1.1. テンプレートについて
テンプレートでは、設定ファイルの雛形をテキスト形式かつ任意のフォーマットで記述します。テンプレートエンジンの1つである Jinja2 の記法や、IoT Connect Gatewayのクラウドアダプタ機能と同等のプレースホルダ機能が使用できます。
Jinja2の記法に則ったテンプレートを記述することで、設定ファイルの生成時に、下記の値がテンプレートへ動的に埋め込まれ、IoTデバイス毎の設定ファイルを生成できます。
- 共通パラメーター
- デバイスグループにおけるデバイス固有の値(以降、デバイスパラメーターと呼びます)
また、利用ケースは限られると思いますが、テンプレート単体で設定ファイルを生成できます。その場合は、テンプレートの内容そのものが設定ファイルとなります。
以下は、環境変数を想定したテンプレートの例です。
MQTT_TOPIC="{{ device.topic }}" MQTT_HOST="{{ global.host }}" HOSTNAME="$imsi"
{{ }}
のように2つの中括弧で囲われた部分が、共通パラメーターやデバイスパラメーターの値で置き換えられます。ただし、コンフィグマネージャーでは、{{ device.xxxx }}
のように device
から始まる表記は、デバイスパラメーターを置き換えるために予約されているので注意が必要です。*1
また、$imsi
のように $xxx
と記述することで、SIM情報が持っているIMSIやIMEIの情報をテンプレートに埋め込むことができます。このプレースホルダ機能で使用可能な値は、下記の公式ドキュメントをご参照ください。
1.2. 共通パラメーターについて
共通パラメーターでは、IoTデバイス共通で使用する値を、JSON形式で記述します。
以下は、共通パラメーターの例です。
{ "global": { "host": "an1.icgw.ntt.com" } }
上記のJSON文字列の host
キーの値である an1.icgw.ntt.com
をテンプレートに埋め込みたい場合は、テンプレートに {{ global.host }}
と記述します。上記の例では、2階層のJSON文字列ですが、2階層以上のJSON文字列も使用できます。下記のJSON文字列の host
キーの値である an1.icgw.ntt.com
をテンプレートに埋め込みたい場合は、{{ global.mqtt.host }}
とテンプレートに記述します。
{ "global": { "mqtt": { "host": "an1.icgw.ntt.com" } } }
1.3. デバイスグループについて
デバイスグループは、設定ファイルの生成・配信対象のSIMを登録し、デバイスパラメーターをJSON形式で記述します。デバイスパラメーターを記述することで、IoTデバイス固有の値をテンプレートに埋め込むことができます。
以下は、デバイスパラメーターの例です。
{ "default": { "topic": "default_topic" }, "imsi_999990000000001": { "topic": "topic_aaaaa" }, "imsi_999990000000002": { "topic": "topic_aaaaa" } }
デバイスパラメーターの最上層のキーは、default
および imsi_<IMSI番号>
にする必要があります。
上記のJSON文字列の imsi_999990000000001
キーの中の topic
をテンプレートに埋め込みたい場合は、テンプレートに {{ device.topic }}
と記述します。テンプレート側では、IMSI番号を特に意識する必要はありません。設定ファイルの生成時に、コンフィグマネージャーが imsi_<IMSI番号>
キーの値を元に、適切にテンプレートの内容を置き換えます。また、テンプレートに {{ device.topic }}
と記述しているものの、imsi_<IMSI番号>
キーの中に topic
が存在しない場合は、default
キーの topic
が使用されます。
1.4. プロファイルについて
プロファイルは、テンプレート・共通パラメーター・デバイスグループの組み合わせを指定し、その組み合わせを元に、IoTデバイス毎の設定ファイルを生成します。プロファイルに指定する各種パラメータを切り替えることで、生成・配信する設定ファイルを即座に切り替えることができます。また、設定ファイルの誤配信を防止する事前チェック機能や、各種パラメータのお気に入りの組み合わせを登録できるプロファイルセットの機能があります。
2. 設定ファイルを生成する
それでは、実際にIoT Connect Gatewayのポータル上から、設定ファイルを作成していきます。
2.1. テンプレートを作成する
- IoT Connect Gatewayのポータル左メニューのコンフィグマネージャーから【パラメーター】を選択します。【テンプレート】タブを選択し、【新規作成】ボタンを押します。
- 【テンプレート名】【説明】【ラベル】、および【内容】に下記のJSON文字列を入力し、【作成】ボタンを押します。
MQTT_TOPIC="{{ device.topic }}" MQTT_HOST="{{ global.host }}" HOSTNAME="$imsi"
2.2. 共通パラメーターを作成する
- IoT Connect Gatewayのポータル左メニューのコンフィグマネージャーから【パラメーター】を選択します。【共通パラメーター】タブを選択し、【新規作成】ボタンを押します。
- 【パラメーター名】【説明】【ラベル】、および【内容】に下記のJSON文字列を入力し、【作成】ボタンを押します。
{ "global": { "host": "an1.icgw.ntt.com" } }
2.3. デバイスグループを作成する
- IoT Connect Gatewayのポータル左メニューのコンフィグマネージャーから【パラメーター】を選択します。【デバイスグループ】タブを選択し、【新規作成】ボタンを押します。
- 【デバイスグループ名】【説明】【ラベル】を入力し、IoTデバイスの設定ファイルの生成・配信対象のSIMを追加するために【SIM管理】ボタンを押します。
- デバイスグループに含めたいSIMを選択し、【保存】ボタンを押します。
- 【内容】に下記のJSON文字列を入力し、【作成】ボタンを押します。
imsi_<IMSI番号>
キーのIMSI番号は適宜ご自身の環境で使用するIMSI番号に合わせてください。また、【IMSIの値を反映】ボタンを押すことで、default
キーおよびimsi_<IMSI番号>
キーを持つ、デバイスパラメーターの雛形を【内容】に自動で反映できます。
{ "default": { "topic": "default_topic" }, "imsi_440130000191127": { "topic": "topic_aaaa" }, "imsi_440130000200529": { "topic": "topic_bbbb" } }
2.4. プロファイルの作成
- IoT Connect Gatewayのポータル左メニューのコンフィグマネージャーから【プロファイル】を選択し、【新規作成】ボタンを押します。
- 作成済みの【テンプレート】【共通パラメーター】【デバイスグループ】を設定します。
【チェック】ボタンを押し、デバイスグループへ設定したSIM毎に生成される設定ファイルを事前に確認します。
各種パラメーターの設定と事前チェックが完了したら、【作成】ボタンを押し、プロファイルを作成します。
- 【作成】ボタンを押すことで、プロファイル作成の結果画面に遷移するので、【生成】ボタンを押します。
- IoTデバイス毎の設定ファイルを生成するには、【生成】ボタンを押す必要があります。
- プロファイル作成の結果画面では、IoTデバイス毎の設定ファイル(今回だと、IMSI番号が
440130000191127
と440130000200529
のための設定ファイル)は、まだ生成されていません。 - 設定ファイルが生成されたかどうかは、【生成状態】のチェックマークで確認できます。
- 確認画面が表示されるので、【OK】を押します。
- 以下の結果画面に遷移し、【生成状態】が緑色のチェックマークであれば、設定ファイルが生成されています。
- 以上が、コンフィグマネージャーの設定ファイルの生成の流れになります。
3. その他(注意点など)
- 設定ファイルの生成後に、各種パラメーターの内容を変更した場合は、【再生成】を実施する必要があります。
- 本記事ではあまり触れていませんが、プロファイルセットが保存する内容は、テンプレートや共通パラメーターのIDの組合わせです。つまり、特定のプロファイルセットが参照しているテンプレートや共通パラメーターの内容が変更されてしまった場合は、ロールバックを実施しても、テンプレートや共通パラメーターの変更後の内容が反映されてしまうのでご注意ください。
4. おわりに
コンフィグマネージャーの設定ファイルの生成編はいかがだったでしょうか。IoT Connect Gatewayのポータル上で、簡単にIoTデバイス毎の設定ファイルを生成できることがお分かり頂けたかと思います。IoTデバイス毎の設定ファイルをそれぞれ用意する必要は無く、設定ファイルの雛形と設定の差分のみ記述すれば良い仕組みになっています。なので、大量のIoTデバイスを扱う場合でも、比較的少ない記述量で、IoTデバイス毎の設定ファイルを生成できるような便利機能になっています。ご興味がありましたら、ぜひ活用してみてください!
*1:共通パラメーターの最上層のキーに device は指定できません。2階層目以降では device キーを指定できます。