PI Web APIを使用したPI Coresight 2016 R2 カスタムシンボルによる値書き込み

This post is Japanese version of PI Coresight 2016 R2 Put Value Custom Symbol by PI Web API . (このブログはリンク先の日本語版です)

以前にPI Coresight 2016のカスタムシンボルでPIWebAPIを使用して値を書き込む方法を紹介しました。

The specified blog post was not found.

PICoresight2016R2がリリースされ、このPI Coresight 2016向けのカスタムシンボルはR2では動作しないため、コードを修正しました。(PI Vision用に変更してあります)

このコードを参考にしていただくことでPI CoresightからPI Web APIを使用するカスタムシンボルを作成していただけると思います。

コードはGitHubからダウンロードしていただけます。

GitHub - kenji0711/PICoresight2016R2-CustomSymbol-PutValue

また別のサンプルもございます。

 

 

以下の画面では250という値を現在のタイムスタンプでcdt158のタグに書き込んでいます。属性がタグに紐づいていれば属性にも値を書くことができます。


1-1.png
 

新しい値をボックスに入力し、"Put New Value"をクリックします。新しい値はPI Web APIにより、PI Data ArchiveかAFに現在時刻のタイムスタンプとともに書き込まれます。

書き込み用のボックスは 右クリック > Format Symbolより隠すことも可能です。

 


1-2.png
コードのポイントはPI Web APIのBatch リクエストを使用している点です。

バッチリクエストについては以下をご参照ください。

PI Web API Batchリクエストの紹介

 

以下3つのファイルを%PIHOME64%\Coresight\Scripts\app\editor\symbols\extフォルダにコピーします。

添付されたイメージpen.svgは%PIHOME64%\Coresight\Imagesフォルダにコピーします。

 

sym-putvalue.js (コード内のvar piwebapiaddress = "MachineName"は適切なPI Web APIマシン名に変更してください。PI CoresightマシンはPI Web APIが含まれるので、ここではPI Coreisghtマシンが該当します。)

 

ATTACHED 1-sym-putvalue

sym-putvalue.js (コード内のvar piwebapiaddress = "MachineName"は適切なPI Web APIマシン名に変更してください。PI CoresightマシンはPI Web APIが含まれるので、ここではPI Coreisghtマシンが該当します。)

 

ATTACHED 2-sym-putvalue-config.html

 

ATTACHED 3-sym-putvalue-template.html

 

このコードを実行するためにAFのConfigurationデータベースのPI Web APIの設定を変更する必要がありました。

CoresMethods = *, CorsHeaders = *, CorsOrigins = * , CorsSupportsCredentials = True (私はAuthentication MethodsにKerberosを使用しています )

 


1-3.png
HTTPSの証明書はグローバルサインのものを使用するべきです。または自己証明書の場合、クライアントマシンにてその証明書を登録し、証明書のエラーにならないようにする必要があります。

是非PI Visionから値を書き込んでみてください。

  • PHPを用いたりしてPI Vision(Coresight)上にコメント欄を設けたりすることも可能でしょうか?

  • PI Vision自体はPHPを使用していないため、独自でライブラリを動作するように設定など必要となります。IISでPHPを動作させる方法はインターネット上にあるかと思います。

    自分はPI Vision上でPHPを呼ぶことはテストしていないですが、おそらく動作するかと思います。Javascript, AngularJSならPI Visionも使用しているので、すぐに動作します。

    問題はPHPなりJavascriptなりは構わないのですが、コメントをどこに保存するかということになりそうです。

    PIPointのイベントにおける注釈なのか、画面情報の中にコメントを組み込むのか、または全然別の仕組みを自分で実装し、データベースに保存するのか、どういう情報を保存したいかによりそうです。

    ちなみにPIPointの注釈はAFSDK, PI Web APIはサポートしないので、PI SDKという古い言語を使用する必要があり、PI Visionから書き込むのは難しいかもしれません。

    画面自体にコメントを入れたいのであれば、画面情報はSQLのPI Vision用のデータベースに格納されています。PI Visionのシンボルレベルで、AngularJSのオブジェクトとして、config.XXXXのような形で、自分で変数が作成すれば画面のシンボルレベルでコメントを格納することも考えられます。