簡體   English   中英

QuantumLeap 截斷來自 Orion Context Broker 的浮點數據

[英]QuantumLeap truncating float data from Orion Context Broker

我們正在使用 Orion Context 代理,現在與 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"
             }
         }
     },

.......

}

所有三個屬性都有數字值並且來自“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 中的第一個值可以轉換為 integer 而不會丟失精度(如 0、1.0、2.0 等),QuantumLeap 將在 CrateDB 中創建具有 integer 基本類型的數據系列。 結果,所有后續傳入的數據將在數據庫中截斷為整數。

所以這很奇怪,因為在 QuantumLeap 源代碼中我們發現“數字”屬性類型應該始終映射到 CrateDB 中的“浮點”數據類型。

任何人都可以解釋問題可能是什么?

QuantumLeap 將數據存儲在關系數據庫中。 這有一些限制,即如果您第一次發送通知具有給定類型的通知,則以下通知將被強制轉換(如果可能)為該類型。 v0.5 是支持 crate 3 的非常舊的版本,而不是較新的 crate 版本,我建議更新到 0.8.2。

之后,要解決此問題,您有兩種選擇:

  1. 刪除表,然后從頭開始收集數據(當然,這只有在您不需要保留已發送的數據時才有效)。
  2. 手動修改 cratedb 中的元數據和表。

如果這沒有幫助,請通過https://github.com/orchestracities/ngsi-timeseries-api聯系我們,如果需要,我們還提供企業支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM