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. :/