ユースケースを基にしたダッシュボードの設定方法

はじめに

本レポートは、Things Cloud の利用例をより知っていただくための実利用レポートとして作成したものです。 Things Cloud は極力後方互換性を持つよう開発されていますが、今後のリリースにより、一部画面やコマンド、手順などが変更となったり、 利用できない可能性があることをあらかじめご了承ください。 なお、作成にあたり、以下バージョンを用いています。

  • ver 1006.6.32 (backend)

Step1 解説編 (工事現場ユースケース)

概要

本レポートでは、Things Cloudをよりよく知っていただくために、デバイスの位置に焦点をあてたユースケースを用いた画面の構築方法等について解説します。
概念や機能の大枠は理解しているが、実現したいことに対し、Things Cloudでどのような設定をするかのイメージを持っていただくことを目的としています。
また、本レポートではプリセットのシミュレーターを利用していますので、一緒に手を動かし同じようなダッシュボードを構築することもできます。
本レポートを読まれた後には、ぜひStep2 機器監視ユースケース もお読みいただくことをお勧めいたします。

本レポートの構成は以下の通りです。

IoTシステム導入により実現したいこと

工事現場で重機の位置を把握したい

  • ホイールローダー、油圧ショベルの現在の位置を知りたい
  • ホイールローダー、油圧ショベルが移動した軌跡も知りたい
  • ホイールローダー、油圧ショベルが工事現場の外に出てしまったことを検知したい
  • ホイールローダー、油圧ショベルの機種を表示したい
  • ホイールローダー、油圧ショベルの写真を表示したい
  • ホイールローダー、油圧ショベルごとにそれぞれ確認したい

以下は実現したいユースケースのイメージ図です。このイメージ図を元にシステムを構築していきましょう。 usecase

完成イメージ

本レポート完了時に、以下のようなダッシュボードが完成します。

  • グループダッシュボード グループダッシュボード

  • デバイスダッシュボード デバイスダッシュボード

大まかなシステム構成を考える

Things Cloudでの実現方法検討に入る前に、IoTシステム導入により実現したいことを実現するための大まかなシステム構成(全体アーキテクチャ)を考えます。

例えば以下のような要素を洗い出しておくと良いでしょう。

  • IoTシステムに関連するコンポーネント(例:IoTデータを集約するIoTプラットフォーム、データを送信するIoT GW、連携時に考慮する外部システムなど)
  • 各コンポーネント間の通信方式(例:HTTPS、MQTTSなど)
  • 観測対象のアセットやIoTデバイスの階層検討(例:工事現場「千代田区丸の内二丁目」ごとにグループを作成、その配下に3台のデバイスが存在)
  • IoTシステム利用者向けフロー(例:利用全体の流れ、利用シーン、通知トリガー、通知手段など)

上記について洗い出し、実現したいことの全体像を明らかにしていきます。以下のような一枚絵が描ける程度の詳細度で問題ありません。 システム構成例

アセット管理についての詳細は以下ををご参照ください。

Things Cloudでの実現方法を検討する

次に、要件をもとにデータモデルを定義し、Things Cloudの機能を使って、どのように実現できるか考えます。

