ラベル機能を用いたデバイスステート(状態)管理

本ページでは、IoTサービスの提供するラベル機能を用いて、デバイスの設定を変更・管理する方法をご紹介します。
IIJ IoTサービスには、デバイスへの設定を促すための制御通信を送り込むデバイスコントロール機能があり、また、一般的にはMQTTを用いた管理手法がありますが、より簡単にデバイスの設定状態を管理する方式としてご紹介します。

ラベル機能とは

ラベル機能は、IoTサービス上で管理する「デバイス」に属性情報を付与することで、コントロールパネル上で管理情報(機器シリアル番号や設置日付など)を記録しておくことや、デバイスから送信されたJSONフォーマットの要素としてラベル情報を組み込み、データ付与した状態でクラウドへ連携することも可能です(データ・エンリッチメント機能)。

今回は、設定したラベル情報をデバイスから参照することで、デバイス側で任意の処理を動作させるステート(状態)管理の使用方法になります。例えば、以下のような用途にご利用頂けます。

  • GPSトラッカーのデータ送信間隔の変更
  • センサーデータの送信制御や送信内容の制御
  • ファームウェアアップデート要否の確認


デバイスステート管理

デバイスステート(状態)管理の大まかな流れを以下の図に記載しています。デバイス側で動作するプログラムの考慮は必要になりますが、MQTTクライアントや独自SDKを用いた開発は要りません。また、クラウド側でメッセージブローカーを準備する必要もありませんので、より簡単にご利用頂けるものとなっています。①~④の流れでそれぞれの説明を実施します。


①設定

デバイスへのラベル情報の設定は、コントロールパネルまたはWebAPI経由で追加・更新・削除が可能です。
コントロールパネルであればデバイス一覧画面、WebAPIであればUpdateDeviceを用います。
コントロールパネルの設定イメージは以下のようになります。


②状態参照

デバイスからラベルを参照する場合は、Gateway APIを用います。HTTPリクエストを行うことで、エンドポイントURLに応じてCSV、TSV、JSONいずれかのフォーマットでラベル情報を参照することが可能です。Gateway APIへのアクセスは、IoTサービスに対応したモバイルアクセス、IIJモバイルサービス/タイプI、IIJ Omnibusサービスなどのコネクティビティが前提となる閉域網の通信です。なお、Gateway APIはラベルの参照に加え、変更や削除などの操作にも対応しております。

以下、デバイスからラベル情報を参照する際の例です。コントロールパネルやWebAPIで設定した情報は、labelContentsに反映されます。

curl http://gw.iot.iij.jp/v1/dvc-state/json
{
"id": "dvc-99999999",
"ipAddress": "10.10.10.1",
"name": "コンテナAデバイス",
"labelContents": {
"send": 1,
"interval": 10,
"temperature": 1,
"humidity": 1,
"namespace": "東京第3倉庫",
"firm.ver": 2.01
}
}
③送信

デバイスは、②参照で取得したラベル情報に基づいてGateway APIへセンサー値等を含むデータ送信を行います。例として、以下の処理実装が想定されます。

  • 送信処理時、sendラベルが1の場合にデータ送信し、0の場合に送信しない
  • 送信処理時、intervalラベルの数値を参照し、デバイス側のデータ送信間隔をセットする
  • 送信処理時、temperatureラベルを参照し、1の場合はJSONデータにセンサー値を組み込み、0の場合に組み込まない
  • 送信処理時、namespaceラベルがある場合、値をJSONデータに組み込む
  • 1日1回、firm.verラベルを参照し、端末デバイスのファームウェアバージョンがそれよりも古い場合に、アップデート処理を実行する

Gateway APIへ送信したデータは、データハブやクラウドアダプタを用いて外部クラウドサービスへ転送させることも可能ですが、デバイスモニタリング機能を用いてグラフ化する場合のデータフォーマットを例として記載します。

curl -X POST http://gw.iot.iij.jp/v1 -d
[
{ "name": "温度", "value": 29.5, "namespace": "東京第3倉庫", "timestamp": 1473215677644, "meta": {"latitude": "35.7020235", "longitude": "139.7450879000004"}
},
{
"name": "湿度",
"value": 78.5,
"namespace": "東京第3倉庫",
"timestamp": 1473215677644,
"meta":
{"latitude": "35.7020235", "longitude": "139.7450879000004"}
}
]
④確認

デバイスモニタリング画面より、グラフが表示されていることを確認します。


最後に

遠隔地にあるデバイスの設定変更の手法としては MQTTなどの方式がありますが、デバイスとクラウドの開発コストを極力抑える方式として、IIJ IoTサービスのラベル機能を用いたデバイスステート(状態)管理機能をご紹介しました。是非ご活用下さい。