通常、PI Tagの中に時系列データの値(数字)が入っているのが、一般的ですが、

時系列で、動画や定期間に取っている写真を表示したい場合もあります。

このような写真がある場合に表示する方法を紹介します。

 

例として、1秒毎に写真を取っています。

 

タグにこのファイルのデータを保存するのではなく、ファイル名のみを保存します。

表示するために、PI Coresightのカスタムシンボルの作成できます。

 

 

PI Coresightで表示するため、ファイルを保存されたフォルダーを仮想ディレクトリに追加します。

仮想ディレクトリの設定はパスと接続の認証です。

 

物理パスはネットワークの共有のフォルダーの場合は、IISから、共有フォルダーにアクセスするのは規定のユーザーが必要可能性があります。

 

PI Coresightの事例のSimple Valueの入門のhtmlファイル(template)だけを更新しました。

<img src="ExternalPictures/{{value}}" ng-attr-style="height:100%; width:100%; background: {{Fill || 'rgba(255,255,255,0)'}};">

 

これだけすると、PI Coresightですぐ見れます!(時刻をずらすことで画像が切り替わります)

Loop.gif

 

PI Coresightはデフォルトで5秒更新の点は注意が必要です。過去に戻ればその秒数以下のデータであっても画像を確認できます。

 

コードは下記に記載されています。

GitHub - JeromeLefebvre/PictureCustomSymbol: A simple custom symbol to display pictures

 

上記の例をKenji Hashimoto と作成しました。

 

パフォーマンスのテスト

ファイルサーバーが遠く、ファイルのサイズが大きい場合は、表示の時間が掛かるのは当然だと思いますが、

PI Coresightで表示するとファイルをファイルサーバーからローカルにコピーすると同じぐらい時間を表示すると確認しました。

 

※テストの環境:

マシンが3つ:

  • ファイルサーバー
  • PI ServerとPI Coresight
  • クライアント

ネットワークのスピード: 

     レイテンシ:1ms

ファイルのサイズ: 2.2MB

 

クライアントのマシンで次の写真を表示するための時間:80msから170msまでです。

 

 

ビデオの表示

 

もし、ビデオをPI Coresightに表示したい場合は、別の方法が幾つかあると思いますが、上記の方法で表示したいなら、

ビデオをファイルに分割が必要です。

ビデオをフレームに分割ツールも幾つかがあると思いますが、

私ではPythonのOpenCVのライブラリを使用し、MP4のビデオからJPGのファイルに問題なく分割できました。