在 Orion Context Broker 中找不到设备惰性属性

Can't find device lazy attributes in Orion Context Broker

我使用 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"
  }

但是当在属性中设置 't' 时 - orion 会发送正确的响应。我在IoTA里面写了queryContextHandler和updateContextHandler,但是没有调用。 Orion 是一个 docker 镜像,以及来自 npm 的 node-lib。

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-下一个(git 版本:bd9f08cf86a631efe6dc1b078ac4c54648860aae)

并且 iotagent-node-lib 版本为 2.5.1

Orion returns "error forwarding query" 当它尝试将请求转发给上下文提供者(在您的情况下,IOTA 扮演上下文提供者的角色)但未能这样做时。典型的原因是连接问题,例如Context Provider 宕机、网络问题等

查看您的 post,您似乎正在使用以下上下文提供程序端点:

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

URL 似乎无效,可以解释问题。