データモデルを考える

  • デバイスからアップロードする時系列データとしてメジャーメント(計測値)、イベント、アラーム について、データモデルを考えます。

    • メジャーメント(計測値)データは、デバイスのセンサーが取得した数値データを記録しますので、工事現場の温度であったり、重機のガソリン消費量のような数値データに適用します。
    • イベントデータは、デバイスで発生する何らかのイベントデータを記録しますので、重機の開始/終了であったり、重機の移動した位置のようなイベントとして適用します。
    • アラームデータは、人の対応を要するイベントを通知するためのデータを記録しますので、重機の移動範囲のジオフェンスを設定し、その外に出てしまった場合のアラームとして適用します。

    詳細は、ドメインモデルをご参照ください。

  • データモデルの使い分けを考えます。

    • イベント vs アラーム
      両者とも何かが起きたことを通知するイベントであるのに対して、アラームは人の対応を要するため、コックピットで何らかのアラームが発生したことを知る方法は複数あり人が検知しやすく設計されており、アラームをクリアしなければアクティブのままとなります。
      アクティブであるアラームは、コックピットのアラーム画面やデバイスグループのアラームタブをはじめとし、デバイスのピンの色などでも表現されます。
      重機のジオフェンス外への進入や重機故障など、管理者への通知を要するようなイベントデータをアラームとして扱うと良いことが多いです。

      詳細は、Alarm の利用について > アラーム各値の付与基準 > アラーム vs イベントをご参照ください。

    • イベント vs メジャーメント(計測値)
      Things Cloudではメジャーメントの数値データを使って、データポイントデータとしてさまざまな可視化を実現しています。データポイント系のウィジェットはもちろんのこと、SCADAウィジェットなどで最終報告されたメジャーメントの値をマッピングし表示することができます。
      イベントでは対象日のイベント数をウィジェットにマッピングすることは可能ですが、基本的にはどのようなイベントが発生したかをイベントリストで確認します。イベントデータをストリーム処理などで別のデータタイプに変換したりなど、データを汎用的に取り扱うと良いことが多いです。また、イベントデータはバイナリデータを1つ添付することができるため、何らかのイベントに対するCSVデータやメディアデータなど関連付けて格納することができます。

      詳細はこちらをご参照ください。

  • メジャーメントのフラグメントタイプはカスタムで設定することができ、typeなども含めて検討しておくと良いでしょう。

    • メジャーメントのフラグメントタイプは、センサーデータ値の系列で、どのような種類のデータかの識別に用いられます。(例:加速度、温度、湿度 などの異なるデータ系列には異なるフラグメントタイプを付与します。)
    • フラグメントタイプには、メジャーメント(計測値)の数値データを規則(fragmentType > series > value,unit)にそって格納します。規則に従わないとデータポイントの表示に使用できなくなります。
    • typeはメジャーメントがどのようなタイプを端的に表現する値を設定します。
    • 1つのメジャーメントで、複数のフラグメントタイプを保持すること、フラグメントタイプ配下に複数のシリーズを保持することが可能です。

利用する機能を選定する

要件を基にデータモデルを考えた後、要件を実現するための機能、またその用途、各機能で表示対象となるデータ、設定値は何かを考えます。
要件に完全に当てはまる機能がない場合でも、標準機能の組み合わせによって実現できないか考えてみると良いです。

ダッシュボード

グループをどのような構成にするか?
  • 基本的にどんな構成でも良く、任意で設定が可能です。
  • デバイスグループに対しては権限を設定できるため、ユーザーごとに閲覧の制限をかけられることを考慮できると利用シーンによる見え方を制御できます。
  • ダッシュボードの共有やコピーは使えそうかを検討できると、簡単にダッシュボードをコピーするし複製することができるため、構築の手間が省けます。
ウィジェットは何を使うか?

デバイスデータのタイプ別に可視化に適したものをグルーピングした下記の標準ウィジェット一覧から考えます。

  • 現在のデバイスや、時系列のデバイスの軌跡を把握したい。
    • マネージドオブジェクト(デバイス)を可視化するものなので、地図で表示
  • デバイスがジオフェンスの外に出てしまったことが知りたい。
    • アラームを可視化するものなので、アラームリストで表示
  • グループなどアセットの情報を知りたい。
    • マネージドオブジェクト(デバイス)を可視化するものなので、アセットプロパティで表示
  • グループ配下のデバイスの位置をデータとしてテーブル形式で確認したい。
    • マネージドオブジェクト(デバイス)を可視化するものなので、アセットテーブルで表示
  • 温度など時系列に変わるデータをグラフで確認したい。
    • メジャーメント(測定値)を可視化するものなので、データポイントグラフで表示
  • どのデバイスか直感的な情報を認知したい。
    • 特にデータタイプは意識せずその他の可視化として、イメージで表示



参考: デバイスデータのタイプ別に可視化に適したものをグルーピング 標準ウィジェット一覧1 標準ウィジェット一覧2 標準ウィジェット一覧3 標準ウィジェット一覧4 標準ウィジェットプロパティ

スマートルール

どのスマートルールを利用するか?
  • 以下のように、どのようなデータが報告されたら、どのようなアクションをとりたいかで設定します。
    • ジオフェンス外に出たらアラームを生成する
  • よく使われるスマートルールは、センサーデータが指定したしきい値に達した時にアラームを作成する「計測値のしきい値超過時 アラームを作成」です。
