Wie Wecker programmieren?

  • Hallo,


    ich möchte einen (fertig) Wecker programmieren, für den ich das Frontend bereits habe.
    Ich kann auf einer Website beliebig viele Wecker anlegen, bei jedem Wecker einstellen um wie viel Uhr und an welchen Tagen er ausgelöst werden soll. Zudem auch ob der Wecker aktiv sein soll oder nicht (quasi wie bei jedem Smartphone).
    Die Daten für jeden Wecker (Uhrzeit, Tage, Aktiv) werden in einer MySQL Datenbank gespeichert.


    Schalten soll der Wecker - der natürlich wie der Webserver und die Datenbank auch auf meinem RPi laufen - die Lampen in meinem Zimmer. Der Teil funktioniert auch schon. Ich habe am RPi eine Sender, der über ein kleines Python Programm Befehle senden kann.


    So, jetzt habe ich also den Sender Teil und das Webinterface, in dem ich Wecker anlegen und speichern kann. Jetzt stehe ich nur leider gerade auf dem Schlauch, wie ich die Wecker "ausführen" kann. Sprich zu den jeweils eingestellten Uhrzeiten an den eingestellten Tagen, sollen die Lampen angehen, die ich eingestellt habe.


    Ich dachte erst daran Cronjobs zu stellen, was jedoch schwierig ist, da jeder Wecker zu unterschiedlichen Tagen an gehen kann und vor allem, da ich jeden Wecker - wie auch beim Handy - jederzeit ausschalten können möchte. Dann müsste ich die Cronjobs wieder automatisch löschen.


    Hat jemand eine Idee, wie ich aus den Informationen aus der Datenbank raus die Wecker auslösen kann?


    Vielen Dank schon mal :)


    PS: Im Anhang 2 screenshots, auf dem einen sieht man die Einstellungsseite, auf der gerade 2 Wecker existieren, der obere ist aktiv, der untere nicht (und eingeklappt). Auf dem zweiten Bild die Tabelle dazu. Die Spalte "Aktoren" speichert welche Lampen geschaltet werden sollen.

    • Official Post

    Das ist doch python, dafür gibts ein Modul ;). Einfach die DB nach aktuellen Weckern durchsuchen und cronjobs bauen/löschen lassen. Das kannst du z.B. immer machen lassen wenn du über dein Webinterface was geändert hast.

  • ouh das schaut schon mal stark danach aus, als ob ich damit was anfangen kann :) zumindest sollte es damit möglich sein, die cronjobs genau so zu definieren, wie ichs brauche (zeit und widerholung an bestimmten wochentagen). An und Ausschalten einzelner Jobs sollte damit auch machbar sein.
    Aber ist es möglich, damit einen existierenden Cronjob zu bearbeiten? also zb den auszuführenden Befehl zu ändern oder die Zeit zu ändern?
    Vielen dank schon mal :)

  • ok es hat alles geklappt :)
    Mein licht wecker funktioniert jetzt!!!
    Kann alles genau so einstellen wie es soll. Nur mit mySQL in python und den verschiedenen crontabs hatte ich so meine probleme^^

  • Was auch denkbar wäre um unabhängig von crontab zu sein, ist ein permanent laufendes Script welches regelmäßig die "ausführzeiten" aus der Datenbank ausliest und dann entsprechende Aktionen ausführt... So hab ich das auch bei einem relativ großen Project wo es nicht so viel Sinn machen tausende Crontabeinträge ständig zu verändern etc. Zumal kann crontab nur jede Minute agieren, nicht kürzer.

  • Setzt du alle paar Sekunden einen SQL query ab? Daran hatte ich auch gedacht, war mit cron dann aber erstmal doch einfacher, da ich dann nicht selber Wochentage und Uhrzeit überprüfen muss und ob ein Job bereits ausgeführt wurde etc. auf Dauer wird das aber denke ich die einzige Lösung sein, werde ich demnächst ändern