2017-04-19 36 views
0

我們使用VOLTTRON MySQL Historian將儀表讀數保存到MySQL數據庫。儀表讀數以類似於JSON格式保存在「字符串值」:解析MySQL Historian格式

[{'W_primary': 19003.677734375, 'freq': 60.01973342895508, 'pf': -0.9935459494590759}, {'W_primary': {'units': 'W ', 'tz': 'PT', 'type': 'float'}, 'freq': {'units': 'Hz', 'tz': 'PT', 'type': 'float'}, 'pf': {'units': u'', 'tz': 'PT', 'type': 'float'}}]

我們的目標是能夠導出這些數據既爲VOLTTRON使用和外部環境VOLTTRON。在VOLTTRON以外,有沒有可以直接從MySQL數據庫解析這些數據的Python腳本/庫?例如,一個應用程序可能是使用Labview工具來定製要導出到csv的數據主題/時間範圍(例如,來自給定日期的所有頻率數據)。由於格式不是真正的JSON,我們不能使用JSON函數參考(https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html)。

或者,是否有一種方法讓Historian以更直接的列格式寫入數據庫?

注意:我們使用的是VOLTTRON 2.0。此功能是否在更新版本中更改?

+0

如果單引號是雙引號,我相當肯定這將是有效的JSON – RiggsFolly

+0

如果它是JSON那麼幾乎所有的東西都有一種將它從原始數據結構轉換爲本地數據結構的方式 – RiggsFolly

回答

0

直到VOLTTRON 3.0才存在MySQL歷史數據庫。我甚至不確定你是如何完成這項工作的,因爲消息總線從2改變到了3。有一個兼容層,但它用於在V3上運行V2代理,而不是相反。

您問題中的JSON是驅動程序實際發佈到設備的「全部」主題的內容。第一項是點名到主題的映射,第二項是點到元數據的映射。

在3及更高版本中,歷史學家將挑選並將點值與點的完整主題進行匹配。你應該在數據庫中看到的是一個主題到價值的表格。如何存儲這些值取決於具體的歷史數據實現(Mongo vs MySQL vs Crate vs SQLite),但它將成爲一個重要主題到值的映射。

在較新版本的VOLTTRON中,我們放棄了sMap作爲從設備收集數據的主要方式。所有設備交互現在都通過主驅動程序代理進行。用於描述設備的CSV文件大部分未更改。每個設備配置現在以JSON格式存儲在每個設備格式的一個文件中。

我強烈建議升級到VOLTTRON 4.有該平臺的許多改進,因爲2

編輯:我還要提到的消息需要2改變爲3,這是形式大概是什麼是混亂歷史學家。

+0

謝謝凱爾。我們已經更新到VOLTTRON 4.1,並解決了我們的數據列問題。這個問題與基礎VOLTTRON平臺和我們從新版本引入的一些代理之間的版本不匹配。 –