Hallo,
ich habe noch ein weiteres Problem.
In meinem Skript, welches basierend auf Luftfeuchtigkeit und Temperatur entscheidet, ob ein Servo-Motor schaltet würde ich gerne alle 15 Minuten in ein logfile mit den beiden Werten schreiben. Das hinzufügen zur txt-datei klappt auch, aber es wird nicht nur alle 15 Minuten gemacht. Ich habe geplant es so zu lösen:
Python
def append():
current_time = datetime.now()
if current_time.minute == 0 or 15 or 30 or 45:
save_file = open('/home/pi/Desktop/cookie/Gewächshaus_log/Humidity' + str(current_time.strftime('%Y.%m.%d')) +'.txt','a')
save_file.write(str(time) + '\n' + str(round(mh,2)) + '%\n' + str(round(mt,2)) + '°C\n\n')
save_file.close()
print('log file written')
Irgendeinen (kleinen) Fehler habe ich doch bestimmt gemacht
Gruß, Tom
P.S.: Hier noch das komplette Skript, das bestimmt auch noch Schwächen hat.
Python
import pigpio
import DHT22
from time import sleep
from statistics import median
from datetime import datetime
from gpiozero import Servo
pi = pigpio.pi()
dht22 = DHT22.sensor(pi, 2)
servo = Servo(21)
servo.min()
sleep_time = 3
def readDHT22():
dht22.trigger()
hum = float(dht22.humidity())
temp = float(dht22.temperature())
return(hum, temp)
def append():
if current_time.minute == 0 or 15 or 30 or 45:
save_file = open('/home/pi/Desktop/cookie/Gewächshaus_log/Humidity' + str(current_time.strftime('%Y.%m.%d')) +'.txt','a')
save_file.write(str(time) + '\n' + str(round(mh,2)) + '%\n' + str(round(mt,2)) + '°C\n\n')
save_file.close()
print('log file written')
while True:
x = []
y = []
for i in range(10):
humidity, temperature = readDHT22()
x.append(humidity)
y.append(temperature)
sleep(sleep_time)
current_time = datetime.now()
time = current_time.strftime('%d.%m.%Y - %H:%M:%S:')
mh = (median(x))
mt = (median(y))
print(time)
print(str(round(mh, 2)) + '%\n' + str(round(mt,2)) + '°C')
if mh >= 99.8 or mt >= 28:
append()
sleep(60)
append()
sleep(60)
print('Luke offen')
servo.mid()
append()
sleep(60)
append()
else:
print('Luke geschlossen')
servo.min()
append()
Alles anzeigen