如何将 NGSIv2 元数据发送到 CrateDB

问题描述 投票:0回答:1

我需要将包含元数据的北向属性发送到CrateDB时间序列。属性格式示例:

{
    "object_id": "AGV_Error",
    "name": "AGV_Error",
    "type": "Integer",
    "value": 0,
    "metadata": {
        "avg": {
        "value": 25.6,
        "type": "Number"
        },
        "accuracy": {
        "value": 98.7,
        "type": "Number"
        }
    }
}

虽然属性值成功存入了CrateDB,但是我还是无法存入元数据。我试图检查是否可以在订阅中添加元数据,但我没有找到相关文档。

有什么建议吗?

更新

遵循过滤掉属性和元数据建议,我将元数据变量作为通知的一部分。例如:

    "notification": {
      "http": {"url": "http://quantumleap:'$QUANTUMLEAP_PORT'/v2/notify"},
      "attrs": [
        ....
        "AGV_Error",
        "avg_AGV_Error",
        ...

然后,我尝试插入没有结果的元数据。例如:

curl -s -o /dev/null -X PUT \
  'http://XXXX:1026/v2/entities/urn:ngsi-ld:Agv:002/attrs/AGV_Error' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /northbound' \
  -d '{
  "value": 86,
  "type": "Number",
  "metadata": {
    "avg_AGV_Error": {
      "value": 25.6,
      "type": "Number"
    },
    "accuracy_AGV_Error": {
      "value": 98.7,
      "type": "Number"
    }
  }
}'

AGV_Error
值已在 CrateDB 中成功更新,但元数据未更新。考虑到Mongo DB中的信息也没有更新。这是猎户座日志:

time=2023-05-18T12:22:47.313Z | lvl=INFO | corr=b2cd8bb6-f576-11ed-9554-0242ac12010b | trans=1684405275-107-00000001503 | from=X.X.X.X | srv=openiot | subsrv=/northbound | comp=Orion | op=logTracing.cpp[148]:logInfoRequestWithPayload | msg=Request received: PUT /v2/entities/urn:ngsi-ld:Agv:002/attrs/AGV_Error, request payload (212 bytes): {
  "value": 86,
  "type": "Number",
  "metadata": {
    "avg_AGV_Error": {
      "value": 125.6,
      "type": "Number"
    },
    "accuracy_AGV_Error": {
      "value": 108.7,
      "type": "Number"
    }
  }
}, response code: 204
metadata fiware fiware-orion cratedb
1个回答
0
投票

在 NGSIv2 中,属性元数据默认包含在通知中(除非您在 metadata

 中使用 
notification
过滤掉)。

因此,我猜元数据在发送给 CrateDB 的通知中,但由于某些我忽略的原因(我不是 CrateDB 的专家),它们没有按您想要的方式存储。

© www.soinside.com 2019 - 2024. All rights reserved.