You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将NGSIv2元数据发送至CrateDB时序数据库?

问题描述

需要通过FIWARE北向将包含元数据的属性发送至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,但元数据始终无法存储。尝试在订阅中添加元数据相关配置后,执行PUT请求更新属性及元数据,CrateDB中属性数值更新成功,但元数据仍未存储,且MongoDB中的对应实体元数据也未更新。Orion日志显示请求接收并返回204,但元数据未被持久化。

PUT请求示例:

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"
    }
  }
}'

订阅配置片段:

"notification": {
  "http": {"url": "http://quantumleap:'$QUANTUMLEAP_PORT'/v2/notify"},
  "attrs": [
    ....
    "AGV_Error",
    "avg_AGV_Error",
    ...
解决方案建议

1. 修正元数据的命名格式

元数据属于属性的附属信息,键名不应包含属性名。调整PUT请求的元数据结构,将avg_AGV_Error改为avg,accuracy_AGV_Error改为accuracy:

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": {
      "value": 25.6,
      "type": "Number"
    },
    "accuracy": {
      "value": 98.7,
      "type": "Number"
    }
  }
}'

2. 修正订阅的元数据引用方式

订阅中需要明确指定要包含的属性元数据,格式为属性名@元数据键名,同时设置attrsFormat为normalized确保元数据被正确封装:

"notification": {
  "http": {"url": "http://quantumleap:'$QUANTUMLEAP_PORT'/v2/notify"},
  "attrs": [
    "AGV_Error",
    "AGV_Error@avg",
    "AGV_Error@accuracy"
  ],
  "attrsFormat": "normalized"
}

3. 验证Orion的元数据存储状态

发送GET请求检查Orion是否已存储元数据:

curl -X GET 'http://XXXX:1026/v2/entities/urn:ngsi-ld:Agv:002/attrs/AGV_Error' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /northbound'

若返回结果包含metadata字段,说明Orion已存储元数据,问题出在QuantumLeap侧;若无,则检查Orion的METADATA_PERSISTENCE配置参数(默认值为true,若被设为false则会禁用元数据存储)。

4. 确认QuantumLeap的元数据支持

确保使用的QuantumLeap版本支持属性元数据存储到CrateDB,同时检查QuantumLeap的配置文件,确认未禁用元数据处理逻辑。


内容的提问来源于stack exchange,提问作者sfl0r3nz05

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:35:31