我们正在使用VOLTTRON MySQL Historian将仪表读数保存到MySQL数据库。仪表读数以类似于JSON的格式保存在“值字符串”中:
[{'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 :(得分:0)
MySQL历史学家直到VOLTTRON 3.0才存在。由于消息总线从2变为3,我甚至不确定你是如何工作的。有一个兼容层,但是它用于在V3上运行V2代理而不是相反。
你问题中的JSON是驱动程序实际发布给" all"设备主题。第一项是点名称到主题的映射,第二项是点名称到元数据的映射。
在3及以后,历史学家会选择它并将点值与该点的完整主题相匹配。您应该在数据库中看到的是一个主题值表。如何存储这些值取决于特定的历史数据库实现(Mongo vs MySQL vs Crate vs SQLite),但它将是一个点值主题的映射。
在较新版本的VOLTTRON中,我们已将sMap作为从设备收集数据的主要方式。现在,所有设备交互都通过主驱动程序代理进行。用于描述设备的CSV文件大部分未更改。现在,每个设备配置以每个设备格式的一个文件存储在JSON中。
我强烈建议您更新到VOLTTRON 4.平台自2以来有很多改进。
编辑:我还应该提一下,消息的形式从2变为3,这可能让历史学家感到困惑。