【问题标题】:QuantumLeap truncating float data from Orion Context BrokerQuantumLeap 截断来自 Orion Context Broker 的浮点数据
【发布时间】:2021-12-01 17:44:29
【问题描述】:

我们正在使用 Orion Context 代理,现在与 QuantumLeap 和 CrateDB 结合使用。我们对 QuantumLeap 不太熟悉,需要帮助解决一些我们觉得很奇怪的问题。

在上下文代理中,我们有数据实体:

{
     "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"
             }
         }
     },

.......

}

所有三个属性都有数字值,并且来自“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 数据序列。

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

所以这很奇怪,因为在 QuantumLeap 源中我们发现“数字”属性类型应该始终映射到 CrateDB 中的“浮点”数据类型。

任何人都可以解释问题可能是什么?

【问题讨论】:

    标签: fiware fiware-orion


    【解决方案1】:

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

    接下来,要解决此问题,您有两种选择:

    1. 删除表,并从头开始数据收集( 当然,这只有在您不需要保留数据的情况下才有效 已发送)。
    2. 手动修改 cratedb 中的元数据和表。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多