我们使用VOLTTRON Historian将仪表读数保存到MySQL数据库中。仪表读数保存在“value string”中,格式类似于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之外,有没有python脚本/库可以直接从MySQL数据库中解析这些数据?例如,一种应用可以是使用Labview工具来定制要导出到csv的数据主题/时间框架(例如,来自给定日期的所有频率数据)。因为格式不是真正的JSON,我们不能使用JSON函数引用(https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html)。
或者,有没有一种方法可以让历史学家以更直接的列格式写入数据库?
注意:我们使用的是VOLTTRON 2.0。在较新的版本中,此功能是否发生了变化?
发布于 2017-04-20 05:51:43
MySQL历史学家直到VOLTRON3.0才出现。我甚至不确定您是如何工作的,因为消息总线从2显着更改为3。有一个兼容层,但它用于在V3上运行V2代理,而不是相反。
您问题中的JSON是驱动程序实际发布到设备的“全部”主题的内容。第一项是点名称到主题的映射,第二项是点名称到元数据的映射。
在3及以后,历史学家会拿起它,并将点值与该点的完整主题进行匹配。您应该在数据库中看到的是一个对值的主题表。如何存储这些值取决于特定的历史库实现(Mongo vs MySQL vs Crate vs SQLite),但它将是点主题到值的映射。
在更新版本的VOLTTRON中,我们去掉了sMap作为从设备收集数据的主要方式。现在,所有设备交互都通过主驱动程序代理进行。用于描述设备的CSV文件基本保持不变。每个设备的配置现在以每个设备一个文件的格式存储在JSON中。
我强烈建议更新到VOLTTRON 4。从2开始,平台有很多改进。
编辑:我还应该提到,消息的形式从2更改为3,这可能是历史学家感到困惑的原因。
https://stackoverflow.com/questions/43504055
复制相似问题