グローバルなスマートルールと、グループ上 または デバイスに紐づけられるスマートルールがあるが、どちらを設定するか?
  • テナントに適用するようなテンプレートとなりえるルールはグローバルとして設定し、グループで適用したいルールはグループに、それ以外はデバイス毎に設定する
アラーム の type は何を設定するか?
  • 基本的にアラームはタイプで絞り込めることや、同じタイプは重複が除外されるカウントアップされることを意識する
  • c8y_GeofenceAlarmアラームのように、どのようなアラームが発生したかわかりやすいタイプを設定する(テキストも同じ)

スマートルールの詳細に関してはスマートルールをご参照ください。

デバイスを準備する

  1. 地図上にデバイスのピン(位置)を表示するには、デバイスの位置を設定する

  2. 地図上にデバイスの移動軌跡を表示するには、トラッキングデータをイベントデータで送信する

  3. デバイス管理画面で地図に関する表示のまとめとして、デバイス管理画面での表示を確認する

参考 上記にはシミュレーターを利用できます。

  • ホイールローダ: プリセットの位置情報の更新イベント
  • 油圧ショベル: プリセットの位置情報の更新イベント
  • 温度センサー: プリセットの温度計測

詳細は、シミュレーターの操作をご参照ください。

デバイスの位置を設定する

デバイスの位置は、マネージドオブジェクトのフラグメントc8y_Positionとして地理的な位置を緯度、経度および高度として管理します。
※ シミュレーターにはデフォルトで設定されてます。

デバイスのマネージドオブジェクトにフラグメントc8y_Positionを追加します。

PUT <<url>>/inventory/managedObjects/<<deviceId>>
{
    "c8y_Position": {
        "alt": 67,
        "lng": 6.15173,
        "lat": 51.211977
    }
}    

トラッキングデータをイベントデータで送信する

タイプc8y_LocationUpdateの位置更新イベントを作成し、デバイスの位置を追跡します。現在のデバイスの位置も更新する必要があります。

POST <<url>>/event/events
{
    "c8y_Position": {
        "alt": 67,
        "lng": 6.75933,
        "lat": 51.224464
    },
    "time": "<<作成日時>>",
    "source": { "id": "<<deviceId>>" },
    "type": "c8y_LocationUpdate"
}

デバイス管理画面での表示を確認する

デバイス管理画面でも位置の設定や、追跡ができます。

対象デバイスのデバイス詳細を表示し、右メニューの参照から「位置を追加」をクリックすると c8y_Positionフラグメントが、マネージドオブジェクトに追加され位置タブと追跡タブが表示します。(位置の値はデフォルト値が設定されます。)
情報タブのデバイスデータの編集からもフラグメントを追加することができます。 位置を追加

デバイス詳細の位置タブを表示し、「位置を編集」から位置を更新します。 位置を更新

デバイス詳細の追跡タブを表示し、イベントの追跡を確認します。イベントの追跡は時系列データのため、日付での絞り込みが可能です。 経路を確認

詳細は、デバイス詳細の位置をご参照ください。

コックピットを設定する

業務オペレーター向けにデバイスからのデータを可視化するために、コックピットを設定します。

コックピットの詳細についてはコックピットをご参照ください。

グループを設定する

大まかなシステム構成を考えるで検討したアセット構成を元に作成します。 以下の構成と想定した上で、グループを作成し、グループへデバイスを所属させます。デバイスグループは任意で設定可能です。

  • 千代田区丸の内二丁目
    • ホイールローダ
    • 油圧ショベル
    • 温度センサー

グループについてはアセット管理をご参照ください。

ダッシュボードを作成する

  • 以下のグループへダッシュボードを設定します。
    • 千代田区丸の内二丁目
  • 以下のデバイスへダッシュボードを設定します。
    • ホイールローダ
    • 油圧ショベル
    • 温度センサー

ダッシュボードの作成についてはダッシュボードをご参照ください。

ウィジェットを作成する

ウィジェットの一覧についてはウィジェットコレクションをご参照ください。

地図

  1. 「ウィジェットを追加」から「地図」をクリックします
  2. タイトル: 地図
  3. 対象のアセットもしくはデバイス: 千代田区丸の内二丁目
