Discussion:
[rrd-users] pi rrdtool python temperature
(too old to reply)
r100gs
2016-03-29 08:25:59 UTC
Permalink
Dear all,

I´m new to python and rrdtool. I created the following python script to
access some sensors on my raspberry. So, sensors are working fine and i get
results in terminal. Now I tried to insert those data into an rrd databas
but I always get the failure posted later on:
Verwendete Sensoren:

DHT22 (temperature, humidity)
BMP085 (pressure, temperature)
BH1750FVI (light)

In the terminal I get:

T1: 13.10 °C
Druck: 960.00 hPa
Druck NN: 1003.21 hPa
Helligkeit : 0.0 lx
T2: 12.40 °C
LF: 61.30
Traceback (most recent call last):
File „./wetter_sens_ab_rdd.py“, line 62, in
data1 = „N:%.2f:%.2f:%.2f:%.2f:%.2f:%.2f“ % (t1, t2, lf, druck, dnn, he1)
TypeError: float argument required, not function

Using the script:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from Adafruit_BMP085 import BMP085
import smbus
import time
import sys
import Adafruit_DHT
import re, os, rrdtool

bmp = BMP085(0x77)

bmp = BMP085(0x77, 3) # ULTRAHIRES Mode

t1 = bmp.readTemperature()

druckr = bmp.readPressure()

altitude = 364
dnn = druckr / pow(1.0 – altitude/44330.0, 5.255)

druck = druckr/100

DEVICE = 0x23 # Default device I2C address

POWER_DOWN = 0x00 # No active state
POWER_ON = 0x01 # Power on
RESET = 0x07 # Reset data register value

CONTINUOUS_LOW_RES_MODE = 0x13
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
ONE_TIME_HIGH_RES_MODE_1 = 0x20
ONE_TIME_HIGH_RES_MODE_2 = 0x21
ONE_TIME_LOW_RES_MODE = 0x23

bus = smbus.SMBus(1) # Rev 2 Pi uses 1

def convertToNumber(data):
return ((data[1] + (256 * data[0])) / 1.2)

def he1(addr=DEVICE):
data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1)
return convertToNumber(data)

lf, t2 = Adafruit_DHT.read_retry(22, 14)

print „T1: %.2f °C“ % t1
print „Druck: %.2f hPa“ % druck
print „Druck NN: %.2f hPa“ % (dnn / 100.0)
print „Helligkeit : “ + str(he1()) + “ lx“

if lf is not None and t2 is not None:
print „T2: %.2f °C“ % t2
print „LF: %.2f“ % lf #alt:print ‚T2 = {0:0.1f}°C LF = {1:0.1f}%‘.format(t2,
lf)
else:
print ‚Lesefehler! Neu probieren‘
sys.exit(1)

data1 = „N:%.2f:%.2f:%.2f:%.2f:%.2f:%.2f“ % (t1, t2, lf, druck, dnn, he1)

rrdtool.update(
„%s/wetter.rrd“ % (os.path.dirname(os.path.abspath(__file__))),
data1)

end of script.

RRD database: wetter.rrd I put some more sensores in case I want to add some
additionl ones)

temp 1 t1
temp 2 t2
temp 3 t3
temp 4 t4

wind richtung wr
wind geschw wg

Druck (NN) dnn

regen 1 r1
regen 2 r2
regen 3 r3
luftfeuchte lf

helligkeit he1

Abfragen jede Minute, alle 60s
Speichern 10 Tage = 14400 Werte
dann reduzieren auf 1 Wert pro Tag
Aufbewahren 50 Jahre: 18000 Werte

rrdtool create wetter.rrd \
–step ’60‘ \
‚DS:t1:GAUGE:60:-40:80‘ \
‚DS:t2:GAUGE:60:-40:80‘ \
‚DS:t3:GAUGE:60:-40:80‘ \
‚DS:t4:GAUGE:60:-40:80‘ \
‚DS:wr:GAUGE:60:0:360‘ \
‚DS:wg:GAUGE:60:0:100‘ \
‚DS:dnn:GAUGE:60:850:1250‘ \
‚DS:r1:GAUGE:60:0:100‘ \
‚DS:r2:GAUGE:60:0:100‘ \
‚DS:r3:GAUGE:60:0:100‘ \
‚DS:lf:GAUGE:60:0:100‘ \
‚DS:he1:GAUGE:60:0:1000‘ \
‚RRA:AVERAGE:0.5:1:14400‘ \
‚RRA:MIN:0.5:1440:18000‘ \
‚RRA:MAX:0.5:1440:18000‘ \
‚RRA:AVERAGE:0.5:1440:18000‘

Maybe s.b. can give some hints. I´m really new to all this stuff, so I´m
very happy to have the sensores running. Next step is to get a database and
than get some nice graphs.


Best regardings,
Stefan



