从TCP流中将数据插入RRDTool

时间:2015-05-09 14:05:02

标签: python tcp carriage-return rrdtool linefeed

我们正在尝试将TCP流中的值插入到RRDTool数据库中。 即使RRDTool接受第一个值,但下一个值不是。 我们得到错误:转换为浮动不完整:尾部 我们的客户代码是:

#!/usr/bin/env python
import socket
import Adafruit_BBIO.GPIO as GPIO
import Adafruit_BBIO.ADC as ADC
import time
import datetime

TCP_IP = '192.168.1.138'
TCP_PORT = 5005
BUFFER_SIZE = 1024
sensor_pin='P9_40'
light_pin='p8_10'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
ADC.setup()
GPIO.setup(light_pin, GPIO.OUT)

while True:
    reading = ADC.read(sensor_pin)
    millivolts = reading * 1800
    data = (millivolts-500)/10
    data = round(data,2)
    MESSAGE = str(data)
    s.send(MESSAGE)
    time.sleep(10)
s.close()

服务器端是这样的(只有tcp连接部分)

while True:
    input=conn.recv(BUFFER_SIZE)
    if input:
            input = input.replace('\r\n','')
            input = input.rstrip('\r|\n')
            temp1=float(input)
            x=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            y=input
            stream.write(dict(x=x, y=y))
            rrdtool.update('database/temp.rrd','N:input')
            print temp1
conn.close()
stream.close()

我们还尝试将输入值转换为float(temp1)并将其输入到数据库中,但这也不起作用。 (同样的错误)

我们怀疑它与回车或换行有关,但到目前为止还无法找到答案。

欢迎任何提示!

1 个答案:

答案 0 :(得分:0)

找到答案: 使用以下代码行将数据输入数据库:     rrdtool.update(' database / temp.rrd',' N:%s'%输入)