Arbeiten mit apscheduler
Verfasst: Dienstag 3. Mai 2016, 11:02
Hi,
Ich bin zwar Student aber Wirtschaftsingenieur und mein Projekt ist reines Hobby.
Zu meiner Frage: ich will mit meinem Programm zu bestimmten Uhrzeiten/Intervallen über I2C mein Magnetventil am Pi ansteuern (die Methode für die einzelne Ansteuerung der GPIO am I2C habe ich schon geschrieben.
Scheinbar ist apscheduler (mit Cron) für mein Vorhaben die Wahl. Nur verstehe ich die Funktionsweise nicht. So habe ich es verstanden:
Ich dachte das Teil läuft jetzt bis ich es kille bis in alle Ewigkeit und übergibt an "Schalten" alle 2 Sekunden 1,0 und 0,0 und jeweils um 6 Uhr morgens und 24 Uhr abends 1,1 und 0,1...
Stattdessen bekomme ich "TypeError: add_job() missing 1 required positional argument: 'self'"
Dann habe ich überlegt ob ich das ganze wie mit multithreading mache (Klasse mit de scheduler, Konstruktoraufruf, etc. pp.) aber da komme ich auch nicht weiter.
Ich vermute ich habe ein grundlegendes Verständnisproblem. Ich hoffe mir kann jemand weiterhelfen. :/
Ich bin zwar Student aber Wirtschaftsingenieur und mein Projekt ist reines Hobby.
Zu meiner Frage: ich will mit meinem Programm zu bestimmten Uhrzeiten/Intervallen über I2C mein Magnetventil am Pi ansteuern (die Methode für die einzelne Ansteuerung der GPIO am I2C habe ich schon geschrieben.
Scheinbar ist apscheduler (mit Cron) für mein Vorhaben die Wahl. Nur verstehe ich die Funktionsweise nicht. So habe ich es verstanden:
Code: Alles auswählen
#import:
from apscheduler.schedulers.background import BackgroundScheduler
import time
#neue Instanz vom scheduler:
s=BackgroundScheduler
#irgendeine Funktion. Bspw. I2C schalten:
def schalten(Zustand, Adresse):
if Zustand == 0:
print ("Schalte " %Adresse%" aus.")
elif Zustand == 1:
print ("Schalte " %Adresse%" an.")
....
#keine Ahnung was das soll:
if __name__ == '__main__':
#zwei Aufgabe hinzufügen die im Intervall von 2 Sekunden gestartet wird:
s.add_job(func=schalten(1,1), ID=1, replace_existing=True, seconds=2)
s.add_job(func=schalten(0,1), ID=2, replace_existing=True, seconds=2)
#zwei Aufgaben die um 6 Uhr an und um 24 Uhr ausschalten
s.add_job(func=schalten(1,2), target="crone", ID=3, replace_existing=True, hour=*6)
s.add_job(func=schalten(1,2), target="crone", ID=3, replace_existing=True, hour=*0)
#Scheduler Starten:
s.start()
Stattdessen bekomme ich "TypeError: add_job() missing 1 required positional argument: 'self'"
Dann habe ich überlegt ob ich das ganze wie mit multithreading mache (Klasse mit de scheduler, Konstruktoraufruf, etc. pp.) aber da komme ich auch nicht weiter.
Ich vermute ich habe ein grundlegendes Verständnisproblem. Ich hoffe mir kann jemand weiterhelfen. :/