Ausgabe nur in Zeitfenster (Lampenschaltung von - bis)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

Hallo liebe Boardmitglieder,
so langsam finde ich mich in python ein.
Ich habe auch schon verschiedene Programme am laufen, die in Python geschrieben sind.

Aktuell habe ich eine Mischung aus Hausautomatisierung und Alarmserver für mein Feuerwehrhobby am laufen.

Ich habe nur ein Problem.

Mein kleiner Raspberry Pi schaltet über 433Mhz eine Funksteckdose bei Alarm am Funkmelder an.
Die Steckdose bleibt auch nach Wunsch 2 min an. Hier hängt später dann eine Steckerlampe dran um im Schlafzimmer automatisch Licht bei Alarm zu haben.

Was mir jetzt jedoch fehlt ist ein Befehl um diese kleine Zusatzprogramm/Modul nur in den Nachstunden laufen zu lassen.

Zeitfenster z.B. 23:00-07:00 Uhr und nach Winter/Sommer entsprechend abänderbar.

Egal mit welchen Begriffen ich gesucht, habe, ich komme einfach nicht in die Richtung des Zeitfensters wie ich hier auf der Suche bin.

Wäre super wenn ihr mir etwa auf die Sprünge helfen könntet

Danke
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Das sollte doch mit dem datetime Modul recht einfach zu lösen sein.
Du kannst z.B. mit

Code: Alles auswählen

datetime.now().hour
die aktuelle Stunde abfragen und nur wenn diese in dem von dir gewünschten Intervall liegt, wird das Signal eben an die Steckdose gesendet.
Snakepit
User
Beiträge: 12
Registriert: Samstag 12. Juli 2014, 20:08

Code: Alles auswählen

from datetime import datetime, time
now = datetime.now()
now_time = now.time()
if now_time >= time(23,30) and now_time <= time(06,30):
    print "yes, within the interval"
Diesen Codeschnippsel habe ich jetzt im Internet gefunden.

Ich habe nur das Problem, egal wo ich mit if eine Abfrage finde, es wird immer nur mit Print gearbeitet.
Kann ich nach einer if-Bedingung keine Systemparamter weiter geben?
Leider bleibt mein Programm immer mit Fehler stehen.

Code: Alles auswählen

#!/usr/bin/python
import os
import time

from datetime import datetime, time
now = datetime.now()
now_time = now.time()
if now_time >= time(18,30) and now_time <= time(18,50):

os.system("sudo /home/pi/raspberry-remote/./send 01001 4 1")
time.sleep(120)
os.system("sudo /home/pi/raspberry-remote/./send 01001 4 0")
Ich bin irgendwie nicht fürs Programmieren geboren. (Die Meinung war auch schon mein Lehrer unter c++).
Wobei ich damals im Gegensatz zu heute keinen Sinn in den Programmen sah.

Wenn ich jetzt das richtig verstanden habe wird oben abgefragt, ob die Zeit zwischen 18:30 und 18:50Uhr liegt. Wenn ja, dann wird der Befehl darunter ausgeführt.
Nur leider funktioniert mein Code dann mit os.system nicht mehr. Denn ein print"os.system("sudo.....)"usw macht doch auch keinen Sinn, oder?

Aktuell kreiseln ziemlich viele Fragezeichen über meinen Kopf. Selbst in meinen Python Buch finde ich nichts dazu.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Die Fehlermeldung sagt dir doch recht eindeutig was nicht stimmt. Übersetze sie einfach mal.
Das Leben ist wie ein Tennisball.
Antworten