Comet
最小モード (STH-Comet のみ)
Comet を介して時系列コンテキスト・データを MongoDB に永続化します。
Comet の健全性チェック
Comet が起動したら、次のコマンドでステータスを確認できます:
リクエスト:
ngsi version --host comet.example.com
レスポンス:
{"version":"2.8.0-next"}
コンテキストの変更をサブスクライブ
サブスクリプションを作成して、Comet にコンテキストの変更を通知し、それを MongoDB に保存します:
リクエスト:
ngsi create \
--host "orion.example.com" \
--service openiot \
--path / \
subscription \
--description "Notify Comet of all context changes" \
--idPattern ".*" \
--uri "http://comet:8666/notify" \
--attrsFormat "legacy"
レスポンス:
618ba41e0e94f32bac78451d
コンテキスト・データの作成
次のスクリプトを実行して、コンテキスト・データを生成します:
#!/bin/bash
set -eu
for i in {0..9}
do
echo $i
ngsi upsert \
--host orion.example.com \
--service openiot \
--path / \
entity \
--keyValues \
--data "{\"id\":\"device001\", \"type\":\"device\", \"temperature\":${RANDOM}}"
sleep 1
done
サブスクリプションの一覧表示
次のスクリプトを実行して、サブスクリプションを一覧表示します:
リクエスト:
ngsi list \
--host "orion.example.com" \
--service openiot \
--path / \
subscriptions \
--pretty
レスポンス:
[
{
"id": "618ba41e0e94f32bac78451d",
"subject": {
"entities": [
{
"idPattern": ".*"
}
],
"condition": {}
},
"notification": {
"timesSent": 10,
"lastNotification": "2021-11-10T10:51:25.000Z",
"lastSuccess": "2021-11-10T10:51:25.000Z",
"lastSuccessCode": 200,
"onlyChangedAttrs": false,
"http": {
"url": "http://comet:8666/notify"
},
"attrsFormat": "legacy"
},
"status": "active"
}
]
Raw データの取得
最後のエントリ数でフィルタリングして、コンテキスト・エンティティ属性の短期履歴を取得します:
リクエスト:
ngsi hget \
--host comet.example.com \
--service openiot \
--path / \
attr \
--lastN 3 \
--type device \
--id device001 \
--attr temperature \
--pretty
レスポンス:
{
"type": "StructuredValue",
"value": [
{
"recvTime": "2021-11-10T10:51:23.552Z",
"attrType": "Number",
"attrValue": 13021
},
{
"recvTime": "2021-11-10T10:51:24.595Z",
"attrType": "Number",
"attrValue": 22143
},
{
"recvTime": "2021-11-10T10:51:25.636Z",
"attrType": "Number",
"attrValue": 21341
}
]
}
集計方法と解像度による集計データの取得
aggrMethod、aggrPeriod でフィルタリングして、コンテキスト・エンティティ属性の値の合計を一覧表示します:
リクエスト:
ngsi hget \
--host comet.example.com \
--service openiot \
--path / \
attr \
--aggrMethod sum \
--aggrPeriod day \
--type device \
--id device001 \
--attr temperature \
--pretty
レスポンス:
{
"type": "StructuredValue",
"value": [
{
"_id": {
"attrName": "temperature",
"origin": "2021-11-01T00:00:00.000Z",
"resolution": "day"
},
"points": [
{
"offset": 10,
"samples": 10,
"sum": 170416
}
]
}
]
}
例
こちら の例を参照ください。
フォーマル・モード (Cygnus + STH-Comet)
Cygnus を介して時系列コンテキスト・データを MongoDB に永続化します。
Cygnus と comet の健全性チェック
Cygnus が起動したら、次のコマンドでステータスを確認できます:
リクエスト:
ngsi version --host cygnus.example.com --pretty
レスポンス:
{
"success": "true",
"version": "2.10.0.5bb41dfcca1e25db664850e6b7806e3cf6a2aa7b"
}
Comet が起動したら、次のコマンドでステータスを確認できます:
リクエスト:
ngsi version --host comet.example.com
レスポンス:
{"version":"2.8.0-next"}
コンテキストの変更をサブスクライブ
Cygnus にコンテキストの変更を通知するサブスクリプションを作成し、それを MongoDB に保存します:
リクエスト:
ngsi create \
--host orion.example.com \
--service openiot \
--path / \
subscription \
--description "Notify Cygnus of all context changes and store it into MongoDB" \
--idPattern ".*" \
--uri "http://cygnus:5051/notify"
レスポンス:
618bb2ba926e5a749721fc6b
コンテキスト・データの作成
次のスクリプトを実行して、コンテキスト・データを生成します:
#!/bin/bash
set -eu
for i in {0..9}
do
echo $i
ngsi upsert \
--host orion.example.com \
--service openiot \
--path / \
entity \
--keyValues \
--data "{\"id\":\"device001\", \"type\":\"device\", \"temperature\":${RANDOM}}"
sleep 1
done
サブスクリプションの一覧表示
次のスクリプトを実行して、サブスクリプションを一覧表示します:
リクエスト:
ngsi list \
--host "orion.example.com" \
--service openiot \
--path / \
subscriptions \
--pretty
レスポンス:
[
{
"id": "618bb2ba926e5a749721fc6b",
"subject": {
"entities": [
{
"idPattern": ".*"
}
],
"condition": {}
},
"notification": {
"timesSent": 10,
"lastNotification": "2021-11-10T11:55:42.000Z",
"lastSuccess": "2021-11-10T11:55:42.000Z",
"lastSuccessCode": 200,
"onlyChangedAttrs": false,
"http": {
"url": "http://cygnus:5051/notify"
},
"attrsFormat": "normalized"
},
"status": "active"
}
]
Raw データの取得
最後のエントリ数でフィルタリングして、コンテキスト・エンティティ属性の短期履歴を取得します:
リクエスト:
ngsi hget \
--host comet.example.com \
--service openiot \
--path / \
attr \
--lastN 3 \
--type device \
--id device001 \
--attr temperature \
--pretty
レスポンス:
{
"type": "StructuredValue",
"value": [
{
"attrType": "Number",
"attrValue": 3876,
"recvTime": "2021-11-10T11:55:40.651Z"
},
{
"attrType": "Number",
"attrValue": 1629,
"recvTime": "2021-11-10T11:55:41.690Z"
},
{
"attrType": "Number",
"attrValue": 28278,
"recvTime": "2021-11-10T11:55:42.741Z"
}
]
}
集計方法と解像度による集計データの取得
aggrMethod、aggrPeriod でフィルタリングして、コンテキスト・エンティティ属性の値の合計を一覧表示します:
リクエスト:
ngsi hget \
--host comet.example.com \
--service openiot \
--path / \
attr \
--aggrMethod sum \
--aggrPeriod day \
--type device \
--id device001 \
--attr temperature \
--pretty
レスポンス:
{
"type": "StructuredValue",
"value": [
{
"_id": {
"attrName": "temperature",
"origin": "2021-11-01T00:00:00.000Z",
"resolution": "day"
},
"points": [
{
"offset": 10,
"samples": 10,
"sum": 192993
}
]
}
]
}
例
こちら の例を参照ください。