Anfänger Fragen...
Verfasst: Dienstag 17. Dezember 2013, 20:06
Hallo, ich will mit meinem Raspberry Pi die Temperatur loggen, das klappt soweit auch. Jetzt möchte ich mir dazu die Uhrzeit und das Datum mit loggen. Leider kenne ich mich in Python noch nicht gut aus.
Wenn ich meine Variable "zeit" ausgeben will kommt immer der Fehler, das "zeit" nicht definiert ist.
Meine Vermutung ist das "zeit" nur innerhalb der der 'def read_temp()' verfügbar ist, sehe ich das richtig? Wie bekomme ich die "zeit" in meiner Ausgabe zu Verfügung?
Hier mein bisheriger Code:
Danke
Wenn ich meine Variable "zeit" ausgeben will kommt immer der Fehler, das "zeit" nicht definiert ist.
Meine Vermutung ist das "zeit" nur innerhalb der der 'def read_temp()' verfügbar ist, sehe ich das richtig? Wie bekomme ich die "zeit" in meiner Ausgabe zu Verfügung?
Hier mein bisheriger Code:
Code: Alles auswählen
#! /usr/bin/python
import os
import glob
import RPi.GPIO as GPIO
import time
from time import *
GPIO.cleanup()
GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM) # BCM GPIO Nummern
GPIO.setup(24,GPIO.OUT) # P4 Ausgang fuer LED
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_c = '%.2f' % temp_c # Anzahl Nachkommastellen = 2
zeit = localtime()
return str(temp_c)
intervall = int(raw_input("Messintervall in Sekunden? "))
datenlog = raw_input("Daten loggen? (j/n)")
if datenlog == "j":
while True:
print(strftime("%d.%m.%Y", zeit) + " | " + strftime("%H:%M:%S", zeit) + " | " + read_temp()) +"C"
GPIO.output(24,True) #LED leuchtet fuer 1 sek wenn daten geschrieben werden
sleep(1)
GPIO.output(24,False)
sleep(intervall-1)
fobj_out = open("temp-daten.csv","a")
fobj_out.write(strftime("%d.%m.%Y", zeit) + ";" + strftime("%H:%M:%S", zeit) + ";" + read_temp() + "\n")
fobj_out.close()
if datenlog == "n":
while True:
print(strftime("%d.%m.%Y", zeit) + " | " + strftime("%H:%M:%S", zeit) + " | " + read_temp()) +"C"
sleep(intervall)
Danke