Short Time Historic(STH)コンポーネントによって公開される Historical Data API を使用すると、次のことが可能になります :

  • 任意のデバイスによってプラットフォームに登録された履歴コンテキスト情報を取得
  • 任意のデバイスによってプラットフォームに登録された、最大値、最小値、平均値、値の標準偏差、および発生回数の集約時系列コンテキスト情報を取得

履歴データの有効化

履歴および集計された時系列情報を消費する前に、興味のある具体的なコンテキスト情報をプラットフォームに通知することが重要です。

これを行うには、履歴および集約された時系列情報を生成する必要がある具体的なエンティティおよび属性を指定して、Short Time Historic(STH) から Context Broker へのサブスクリプションが必要です。

そのようなサブスクリプションの例が次に含まれています。{{}} 間の具体的なテンプレートの値は、 本物のカウンターパートで置換する必要があります :

POST /v1/subscribeContext HTTP/1.1
Host: test.ttcloud.net:1026
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}}
Fiware-ServicePath: {{Fiware-ServicePath}}
X-Auth-Token: {{user-token}}

{
  "entities": [
    {
      "type": "device",
      "isPattern": "false",
      "id": "mydevice"
    }
  ],
  "notifyConditions": [
    {
      "type": "ONCHANGE",
      "condValues": ["TimeInstant"]
    }
  ],
  "reference": "http://test.ttcloud.net:8666/notify",
  "duration": "P1Y",
  "throttling": "PT1S"
}

以前のサブスクリプションの結果として、プラットフォームは、durationプロパティで設定された次の年のプラットフォームに、そのデバイスによってプラットフォームに通知された新しい属性値ごとに、device 型の mydevice エンティティに関する履歴および集約された時系列コンテキスト情報を生成します。

履歴コンテキスト情報の取得

関心のあるデバイスの履歴および集約された時系列コンテキスト情報がアクティブ化されると、それをプラットフォームから取り出すことができます。

たとえば、対象のデバイスによって登録された temperature 属性の最後の10個の値を取得するには、次のようなリクエストをプラットフォームに送信する必要があります :

GET /STH/v1/contextEntities/type/device/id/mydevice/attributes/temperature?lastN=10 HTTP/1.1
Host: test.ttcloud.net:8666
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}}
Fiware-ServicePath: {{Fiware-ServicePath}}
X-Auth-Token: {{user-token}}

明らかに、temperature 属性は、対象デバイスがプラットフォームに値を登録している他の属性によって変更することができます。

Historical Data API は、hLimitandhOffset クエリ・パラメータを使用してページネーションもサポートしています。たとえば、指定された日付から最初の3つの温度値を取得するには、次のようなリクエストをプラットフォームに送信する必要があります :

GET /STH/v1/contextEntities/type/device/id/mydevice/attributes/temperature?hLimit=3&hOffset=0&dateFrom=2014-02-14T00:00:00.00
Host: test.ttcloud.net:8666
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}}
Fiware-ServicePath: {{Fiware-ServicePath}}
X-Auth-Token: {{user-token}}

以前のリクエストの結果、関連するタイムスタンプ(これは、プラットフォームに登録された具体的な日時)を含む一連の属性値が返されます。次のようになります :

HTTP 200 OK
Content-Type : application/json

{
  "contextResponses": [
    {
      "contextElement": {
        "attributes": [
          {
            "name": "temperature",
            "values": [
                {
                    "recvTime": "2014-02-14T13:43:33.306Z"
                    "attrValue": "21.28"
                },
                {
                    "recvTime": "2014-02-14T13:43:34.636Z",
                    "attrValue": "23.42"
                },
                {
                    "recvTime": "2014-02-14T13:43:35.424Z",
                    "attrValue": "22.12"
                }
            ]
          }
        ],
        "id": "mydevice",
        "isPattern": false,
        "type": "device"
      },
      "statusCode": {
        "code": "200",
        "reasonPhrase": "OK"
      }
    }
  ]
}

現在のところ、Historical Data API は、1つの要求につき1つの具体的な属性(温度、湿度など)に関連付けられた履歴コンテキスト情報を取得することのみを可能にすることを考慮してください。

集約された時系列コンテキスト情報の検索

履歴コンテキスト情報を公開することは別として、履歴データAPIは、関心のあるエンティティおよび属性に関する集約された時系列コンテキスト情報も公開します。

この集約された時系列コンテキスト情報は、例えば、特定の時間帯に特定の装置によってプラットフォームに登録され、次のリクエストのように特定の時間または分解能によってグループ化された最高温度値を得ることを可能にします :

GET /STH/v1/contextEntities/type/device/id/mydevice/attributes/temperature?aggrMethod=sum&aggrPeriod=second&dateFrom=2015-02-22T00:00:00.000Z&dateTo=2015-02-22T23:00:00.000Z
Host: test.ttcloud.net:8666
Accept: application/json
Content-Type: application/json
Fiware-Service: {{Fiware-Service}}
Fiware-ServicePath: {{Fiware-ServicePath}}
X-Auth-Token: {{user-token}}

現在、履歴データAPIは次の aggrMethod クエリ・パラメータ値をサポートしています :

  1. 数値の属性値の場合 :
    • max : 最大値
    • min : 最小値
    • sum : すべてのサンプルの合計
    • sum2 : すべてのサンプルの二乗値の合計
  2. テキストの属性値の場合 :
    • occur : 発生回数

一方、コンテキスト情報をグループ化することで時間を設定することを可能にする、aggrPeriod クエリ・パラメータのためにサポートされる値には、second, minute, hour, day および month があります。

前のような集約された時系列コンテキスト情報要求に対する典型的なレスポンスは、以下の通りです :

HTTP 200 OK
Content-Type : application/json

{
  "contextResponses": [
    {
      "contextElement": {
        "attributes": [
          {
            "name": "temperature",
            "values": [
              {
                "_id": {
                  "origin": "2015-02-18T02:46:00.000Z",
                  "resolution": "second"
                },
                "points": [
                  {
                    "offset": 0,
                    "samples": 123,
                    "sum": 34.59
                  },
                  {
                    "offset": 11,
                    "samples": 34,
                    "sum": 28.38
                  }
                ]
              }
            ]
          }
        ],
        "id": "mydevice",
        "isPattern": false,
        "type": "device"
      },
      "statusCode": {
        "code": "200",
        "reasonPhrase": "OK"
      }
    }
  ]
}

ご覧のように、レスポンスには、'resolution`のために返された 'offset' の元となる時刻の 'origin' または、要求された集約期間が含まれます。

詳細情報

Short Term Historic (STH) コンポーネントのセクションで、この機能、リファレンス API ドキュメント、およびソースコードを提供する FIWARE コンポーネントに関する詳細情報を得ることができます。