Python使用串行端口数据更新RRDTool

时间:2013-12-26 21:13:46

标签: python rrdtool

我正在尝试使用串行信息更新RRDTool DB。是否可以将串行数据声明为更新行中的变量?使用下面的代码,rrdtool看不到N:时间戳。但是,如果我手动输入“N:”后的数据,它将更新。

import serial
import time
import numpy
import sys
import rrdtool


ser = serial.Serial('/dev/ttyUSB0', 9600)
time.sleep(1)
ser.flush()


for i in range(2):
    ser.readline()


while 1:    
    # Read data
    temp = ser.readline()
    ret = rrdtool.update('temperature.rrd', 'N:', temp)
    if ret:
     print rrdtool.error()
     time.sleep(5)
    quit()

1 个答案:

答案 0 :(得分:0)

我相信你想做这样的事情:

ret = rrdtool.update('temperature.rrd', 'N:%s' % temp)

rrdtool包装函数中的每个参数都应该对应于rrdtool cli命令中的参数。因此,在您之前的示例中,当您运行带有3个参数的rrdtool.update时,您实际上运行的是:

rrdtool update temperature.rrd N: 65.6

更新应该是一个参数,所以这正是你想要的:

rrdtool update temperature.rrd N:65.6