地図上のピンをクリックすると?
  • デバイスが最後に位置を報告した日付(c8y_LocationUpdate イベントの time 値)が表示されます。イベントが存在しない場合、時刻は「undefined」と表示されます 
  • 「追跡を非表示」スイッチをオンにするとデバイスの軌跡が表示されます
  • ピンをクリックすると下図のように表示されますデバイスのピン情報

アラームリスト

  1. 「ウィジェットを追加」から「アラームリスト」をクリックします
  2. タイトル: アラームリスト
  3. 対象のアセットもしくはデバイス: 千代田区丸の内二丁目
  4. ステータス
    • クリアしたアラームは表示させない想定とします
    • クリア済みのチェックを外す
  5. タイプ: 記載なし
  6. 重大度
    • 警告アラームは表示させないと想定します
    • 警告のチェックを外す
    • 設定後は下図のようになります アラームリストのフィルタ

アセットプロパティ

  1. 「ウィジェットを追加」から「アセットプロパティ」をクリックします
  2. タイトル: アセットプロパティ
  3. 対象のアセットもしくはデバイス: 千代田区丸の内二丁目
  4. プロパティ
    • 以下を設定します プロパティ

アセットテーブル

  1. 「ウィジェットを追加」から「アセットテーブル」をクリックします
  2. タイトル: アセットテーブル
  3. 対象のアセットもしくはデバイス: 千代田区丸の内二丁目
  4. プロパティ
    • 以下を設定します プロパティ
アクションの追加
  • アセットテーブルではメンテナンスモードの切り替えやデバイス再起動などのコマンドを実行するようなアクションを追加できます

詳細は アセットプロパティ > アクションの追加 をご参照ください。

データポイントグラフ

  1. ホイールローダのダッシュボードへ移動します
  2. 「ウィジェットを追加」から「データポイントグラフ」をクリックします
  3. タイトル: ガソリン消費量
  4. データポイント: com_GasConsumption => G
データポイントの設定
  • データポイントの日付指定はウィジェットの編集画面でできます。また、編集画面で集計日時選択ボックスを表示にチェックを入れると、ウィジェット本体でも日付指定ができます。
  • データポイントのy軸設定(値の表示範囲指定)はウィジェットの編集画面でできます。データポイント毎に最小最大へ値を設定します。

イメージウィジェット

  1. 「ウィジェットを追加」から「画像」をクリックします
  2. ウィジェット上に表示したい画像をアップロードします
  3. イメージウィジェットを作成する際にファイルをアップロードしますが、ファイル自体はファイルリポジトリへ保存されます。

ファイルリポジトリについてはデータ管理 > ファイルリポジトリ内のファイルの管理をご参照ください。

スマートルールを設定する

一定の範囲外に出てしまった場合にアラームを生成する設定を行わなければならないので、スマートルールを使用します。

ジオフェンスアラームを生成する

ジオフェンスアラームを生成するスマートルールに関してはスマートルールコレクションをご参照ください。

  • 設定したジオフェンス外に出てしまったらアラームを生成するには?
    • ジオフェンス時 アラームを作成のスマートルールを作成します。
  • ジオフェンスの定義、設定方法
    1. ルール名: ジオフェンス アラーム発生時
    2. ジオフェンス違反時: 地図上でジオフェンスの範囲を設定
    3. アラーム作成
      • トリガーとなるのは?(進入時、退出時、進入または退出時)
        • ジオフェンス外へ出た場合にアラームを生成するので、退出時を選択します。
      • アラームタイプ: c8y_GeofenceAlarm
      • アラーム重大度: 主要
      • テキスト: ジオフェンス違反です
    4. 対象のデバイス: 油圧ショベル

ダッシュボードをコピーする

工事現場が増えて管理対象を増やしたい時、どのようにグループやダッシュボードを追加していけば良いでしょうか。このような場合に活用できる2つの機能があります。

  • 機能1:グループからグループへダッシュボードをコピーする機能
  • 機能2:同じデバイスタイプ間でダッシュボードを共有する機能

機能1:グループからグループへダッシュボードをコピーする機能

「千代田区大手町一丁目」で新たに工事が開始し、管理対象として加えるとしましょう。 新たに「千代田区大手町一丁目」グループを作成し、その配下に必要なデバイスを割り当てます。 「千代田区丸の内二丁目」のダッシュボードをコピーし、「千代田区大手町一丁目」グループに貼り付けます。

