NGSIv2 のサポート¶
現在、cygnus-ngsi は NGSIv2 をサポートしていません。NGSIRestHandler
によって、NGSIv1 内の通知形式のみが受け入れられます。つまり、次のようなものです :
{
"subscriptionId" : "51c0ac9ed714fb3b37d7d5a8",
"originator" : "localhost",
"contextResponses" : [
{
"contextElement" : {
"attributes" : [
{
"name" : "speed",
"type" : "float",
"value" : "112.9"
},
{
"name": "oil_level",
"type": "float",
"value": "74.6"
],
"type" : "car",
"isPattern" : "false",
"id" : "car1"
},
"statusCode" : {
"code" : "200",
"reasonPhrase" : "OK"
}
}
]
}
それにもかかわらず、これは、Orion Context Broker と Cygnus との統合に NGSIv2 を使用できないことを意味するものではありません。
具体的には、NGSIv1で、両方でサブスクリプションすることができます :
POST /v1/subscribeContext
...
{
"entities": [
{
"type": "car",
"isPattern": "false",
"id": "car1"
}
],
"attributes": [
"speed",
"oil_level"
],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"speed"
]
}
],
"throttling": "PT1S"
}
And NGSIv2:
POST /v2/subscriptions
...
{
"subject": {
"entities": [
{
"id": "car1",
"type": "car"
}
]
},
"condition": {
"attrs": [ "speed", "oil_level" ]
},
"notification": {
"http": {
"url": "http://localhost:5050/notify"
},
"attrs": [ "speed", "oil_level" ],
"attrsformat": "legacy"
},
"expires": "2020-12-31T00:00:00.000Z",
"throttling": 1
}
上記のように、NGSIv2 を使用してサブスクリプションするときのトリックは、Orion のドキュメントの NGSIv1 notification with NGSIv2 subscriptions section で説明されているように、attrsFormat
フィールドの値を legacy
に設定することです。