PI Web APIによるBulk call (StreamSet)

バージョン 3

    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から値が取得できます。

    https://PIWebAPIServerName/piwebapi/streamsets/value?WebID=XXXX&WebID=XXXX

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

    複数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

    https://PIWebAPIServerName/piwebapi/streamsets/recorded

    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で実行した例です。

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

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

    PI Web APIの使い方(基礎)

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

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

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

     

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