大手町グループ追加

このように、本機能を利用することで管理対象のアセットが増えた場合でも、グループのダッシュボードを新たに作ることなく既存のダッシュボードを流用できます。

詳細は ダッシュボードを一つのオブジェクトから別のオブジェクトへコピー をご参照ください。

機能2:同じデバイスタイプ間でダッシュボードを共有する機能

デバイス(ManagedObject)のタイプ(type)が同じ場合、ダッシュボードを共有することができます。 「千代田区丸の内二丁目」のホイールローダのデバイスタイプを「c8y_WheelDevice」に変更し、ホイールローダに作成されているダッシュボードの編集画面より、「すべてのデバイス タイプにダッシュボードを適用」にチェックを入れます。

「千代田区大手町一丁目」でも「ホイールローダ2」が使用されると想定し、「千代田区丸の内二丁目」のホイールローダと 同じデバイスタイプ「c8y_WheelDevice」を設定しましょう。 設定後、自動的に既に設定してあるダッシュボードが反映されていると思います。

デバイスタイプ変更 デバイスタイプによる共有

詳細は以下をご参照ください。

機能1と機能2を活用することにより、グループやデバイスの数が増えた時でも既存の設定を活用できます。

注意点

  • 機能1では、ウィジェット設定画面の「対象のアセットもしくはデバイス」の項目が現在のグループ(コピー元ダッシュボードが作成されているグループ)の場合のみ利用可能です。
  • 機能2では、既にデバイスダッシュボードを作成している場合にデバイスタイプを変更すると、変更後のデバイスタイプのダッシュボードに上書きされます。

Step2 問題編 (機器監視ユースケース)

概要

本レポートでは、Things Cloudをよりよく知っていただくために、ユースケースを用いた画面の構築方法等について解説します。
概念や機能の大枠は理解しているが、実現したいことに対し、Things Cloudでどのような設定をするかのイメージを持っていただくことを目的としています。
本レポートは問題編のため、本文には設定例が記載されていますが、設定内容は自由であり、記載のある設定例にならない場合もあります。
また、本レポートを読まれる際には、事前にStep1 工事現場ユースケース をお読みいただくことを推奨します。

本レポートの構成は以下の通りです。

IoTシステム導入により実現したいこと

工場に設置されている機器の遠隔監視を行いたい

  • データを可視化したい
  • 工場内の現在の機器の状況を知りたい
  • センサーデータの異常なことの検知したい
  • 機器稼働状況をレポートで表示したい
  • 機器の稼働開始・停止を表現したい
  • 工場内の環境状態(CO2や温度など)で、段階的に表現する
  • 工場の内観や外観の写真を表示する

以下は実現したいユースケースのイメージ図となります。このイメージ図を元にシステムを構築していきましょう。 イメージ図

大まかなシステム構成を考える

Step1の考え方を参考に取り組んでみましょう。 以下は一例です。

システム構成例

Things Cloudでの実現方法を検討する

Step1の考え方を参考に取り組んでみましょう。 以下は一例です。

  1. まず、IoTシステム導入により実現したいこと で記載した事項をThings Cloud内のどの機能を使えば良いか調査します。
    以下は一例です。

    • データを可視化したい
      • 生産数や不良品数の情報をデータポイントグラフ・データポイントテーブルで表示
      • 温湿度やCO2の情報を放射状ゲージで表示
    • 工場内の現在の機器の状況を知りたい
      • SCADAウィジェットで工場内マップを表示
      • 機器の情報をアセットテーブルで表示
    • センサーデータの異常なことの検知したい
      • 異常値になった場合はスマートルールでアラーム生成
      • アラームリストで表示
    • 機器稼働状況をレポートで表示したい
      • レポート機能を使用し、CSVで出力
    • 機器の稼働開始・停止を表現したい
      • イベントで開始停止を送信し、イベントリストウィジェットで表示
    • 工場内の環境状態(CO2や温度など)で、段階的に表現する
      • 信号機ウィジェットを使用し、総合的に判断し表示
    • 工場の内観や外観の写真を表示する
      • 画像ウィジェットで表示
    1. より、今回使用するウィジェット及びレポートをリスト化します。以下は一例です。
    • SCADAウィジェット

    SCADAウィジェットの詳細やSVG画像の作成方法についてはSCADA ウィジェットによるデータ可視化をご参照ください。

    • アラームリストウィジェット
    • イベントリストウィジェット
    • 信号機ウィジェット
    • データポイントグラフウィジェット
    • データポイントテーブルウィジェット
    • 放射状ゲージウィジェット
    • アセットテーブルウィジェット
    • 画像ウィジェット
    • 機器稼働状態を出力するレポート
      • レポート作成時に「フィールド」の「管理対象オブジェクト」を有効にして、「事前定義を追加」でID・タイプ等、カスタムプロパティを選択できます。
      • レポート機能は、エクスポート設定に自動で毎年、毎週、毎日等でエクスポートのスケジュールを設定することが可能です。

    レポート機能に関する詳細はレポートの操作をご参照ください。

