IDEE - Wecker mit Aufwecklicht

  • Hallo liebe Community,


    da bei mir gerade ein Pi ohne Verwendung in der Ecke liegt, habe ich mir Gedanken gemacht, was ich mit diesem anstellen könnte.


    Eine Idee, die dabei aufkam war einen Wecker zu basteln. OK grundsätzlich wohl nicht sonderlich schwer umzusetzen, stoße ich aber ohne sonderliche Programmierkenntnisse schnell an meine Grenzen.


    Da ich von einem Ambilight Projekt noch einige LED's übrig habe (WS 2801 LED Stripes), würde ich diese gerne in meinem Wecker verwenden.


    Nun nach einiger Recherche habe ich festgestellt, dass immer wieder die Möglichkeit mit Cronjobs in Zusammenhang mit "Weckern" aufkommt.


    Mit Hilfe von Cronjobs ist es natürlich relativ einfach bestimmte Dinge (bspw. Scripts) zu bestimmten Zeiten auszuführen.
    Ich habe das Ganze auch erfolgreich zum Laufen gebracht, aber ehrlich gesagt gefällt mir diese Möglichkeit nicht besonders, da alleine schon das Ändern von Weckzeiten zu umständlich ist. Zudem leidet der Woman Acceptance Factor auch sehr darunter ;)


    Also dachte ich mir, dass für das Einstellen der Weckzeit eine GUI her muss, bevorzugt ein kleines Webinterface.
    Als ich beim Stöbern dann auf den Eintrag von julian92 gestoßen bin, (Thread) versuchte ich mal mein Glück.


    OK, also schnell drei neue Menüpunkte (Wecker an, Weckzeit stellen und Wecker aus) erstellt. Für "Wecker ein" und "Wecker aus" jeweils ein Script geschrieben, und für Weckzeit stellen ein paar Codeschnippsel (PHP, Javascript) zusammengesucht, indem ich auf einer Webseite quasi die Weckzeit einstelle und diese in eine Textdatei schreibe.


    "Wecker an" startet ein kleines Python Programm, welches die erstellte Textdatei lädt, jede Minute die Zeit in der Date mit der Systemzeit vergleicht, und bei identischen Zeiten zur Zeit ein fest definiertes Lied abspielt.


    "Wecker aus" killt dann dieses Python Programm.


    Funktioniert erstmal alles soweit. (wobei man bei geänderten Weckzeiten das Python Programm einmal beenden muss, und neustarten muss, damit die neue Zeiten eingelesen werden, aber OK)


    Nun wollte ich aber weitergehen, und auch einen "Sonnenaufgang-Effekt" mit den bereits vorhandenen LED Stripes verwirklichen (Effekt sollte relativ einfach über die Hyperion Effect Engine zu bewerstelligen sein), zudem sollte der Weckton frei einstellbar sein und da frage ich mich ob es nicht elegantere Möglichkeiten gibt und ob ich den falschen Ansatz gewählt habe.
    Evtl. gibt es schon ein Webinterface um zeitgesteuert Scripts ausführen zu lassen oder Ähnliches.


    So, also sorry für den langen Text, aber ich wollte beschreiben, was und wie ich bis jetzt gemacht habe...
    _____________________________________
    Hier nochmal die Kurzfassung:


    Wecker mit...
    - Weckzeiten über Webinterface einstellen
    - Sonnenaufgang Effekt (vorhandene LED WS2801 Stripes)
    - Weckton einstellbar



    später
    - Internetradio Funktion
    - Display
    - Tasten (Hardwarebuttons)
    - Snoozefunktion
    - Wecken auf bestimmte Tage begrenzen
    - Feiertage beachten
    - uvm.


    Zur Info: Ich weiß, dass es durchaus ähnliche Projekte gibt (Bspw: Projekt), sich aber diese nicht ohne weiteres verwenden lassen können.
    Ich lasse mich aber gerne eines Besseren belehren.


    Vielen Dank fürs Lesen und evtl. habe ich ja den ein oder anderen mit der Idee angesprochen, der bereit wäre hier mitzuhelfen!


    :danke_ATDE:

  • Du brauchst nicht minütlich testen ob die zeit abgelaufen ist, du kannst dem sleep auch einfach sagen das es noch x-minuten (auch mehrere Stunden, Tage, Jahre) warten soll, damit könntest du dir eine Menge Prozessorlast sparen. Siehe z.B. http://stackoverflow.com/quest…eep-until-a-specific-time
    Oder entsprechende cron-einträge von deinem Tool schreiben lassen.
    Das Thema mit Weckzeit in Textdatei, und man muss neustarten, ist ein Programmierfehler, wenn du uns den Code verrätst können wir das bestimmt beheben...

  • Danke für deine Antwort. Ich denke, dass diese Abfrage jede Minute nicht sonderlich viel CPU-Load veruarsacht, da der Pi sonst nichts macht ist das meiner Meinung nach erstmal zu vernachlässigen. Ich werde mir den Link aber dennoch mal zu Gemüte führen, da ich sowas in Zukunft einsetzen könnte.


    Zu dem Thema mit der Textdatei gebe ich dir auf jeden Fall Recht, da ich vermutlich nur beim starten des Programms die die Datei, bzw. die Uhrzeit auslese und beim Überprüfen nicht nochmals.


    Kann mit dem Programm zur Zeit leider nicht dienen, da ich mich momentan im Urlaub befinde und keinen Zugriff auf diesen Pi habe.


    Es geht mir hier in erster Linie darum, ob das was ich vor habe mit meiner bisherigen Vorgehensweise verwirklicht werden kann, oder ob es evtl. schönere, bzw. einfachere Möglichkeiten gibt.

  • Hallo,


    da klinke ich mich auch mal mit ein, denn ich möchte so einen Wecker auch bauen.
    Ich dachte, über den Pi einen Radio-IC zu steuern, den man auf einem Breakout-Board bekommen kann. Allerdings kann der Pi sicherlich noch deutlich mehr, so daß ich aktuell eher an einen Radio-USB-Stick denke, der dann zusätzlich noch DAB / DAB+ kann.


    Und über einen Digital-Analog-Converter (DAC) würde ich die Helligkeit regeln - genauer gesagt plane ich sogar, mit roten, gelben und weißen LEDs einen Sonnenaufgang über drei DACs zu simulieren. Und beim Wecken die Lautstärke der Musik langsam ansteigen lassen, bis der vorgegebene Wert erreicht ist.


    Ein (grafisches) LCD soll die Uhrzeit anzeigen, abhängig vom Umgebungslicht automatisch gedimmt werden. Weiterhin wäre hier auch die Anzeige der RDS-Daten oder der DAB-Bilder möglich. Oder auch die Wetterdaten für den Tag.


    Zusätzlich könnte Musik oder andere Audiodaten vom USB-Stick abgespielt werden. Ebenso ist Webradio (Shoutcast?) sicherlich auch kein Problem.


    Über eine Echtzeituhr soll der Wecker in der Spur gehalten werden, die Zeit kann über das Netzwerk (WLAN) per NTP synchronisiert und automatisch gestellt werden.


    Ein Touchscreen wollte ich nicht verwenden, eher klassische Taster. Darüber könnte man die versch. Optionen wählen und den Wecker stellen. Die Weckfunktion sollte dann die crontab bearbeiten.


    Weiterhin dachte ich daran, das LED-Panel (welches ich auch noch bauen muss) in einem separaten Gehäuse über dem Bett anzubringen, so dass es auch als Leseleuchte verwendet werden kann.


    Nett wäre auch die Projektion der Uhrzeit über 7-Segment-Anzeigen an die Decke, aber hier habe ich noch keine passendes Bauteil gefunden.


    Ach ja, ebenso soll für den Wecker die Lautstärke und auch das Abspielmedium unabhängig vom Einschlafmedium gesetzt werden können. Also z.B. Radio SWR1 mit Lautstärke 10, zum Einschlafen USB-Medium mit Lautstärke 5....


    Gruß
    Nils

  • Hallo,


    die Idee mit dem Internetradio-Licht-Wecker hatte ich auch schon.


    An der Uni wird der Stundenplan tagesaktuell zum Download angeboten.


    Mit sed & Co habe ich das erste Modul des Tages herausgefunden, und dann 60 min vor Beginn das Licht sowie den Verstärker mit Webradio einschalten lassen. Nun will man nicht immer jeden Kurs wahrnehmen, sodass das auf Dauer keine Lösung war und ich das Projekt beendet habe.


    Ich wäre an deiner index.php zum flexiblen "Zeit in Datei schreiben" schreiben interessiert, wenn du sie teilen möchtest.


    BTW: "..wobei man bei geänderten Weckzeiten das Python Programm einmal beenden muss, und neustarten muss, damit die neue Zeiten eingelesen werden, aber OK"


    Das klingt nach einem Programmierfehler. In der Zeitvergleichs-Schleife kannst du einfach die Zeit neu einlesen:




    "Wecker aus" könnte anstatt das Programm zu killen einfach eine unerreichbare Zeit in die Datei schreiben.

  • Hallo,


    habe jetzt selbst was gemacht. Das Skript steht alleine und braucht keine extra Skripte zum Weckzeit stellen bzw. Wecker beenden. Das wird vom PHP Code übernommen.


    Alles was benötigt wird ist eine Datei, in welche die Uhrzeit geschrieben wird, sowie das Programm zum Zeitabgleich+Wecken, das du ja schon hast. In dem Fall muss dieses in den Autostart, sodass es immer beginnt zu vergleichen, sobald der Pi hochfährt.



    Der Webserver muss die Rechte haben in diese Datei zu schreiben.
    Ich habe sie nach /opt/wecker/time.txt gelegt.



    Hier die wecker.php


    Ist nicht der schönste Code, aber funktioniert soweit. Vlt kannst du ja damit was anfangen.


    Außerdem noch die Abgleichroutine:



  • Hallo kann Mir dabei mal jemand helfen ? also das script wecker.php funktioniert soweit gut es wertet auch die Weckzeit aus welche in die time.txt geschrieben wird.
    aber mit dem anderen hab ich so meine Probleme ..



    was mache ich da falsch ?? oder ist in dem skript ein fehler ? denn bekomme nur eine ausgabe der Ist und Weckzeit wenn ich die



    aktuellezeit=$ in aktuellezeit$ ändere
    weckzeit=$ ebenfalls in weckzeit$ ändere


    was Mir dann eine Rückmeldung gibt mit Aktuellezeit23:45 und eine weckzeit06:30
    wie vergleicht man nun diese beiden strings ??



    Sorry aber Irgendwie versteh ich dieses Raspian nicht so ganz ;(