シグナスとオリオンに関する公式ドキュメントに従いました。すべての汎用イネーブラが正しくデプロイされ、ログ ファイルにエラーが記録されていません。しかし、奇妙なことが起こり、Orion は Cygnus に通知しません。
このメカニズムをテストするために、公式ドキュメントで提供されている Car エンティティの例に従いました。
私のエンティティ作成bashスクリプト:
(curl $1:1026/v1/updateContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
"contextElements": [
{
"type": "Car",
"isPattern": "false",
"id": "Car1",
"attributes": [
{
"name": "speed",
"type": "integer",
"value": "75"
},
{
"name": "fuel",
"type": "float",
"value": "12.5"
}
]
}
],
"updateAction": "APPEND"
}
EOF
私のエンティティサブスクリプションbashスクリプト:
(curl $1:1026/v1/subscribeContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Fiware-Service: vehicles' --header 'Fiware-ServicePath: /4wheels' -d @- | python -mjson.tool) <<EOF
{
"entities": [
{
"type": "Car",
"isPattern": "false",
"id": "Car1"
}
],
"attributes": [
"speed",
"oil_level"
],
"reference": "http://$2:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"speed"
]
}
],
"throttling": "PT1S"
}
EOF
私のエンティティ更新bashスクリプト:
(curl $1:1026/v1/updateContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
"contextElements": [
{
"type": "Car",
"isPattern": "false",
"id": "Car1",
"attributes": [
{
"name": "speed",
"type": "integer",
"value": $2
}
]
}
],
"updateAction": "UPDATE"
}
EOF
注: Orion はすべてのリクエストに応答します。
これらのスクリプトを実行した後、cygnus は orion から報告された情報を受け取り、それをデータベースに保存する必要がありますが、何も起こりません。/var/log/cygnus/cygnus.log ファイルにも /var/log/contextBroker/contextBroker.log ファイルにも、orion 通知に関する情報は報告されません。
注: 公式ドキュメントで提供されている notify.sh スクリプトを使用すると、Cygnus は正常に動作し、すべてのデータがデータベースに保存されます。
注:開いているポートに関する他の質問の問題を読みましたが、それらは私のものには当てはまりません。
編集1
orion をサブスクライブすると、応答は次のようになります。
{
"subscribeResponse": {
"duration": "P1M",
"subscriptionId": "563e12b4f4d8334d599753e0",
"throttling": "PT1S"
}
}
anentity を更新すると、orion はそれを返します。
{
"contextResponses": [
{
"contextElement": {
"attributes": [
{
"name": "speed",
"type": "integer",
"value": ""
}
],
"id": "Car1",
"isPattern": "false",
"type": "Car"
},
"statusCode": {
"code": "200",
"reasonPhrase": "OK"
}
}
]
}
orion からエンティティを取得するには、次のスクリプトを使用しました。
(curl $1:1026/v1/queryContext -s -S --header 'Content-Type: application/json' \
--header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
"entities": [
{
"type": "Car",
"isPattern": "false",
"id": "Car1"
}
]
}
EOF
応答:
{
"contextResponses": [
{
"contextElement": {
"attributes": [
{
"name": "fuel",
"type": "float",
"value": "12.5"
},
{
"name": "speed",
"type": "integer",
"value": "123"
}
],
"id": "Car1",
"isPattern": "false",
"type": "Car"
},
"statusCode": {
"code": "200",
"reasonPhrase": "OK"
}
}
]
}
注: 速度値が正常に更新されました。