--
View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/pi-rrdtool-python-temperature-tp7583334.html
Sent from the RRDtool Users Mailinglist mailing list archive at Nabble.com.
Tony Mountifield
2016-03-29 11:29:21 UTC
Permalink
Post by r100gs
Dear all,
IÂŽm new to python and rrdtool. I created the following python script to
access some sensors on my raspberry. So, sensors are working fine and i get
results in terminal. Now I tried to insert those data into an rrd databas
I am not very familiar with Python, but it looks like an error in your Python code,
and not a problem with using RRD.
Post by r100gs
DHT22 (temperature, humidity)
BMP085 (pressure, temperature)
BH1750FVI (light)
T1: 13.10 °C
Druck: 960.00 hPa
Druck NN: 1003.21 hPa
Helligkeit : 0.0 lx
T2: 12.40 °C
LF: 61.30
File „./wetter_sens_ab_rdd.py“, line 62, in
data1 = „N:%.2f:%.2f:%.2f:%.2f:%.2f:%.2f“ % (t1, t2, lf, druck, dnn, he1)
TypeError: float argument required, not function
It's complaining about the type of one of those parameters.
Post by r100gs
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Adafruit_BMP085 import BMP085
import smbus
import time
import sys
import Adafruit_DHT
import re, os, rrdtool
bmp = BMP085(0x77)
bmp = BMP085(0x77, 3) # ULTRAHIRES Mode
t1 = bmp.readTemperature()
druckr = bmp.readPressure()
altitude = 364
dnn = druckr / pow(1.0 – altitude/44330.0, 5.255)
druck = druckr/100
DEVICE = 0x23 # Default device I2C address
POWER_DOWN = 0x00 # No active state
POWER_ON = 0x01 # Power on
RESET = 0x07 # Reset data register value
CONTINUOUS_LOW_RES_MODE = 0x13
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
ONE_TIME_HIGH_RES_MODE_1 = 0x20
ONE_TIME_HIGH_RES_MODE_2 = 0x21
ONE_TIME_LOW_RES_MODE = 0x23
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
return ((data[1] + (256 * data[0])) / 1.2)
data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1)
return convertToNumber(data)
Here you have just defined he1 as a function.
Post by r100gs
lf, t2 = Adafruit_DHT.read_retry(22, 14)
print „T1: %.2f °C“ % t1
print „Druck: %.2f hPa“ % druck
print „Druck NN: %.2f hPa“ % (dnn / 100.0)
print „Helligkeit : “ + str(he1()) + “ lx“
print „T2: %.2f °C“ % t2
print „LF: %.2f“ % lf #alt:print ‚T2 = {0:0.1f}°C LF = {1:0.1f}%‘.format(t2,
lf)
print ‚Lesefehler! Neu probieren‘
sys.exit(1)
data1 = „N:%.2f:%.2f:%.2f:%.2f:%.2f:%.2f“ % (t1, t2, lf, druck, dnn, he1)
Here you are supplying he1 as an argument, without any () following it.
Python is complaining that you are passing the function itself, instead
of invoking it. Try using he1() instead.
Post by r100gs
rrdtool.update(
„%s/wetter.rrd“ % (os.path.dirname(os.path.abspath(__file__))),
data1)
end of script.
RRD database: wetter.rrd I put some more sensores in case I want to add some
additionl ones)
temp 1 t1
temp 2 t2
temp 3 t3
temp 4 t4
wind richtung wr
wind geschw wg
Druck (NN) dnn
regen 1 r1
regen 2 r2
regen 3 r3
luftfeuchte lf
helligkeit he1
Abfragen jede Minute, alle 60s
Speichern 10 Tage = 14400 Werte
dann reduzieren auf 1 Wert pro Tag
Aufbewahren 50 Jahre: 18000 Werte
rrdtool create wetter.rrd \
–step ’60‘ \
‚DS:t1:GAUGE:60:-40:80‘ \
‚DS:t2:GAUGE:60:-40:80‘ \
‚DS:t3:GAUGE:60:-40:80‘ \
‚DS:t4:GAUGE:60:-40:80‘ \
‚DS:wr:GAUGE:60:0:360‘ \
‚DS:wg:GAUGE:60:0:100‘ \
‚DS:dnn:GAUGE:60:850:1250‘ \
‚DS:r1:GAUGE:60:0:100‘ \
‚DS:r2:GAUGE:60:0:100‘ \
‚DS:r3:GAUGE:60:0:100‘ \
‚DS:lf:GAUGE:60:0:100‘ \
‚DS:he1:GAUGE:60:0:1000‘ \
‚RRA:AVERAGE:0.5:1:14400‘ \
‚RRA:MIN:0.5:1440:18000‘ \
‚RRA:MAX:0.5:1440:18000‘ \
‚RRA:AVERAGE:0.5:1440:18000‘
Maybe s.b. can give some hints. IÂŽm really new to all this stuff, so IÂŽm
very happy to have the sensores running. Next step is to get a database and
than get some nice graphs.
Best regardings,
Stefan
Cheers
Tony
--
Tony Mountifield
Work: ***@softins.co.uk - http://www.softins.co.uk
Play: ***@mountifield.org - http://tony.mountifield.org
Loading...