デバイスを準備する

Step1の考え方を参考に取り組んでみましょう。

以下は一例です。

  1. 以下のデバイスを作成します。

    • ラインAの機器1
    • ラインAの機器2
    • ラインAの環境センサー
    • ラインAの製品検査センサー
    • ラインBの機器1
    • ラインBの機器2
    • ラインBの環境センサー
    • ラインBの製品検査センサー
  2. デバイスのデータをThings Cloudへアップロードします。以下はデータモデルの一例となります。

    • 機器(event) 機器稼働開始,機器稼働停止
    {
        "type": "com_OperationStatus",
        "time": (時間),
        "text": "機器が稼働開始しました。",
    }
    
    • 環境センサー(Measurement) 温度,二酸化炭素,騒音
    {
        "type": "com_FactoryEnvironment",
        "time": (時間),
        "c8y_Temperature": {
            "T": {
                "unit": "℃",
                "value": (数値)
            }
        },
        "c8y_Carbondioxide": {
            "co2": {
                "unit": "ppm",
                "value": (数値)
            }
        },
        "c8y_Noise": {
            "db": {
                "unit": "db",
                "value": (数値)
            }
        }
    }
    
    • 製品検査センサー(Measurement) 生産数,不良品数
    {
        "type": "com_FactoryProduction",
        "time": (時間),
        "c8y_PartsProduction": {
            "P1": {
                "unit": "count",
                "value": (数値)
            }
        },
        "c8y_PartsDefect": {
            "D1": {
                "unit": "count",
                "value": (数値)
            }
        }
    }
    

各機能を設定する

Step1の考え方を参考に取り組んでみましょう。

グループを設定する

グループを作成してみましょう。 以下は一例です。



ダッシュボードを作成する

ダッシュボードを作成してみましょう。 以下は一例です。

  • 工場全体のグループへは、工場全体の情報用ダッシュボードを作成します。
  • 各ラインのグループへは、機器毎の情報用ダッシュボードを作成します。

ウィジェットを作成する

ダッシュボード内へウィジェットを作成してみましょう。
Things Cloudでの実現方法を検討する でリスト化したウィジェットを作成します。
以下はウィジェット作成内容の一例です。

  • SCADAウィジェット(工場内の機器状況可視化) scada1

    scada2

  • アラームリストウィジェット(工場内の環境異常検知) alarm-list

  • イベントリストウィジェット(機器の稼働停止) event-list

  • 信号機ウィジェット(工場内の環境状態可視化) signal

  • データポイントグラフウィジェット(各機器の生産数) datapoint-graph

  • データポイントテーブルウィジェット(環境情報) datapoint-table

  • 放射状ゲージウィジェット housya

  • アセットテーブルウィジェット asset-table

  • 画像ウィジェット(工場の外観) image

スマートルールを設定する

スマートルールを作成してみましょう。 以下は一例です。

  • 一定の閾値を超えた場合に、アラームを生成するスマートルールを作成します。 smart-rule1

    smart-rule2

レポートを設定する

レポートを設定してみましょう。 以下は一例です。

  • 機器の稼働状態について、レポートを出力しています。 report1

    report2

Things Cloudでの実現例

以下はこれまでの工程で実現できる画面の一例です。 ダッシュボード画面(工場全体)

ダッシュボード画面(ライン)