QuantumLeap正在截断Orion上下文Broker中的浮点数据



我们正在使用Orion Context broker,现在与QuantumLeap和CrateDB结合使用。我们不太熟悉QuantumLeap,需要帮助处理一些我们觉得奇怪的事情。

在Context Broker中,我们有一个带有数据的实体:

{
"id": "SC-5C0272FFFE8C206C",
"type": "StreetlightControlCabinet",
"activePowerR": {
"type": "Number",
"value": 0.7456,
"metadata": {
"timestamp": {
"type": "DateTime",
"value": "2021-12-01T16:33:13.00Z"
}
}
},
"activePowerS": {
"type": "Number",
"value": 0.5747,
"metadata": {
"timestamp": {
"type": "DateTime",
"value": "2021-12-01T16:33:13.00Z"
}
}
},
"activePowerT": {
"type": "Number",
"value": 0.4297,
"metadata": {
"timestamp": {
"type": "DateTime",
"value": "2021-12-01T16:33:13.00Z"
}
}
},
.......
}

所有三个属性都具有Number值;IoT代理MQTT/JSON";。

Quantum Leap已订阅Context Broker:

{
"description": "QL - StreetlightControlCabinet",
"subject": {
"entities": [
{
"idPattern": ".*",
"type": "StreetlightControlCabinet"
}
],
"condition": {
"attrs": [
"activePowerR",
"activePowerS",
"activePowerT",
...
]
}
},
"notification": {
"http": {
"url": "http://quantumleap:8668/v2/notify"
},
"metadata": ["dateCreated", "dateModified", "timestamp"],
"attrs": [
"activePowerR",
"activePowerS",
"activePowerT",
.....
]
}
}

QuantumLeap(V0.5(仅当序列中的第一个值是小数(如0.7456(时,才会创建具有浮点值类型的CrateDB数据序列。

如果序列中的第一个值可以在不丢失精度的情况下转换为整数(如0、1.0、2.0等(,QuantumLeap将在CrateDB中创建具有整数基类型的数据序列。因此,在数据库中,以下所有传入数据都将被截断为整数。

所以这很奇怪,因为在QuantumLeap来源中;数字";属性类型应始终映射到";浮动";CrateDB中的数据类型。

有人能解释这个问题可能是什么吗?

QuantumLeap将数据存储在关系数据库中。这有一些限制,即如果您第一次发送通知时通知具有给定类型,则以下通知将被广播(如果可能(到该类型。v0.5是一个非常旧的版本,支持机箱3,而不是较新的机箱版本,我建议更新到0.8.2。

接下来,要解决这个问题,您有两个选项:

  1. 删除表,并从头开始数据收集(的当然,只有当你不需要保存数据时,这才有效发送(
  2. 手动修改cratedb中的元数据和表

如果没有帮助,请联系我们https://github.com/orchestracities/ngsi-timeseries-api如有需要,我们还提供企业支持。

最新更新