我需要将包含元数据的北向属性发送到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
在 NGSIv2 中,属性元数据默认包含在通知中(除非您在 metadata
notification
以过滤掉)。
因此,我猜元数据在发送给 CrateDB 的通知中,但由于某些我忽略的原因(我不是 CrateDB 的专家),它们没有按您想要的方式存储。