Ошибка получения пустого значения при извлечении данных из sth-кометы

Сначала я регистрирую сервис, используя этот скрипт

curl -H "Тип контента: приложение /json" -H "Служба Fiware: cairoUniversity" -H "Путь службы Fiware: / FCI / ICDL" \ http://x.x.x.x:4041/iot/services -d '{" services ": [{" apikey ":" api1 "," cbroker ":" http://0.0.0.0:1026/", "entity_type": "Camps", "resource": "/iot/d" } ] }'

Затем я регистрирую устройство, используя это

curl http://x.x.x.x:4041/iot/devices \ -H "Тип содержимого: application/json" -H "Служба Fiware: cairoUniversity" -H "Путь к Fiware-Service: /FCI/ICDL" \ -d '{ "devices": [ { "device_id": "smartmeter2", "entity_name": "ICDL2", "entity_type": "Camps", "protocol": "PDI-IoTA-UltraLight", "timezone": "Европа / Мадрид" ", "attribute ": [ { "object_id": "c", "name": "Conscemption", "type": "int" } ] } ] }'

тогда я делаю подписку на орион

curl -X POST -H "Тип контента: application/json" -H "Принять: application/json" -H "Служба Fiware: cairoUniversity" \ -H Кэш Fiware-ServicePath: /FCI/ICDL" -H " -Control: no-cache" -d '{ "entity ": [{" type ":" Camps "," isPattern ":" false "," id ":" ICDL2 "}], >" attribute ": [" Conscemption "]," reference ":" http: // XXXX:8666/notify", "duration": "P1M", "notifyConditions": [ { "type": "ONCHANGE", "condValues ​​": [" Conscemption " ]}]} '" http://x.x.x.x:1026/v1/subscribeContext"}

после этого я отправляю наблюдение

curl " http://x.x.x.x:7896/iot/d?k=api1&i=smartmeter2" -d 'c | 47' -H "Тип содержимого: текст / обычный"

и, наконец, получить данные из STH

curl -X GET \
' http://x.x.x.x:8666/STH/v1/contextEntities/type/Camps/id/ICDL/attributes/Conscemption?aggrMethod=min&aggrPeriod=day&dateFrom=2015-01-28T00%3A00%3A00&dateTo=2018-01-01T23%3A59%3A59'\ -H' accept: application / json '\ -H' cache-control: no-cache '\
-H 'тип контента: application/json' \ -H 'fiware-service: cairoUniversity' \ -H 'fiware-servicepath: /FCI/ICDL' | python -mjson.tool }

я получил это ответы

"contextResponses": [ { "contextElement": { "attribute": [{"name": "Conscemption", "values": [] }], "id": "ICDL", "isPattern": false, "type ":" Camps "}," statusCode ": {" code ":" 200 "," reasonPhrase ":" OK "}}]

а это логи

стх-комета | время =2017-09-04T14:26:44.782Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= Все в порядке, 0 запросов за последний 60-й интервал sth-comet | время =2017-09-04T14:27:44.787Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= все в порядке, 0 запросов, посещенных за последние 60 секунд

стх-комета | время =2017-09-04T14:27:52.834Z | lvl=WARN | corr=99577e81-bbd4-4130-95f6-a9d029f84db0 | trans=99577e81-bbd4-4130-95f6-a9d029f84db0 | op=OPER_STH_GET | от = н / п | srv = Каирский университет | subsrv = / FCI / ICDL | comp = STH |

> msg = Ошибка при получении агрегированного сбора данных для поиска (коллекция может не существовать)

стх-комета | время =2017-09-04T14:28:44.792Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= Все в порядке, 0 запросов за последний 60-й интервал sth-comet | время =2017-09-04T14:29:44.797Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= Все в порядке, 0 запросов за последний 60-й интервал sth-comet | время =2017-09-04T14:30:44.805Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= Все в порядке, 0 запросов за последний 60-й интервал sth-comet | время =2017-09-04T14:31:44.811Z | lvl=INFO | corr= н / п | trans=n/a | op=OPER_STH_SERVER_LOG | от = н / п | srv = н / п | subsrv=n/a | comp=STH | msg= все в порядке, 0 запросов, посещенных за последние 60 секунд

В чем может возникнуть эта проблема и как ее решить

1 ответ

Решение

В соответствии с опубликованными вами журналами, уведомление никогда не достигает службы SHT, поэтому вы получаете сообщение msg= Ошибка при получении сбора агрегированных данных для извлечения (собрание может не существовать), поэтому проблема выглядит так, как при создании лица в Орионе.

Я заметил, что вы создали сущность с именем ICDL2, и в эту сущность вы включаете атрибут "name": "Conscemption", "type": "int", но никогда не включаете атрибут "value", поэтому при отправке данных он никогда не будет обновляется в этой сущности.

Во-вторых, вы отправляете данные на ваше устройство таким образом, "свернувшись" http://x.x.x.x:7896/iot/d?k=api1&i=smartmeter2 "-d 'c | 47' -H" Тип содержимого: текст / обычный " но, как я уже говорил, значение "47" никогда не будет записано в сущности, поскольку оно не создано, вы связываете триггерную ассоциацию со значением "name": "Conscemption", но оно никогда не изменяется, потому что не имеет значение атрибута.

Таким образом, кажется, что проблема управления вашими сущностями и подписками на ORION, вы можете найти больше информации о том, как создавать и обновлять сущности в ORION и как сделать некоторые тесты, по адресу: https://fiware-orion.readthedocs.io/en/master/user/walkthrough_apiv1/index.html. Убедившись, что Орион отправляет вам уведомления, вы можете посмотреть свои данные в комете STH. Кроме того, если у вас есть вопросы, связанные с продуктами fiware, вы можете опубликовать их на https://jira.fiware.org/ и получить прямой ответ команды каждого компонента fiware.

Другие вопросы по тегам