Ein Shebang alleine ist keine Magie. Der macht überhaupt nur etwas, wenn du das Script ausführbar machst und NICHT als Argument dem Pytho-Interpreter übergibst. Zeig mal den Aufruf des Scripts und deinen aktuellen kompletten Stand.
while-Schleife endet nicht
-
macjoshua -
16. Januar 2018 um 13:09 -
Erledigt
-
-
while-Schleife endet nicht? Schau mal ob du hier fündig wirst!
-
Dieser Code:
Code
Alles anzeigen#!/usr/bin/env python3 import datetime schaltzeit1 = datetime.datetime.now() schaltzeit1.replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now() schaltzeit2.replace(hour=22, minute=0, second=0, microsecond=0) now = datetime.datetime.now() print datetime.datetime.now() print schaltzeit1 print schaltzeit2 if schaltzeit1 <= now <= schaltzeit2: print("if-Block")
bringt das Ergebnis:
2018-01-16 21:42:29.738339
2018-01-16 21:42:29.738001
2018-01-16 21:42:29.738252
Was ja bedeutet, dass die Zuweisung der Schaltzeiten nicht funktioniert!
-
Aufruf:
Codepi@raspberrypi3:~/script/test $ python3 time3.py 2018-01-16 21:46:24.048433 2018-01-16 21:46:24.048299 2018-01-16 21:46:24.048378 pi@raspberrypi3:~/script/test $ python3 -V Python 3.5.3
Code
Alles anzeigen#!/usr/bin/env python3 import datetime schaltzeit1 = datetime.datetime.now() schaltzeit1.replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now() schaltzeit2.replace(hour=22, minute=0, second=0, microsecond=0) now = datetime.datetime.now() print(datetime.datetime.now()) print(schaltzeit1) print(schaltzeit2) if schaltzeit1 <= now <= schaltzeit2: print("if-Block")
-
Mein aktueller Stand:
Python
Alles anzeigen#!/usr/bin/python import Adafruit_DHT import commands import RPi.GPIO as GPIO from time import sleep from subprocess import call import datetime schaltzeit1 = datetime.datetime.now() schaltzeit1.replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now() schaltzeit2.replace(hour=22, minute=0, second=0, microsecond=0) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) sensor = Adafruit_DHT.DHT22 gpio = 4 while True: now = datetime.datetime.now() if schaltzeit1 <= now <= schaltzeit2: # Daten auslesen humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio) print 'Ist-Feuchtigkeit: {0:0.1f}'.format(humidity) print 'Ist-Temperatur: {0:0.1f}*C'.format(temperature) if (humidity)<=50.0: # rc = call("/home/pi/script/./A2_EIN.sh") sleep(3) print 'A2 EIN' if (temperature)<20.0: # rc =call("/home/pi/script/./B_EIN.sh") sleep(3) print 'B EIN' if (temperature)>27.0: # rc= call("/home/pi/script/./C_EIN.sh") sleep(3) print 'C EIN' if (humidity)>=80.0: # rc = call("/home/pi/script/./A2_AUS.sh") sleep(3) print 'A2 AUS' if (temperature)>21.0: # rc= call("/home/pi/script/./B_AUS.sh") sleep(3) print 'B AUS' # sleep(30) else: print "Abbruch!"
-
ein replace überschreibt dir nicht eine Variable...
-
Mein Fehler! - sorry
Nimm das:
Code
Alles anzeigenimport datetime schaltzeit1 = datetime.datetime.now() schaltzeit1 = schaltzeit1.replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now() schaltzeit2 = schaltzeit2.replace(hour=22, minute=0, second=0, microsecond=0) now = datetime.datetime.now() if schaltzeit1 <= now <= schaltzeit2: print("if-Block") print(schaltzeit1) print(schaltzeit2)
EDIT: bootsmann war schneller
-
Teste mal statt dem
Pythonschaltzeit1 = datetime.datetime.now() schaltzeit1.replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now() schaltzeit2.replace(hour=22, minute=0, second=0, microsecond=0)
das
Pythonschaltzeit1 = datetime.datetime.now().replace(hour=6, minute=0, second=0, microsecond=0) schaltzeit2 = datetime.datetime.now().replace(hour=22, minute=0, second=0, microsecond=0)
Edit: Hofei war schneller!
-
Funktioniert jetzt, vielen Dank an die Runde!
Die While-Schleife soll abgebrochen werden, wenn sich die Zeit sich außerhalb des abgefragten Zeitraums befindet.
Macht man das über ein weiteres IF davor, gefolgt von einem Break?
Code
Alles anzeigenwhile True: now = datetime.datetime.now() if schaltzeit1 > now > schaltzeit2: break if schaltzeit1 <= now <= schaltzeit2: # Daten auslesen humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio) print 'Ist-Feuchtigkeit: {0:0.1f}'.format(humidity) print 'Ist-Temperatur: {0:0.1f}*C'.format(temperature)
-
-
Besten Dank euch allen und noch einen schönen Abend!
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!