PI Web APIによるBulk call (StreamSet)

PI Web APIはhttpsプロトコルでデータの収集、書き込みができます。

複数の属性、タグからBulkで値を取りたい、書きたい場合、StreamSetが使用できます。

Live Library PI Web API StreamSet

https://techsupport.osisoft.com/Documentation/PI-Web-API/help/controllers/streamset.html

 

値取得であればGetValueAdHocsにて複数のWebIDオブジェクトから値が取得できます。

Live Library PI Web API StreamSet > GetValueAdHocs

https://techsupport.osisoft.com/Documentation/PI-Web-API/help/controllers/streamset/actions/getvaluesadhoc.html

 

たとえば、複数のWebIDがわかっていれば以下書式で2つのStreamsから値が取得できます。

以下は"Available Memory GB"という属性と、タグの"sinusoid"から値を取得した例です。


pastedImage_7.png.png

複数StreamsのRecordedValuesが取得したい場合、GetRecordedAdHocが使用できます。

Live Library PI Web API StreamSet > GetRecordedAdHoc

https://techsupport.osisoft.com/Documentation/PI-Web-API/help/controllers/streamset/actions/getrecordedadhoc.html

 

また、Post Requestにより複数Streamsへの複数データの書き込みも可能です。

Live Library PI Web API StreamSet > UpdateValuesAdHoc

https://techsupport.osisoft.com/Documentation/PI-Web-API/help/controllers/streamset/actions/updatevaluesadhoc.html

Bodyは以下のようになります。

 {
 "WebId": "P0HpFdn0K2z0uPQL0sTSJJEQWTAAAAS0hBU0hJTU9UT0U2NDQwXFRFU1Q5OTg",
 "Items": [
 {
 "Timestamp": "2016-10-06T01:12:00Z",
 "Good": true,
 "Value": 100
 },
 {
 "Timestamp": "2016-10-06T01:13:00Z",
 "Value": 200
 }
 ]
 },
 {
 "WebId": "P0HpFdn0K2z0uPQL0sTSJJEQnjABAAS0hBU0hJTU9UT0U2NDQwXFRFU1Q5OTk",
 "Items": [
 {
 "Timestamp": "2016-10-06T01:12:00Z",
 "Value": 1
 },
 {
 "Timestamp": "2016-10-06T01:13:00Z",
 "Value": 2.5
 }
 ]
 }
]

"Good": true,などは省略可能です。

"Good": false,として書き込むと、”Set to Bad”という値としてPI Data Archiveに書き込まれます。 (PI Pointsに書き込んだ場合)

以下は実際にPostManで実行した例です。


pastedImage_0.png.png

上記のように複数Streamsの複数データを読み込む/書き込むことが可能です。

PostManについてや、PI Web APIの基本的な使い方は以下をご参照ください。

PI Web APIの使い方(基礎)

PI Web APIでは複数クエリをBatchでリクエストできる機能が提供されています。

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

こちらと併せて使用すればよりパフォーマンス向上が図れます。

 

本ポストはJerome Lefebvreと一緒に作成しました。