2015-11-05 3 views
2

Я следил за официальной документацией о cygnus и orion. Все общие средства развертывания развернуты правильно, без ошибок в файлах журналов. Но что-то странное случается, Орион никогда не уведомляет Лебедя.Orion не уведомил Cygnus

Чтобы проверить этот механизм, я последовал примеру с автомобилем, указанным в официальной документации.

Моя сущность создание Баш скрипт:

(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 

Моя организация подписки Баш скрипт:

(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 

Моя сущность обновление Баш скрипт:

(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 хорошо работает и сохраняет все данные в базе данных.

Примечание: Я прочитал в других вопросах проблемы с открытыми портами, но они не применимы к моим.

EDIT 1

После подписываюсь Орион, ответ:

{ 
    "subscribeResponse": { 
     "duration": "P1M", 
     "subscriptionId": "563e12b4f4d8334d599753e0", 
     "throttling": "PT1S" 
    } 
} 

И когда я обновляю anentity, Орион возвращает:

{ 
    "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" 
      } 
     } 
    ] 
} 

Примечание Значение скорости была обновлена ​​с успехом.

+0

Какое значение скорости перед обновлением? Вы можете проверить это с помощью 'GET/v1/contextEntities/Car1/attributes/speed' – fgalan

+0

Обновлено. Орион хорошо работает, но не уведомляет Лебедя. – urb

+0

Какое значение показывает GET для скорости? Какое значение скорости вы используете в запросе на обновление, отправляете ли вы GET? Спасибо! – fgalan

ответ

1

Принимая во внимание заголовки Fiware-Service и Fiware-ServicePath в подписном запросе, он был выполнен в служебном тракте «/ 4wheels» служебных «транспортных средств». Тем не менее, запрос создания объекта не использует такие заголовки, поэтому он создается в пути службы по умолчанию («/») службы по умолчанию. Таким образом, подписка не «покрывает» объект, поэтому обновления в сущности не вызывают уведомления.

Одним из решений проблемы было бы создание объекта на одном и том же пути обслуживания и обслуживания подписки, т. Е. «/ 4wheels» путь обслуживания «транспортных средств» службы.

Пожалуйста, проверьте официальную документацию Ориона о service и service path концепции.