无法在Orion Context Broker中找到设备延迟属性

时间:2018-01-17 17:29:53

标签: fiware fiware-orion

我使用node.js库开发物联网代理。并通过IoTA注册设备:

'devices': [{
    'device_id': 'ULSensor',
    'entity_name': 'Sensor01',
    'entity_type': 'BasicULSensor',
    'attributes': [
        {
            'name': 't',
            'type': 'celsius'
        },
        {
            'name': 'l',
            'type': 'meters'
        }
    ],
    'lazy': [
        {
            'name': 'p',
            'type': 'pascal'
        },
        {
            'name': 'c',
            'type': 'curiosity'
        }
    ]                 
}]

然后使用此有效负载向http://orion:1026/v1/queryContext发出请求:

data = {
    "entities": [{
        "isPattern": "false",
        "id": 'Sensor01',
        "type": entity_type
    }]       
    , "attributes": [
        'c'
    ]
}

得到了这个:

  "errorCode" : {
    "code" : "404",
    "reasonPhrase" : "No context element found",
    "details" : "error forwarding query"
  }

但是,当设置'在属性中 - orion发送正确的响应。我在IoTA中编写了queryContextHandler和updateContextHandler,但是没有调用它们。 Orion是一个docker镜像,而node-lib来自npm。

IoTA日志显示这是两个注册请求:

"url": "http://orion:1026/NGSI9/registerContext",
"method": "POST",
"json": {
    "contextRegistrations": [
        {
            "entities": [
                {
                    "type": "BasicULSensor",
                    "isPattern": "false",
                    "id": "Sensor01"
                }
            ],
            "attributes": [
                {
                    "name": "p",
                    "type": "pascal",
                    "isDomain": "false"
                },
                {
                    "name": "c",
                    "type": "curiosity",
                    "isDomain": "false"
                }
            ],
            "providingApplication": "http://myiotagent:4042"
        }
    ],
    "duration": "P1M"
}

"url": "http://orion:1026/v1/updateContext",
"method": "POST",
"json": {
    "contextElements": [
        {
            "type": "BasicULSensor",
            "isPattern": "false",
            "id": "Sensor01",
            "attributes": [
                {
                    "name": "t",
                    "type": "celsius",
                    "value": " "
                },
                {
                    "name": "l",
                    "type": "meters",
                    "value": " "
                }
            ]
        }
    ],
    "updateAction": "APPEND"
}

如何正确注册设备或向orion发送查询以获取延迟属性?

谢谢!

EDIT1

contextBroker --version输出:

1.7.0-next(git version:bd9f08cf86a631efe6dc1b078acaccc64648860aae)

和iotagent-node-lib版本为2.5.1

1 个答案:

答案 0 :(得分:1)

Orion在尝试将请求转发给Context Provider时返回"error forwarding query"(在您的情况下,IOTA扮演Context Provider的角色)但未能这样做。这种情况的典型原因是连接问题,例如上下文提供程序已关闭,网络问题等。

查看您的帖子,您似乎正在使用以下Context Provider端点:

"providingApplication": "http://myiotagent:4042"

该网址似乎无效,可以解释问题。