Mittwoch, 1. Juni 2011

[Profil] Wecker mit Standort-, Wochentags-, Kalenderfunktion und Snooze

Wer wie ich andauernd vergisst seinen Wecker zu stellen, wird sich sicher über einen komplett automatisierten Wecker freuen. Deshalb hier ein Wecker der sich komplett auf die eigenen Bedürfnisse anpassen lässt. So kann der Wecker nur für bestimmte Orte aktiviert werden, oder nur wenn ein bestimmter Kalendereintrag vorhanden ist. Eine Wochentagsfunktion gibt es natürlich genauso wie das obligatorische 10 Minuten weiterschlafen, genannt Snooze.



Bevor wir das Wecker Profil erstellen können brauchen wir erst einmal 3 Tasks. Einen Wecker Task, welcher ein Lied aus unserer Musiksammlung abspielt. Sowie einen Snooze und Wecker-aus Task. Zu Erstellen der Tasks einfach auf "Task -> New Task" gehen.
  • Task 1: Wecker
    1. Variable -> Variable Set
      • Name: %VOLMOLD
      • To: %VOLM
      • If %VOLMOLD Isn't Set 
    2. Audio -> Media Volume
      • Level: 15
    3. Media -> Music Play Dir
      • Dir: Music
      • Subdirs: On
      • Audio Only: On
      • Random: On
    4. Alert -> Popup Task Names
      • Text: Wecker
      • Task: Snooze
      • Task: Off
  • Task 2: Snooze
    1. Media -> Music Stop
    2. Tasker -> Wait
      • Minutes: 10
    3. Tasker -> Perform Task
      • Name: Wecker
  • Task 3: Off
    1. Media -> Music Stop
    2. Audio -> Media Volume
      • Level: %VOLMOLD
    3. Variable -> Variable Clear
      • Name: %VOLMOLD
Dies sind nun also die 3 nötigen Tasks für unseren Wecker. Bevor die Musik abgespielt wird, wird die Medienlautstärke auf ihr Maximum gesetzt um sicher zu gehen, dass wir den Wecker auch hören. Damit wir uns später beim mp3 hören nicht die Ohren zerstören, soll die Medienlautstärke nach dem Wecken wieder auf ihren alten Wert zurückgesetzt werden. Dazu wird im ersten Schritt die Variable %VOLMOLD mit dem aktuellen Lautstärkewert der Medienlautstärke beschrieben. Zum Schluss wird die Medienlautstärke dann wieder zurückgesetzt. Um nun bei "Media Volume" ein Eingabefeld anstelle des Schiebereglers zu bekommen muss einfach der Button mit den zwei Pfeilen gedrückt werden.

Kommen wir nun zu den Triggern. Da ein Profil aus mehreren Triggern bestehen kann möchte ich hier nur die möglichen Trigger vorstellen. Ganz zum Schluss gebe ich dann ein Beispielprofil.
  • Trigger 1: Time
    • From: 08:00 Uhr
    • Till: 08:00 Uhr
  • Trigger 2: Day
    • Mon, Tue, Wed, Thu, Fri
  • Trigger 3: Location
  • Trigger 4: State -> Calendar Entry
  • Trigger 5: State -> Cell Near 
Mit diesen fünf Triggern lässt sich eine Menge anstellen. Ein Wecker der nur Wochentags klingelt ist dabei die einfachste Lösung, aber nichts besonderes da dies inzwischen jeder Standard Wecker bieten kann. Interessanter wird es bei "Location" bzw. "Cell Near". Man kann also den Wecker so einstellen, dass er nur zu Hause klingelt, im Urlaub etc. ist er automatisch deaktiviert, da man sich ja nicht am gespeicherten Ort befindet. So kann man nach dem Urlaub nicht vergessen den Wecker wieder zu aktivieren. Für die welche jeden Tag zu einer anderen Zeit aufstehen müssen, bietet sich vielleicht der Trigger "Calendar Entry" an. Hierbei klingelt der Wecker sobald ein Kalendereintrag aktiv wird. Somit könnte man sich in Google einen Wecker Kalender mit Einträgen für jeden Tag anlegen.

Nun möchte ich mein Profil mal als Beispiel vorstellen. Mein Wecker soll nur Wochentags wenn ich zu Hause bin 08:00 Uhr klingeln. Der Ort soll über "Cell Near" ermittelt werden, da ich Nachts W-Lan und Datenverbindung ausgeschalten habe und eine Ortsbestimmun über "Net" somit nicht funktioniert.
  • Profil: automatischer Wecker
    • Trigger:
      1. Time
        • From: 08:00 Uhr
        • Till: 08:00 Uhr
      2. Day
        • Mon, Tue, Wed, Thu, Fri
      3. State -> Cell Near
    • Task:
      • Wecker
Schon fertig. Wer schon ein "Cell Near" Profil für "zu Hause" besitzt, kann als dritten Trigger auch "State -> Variable Value" nutzen und in dem "zu Hause" Profil eine Variable zBsp. %HOME auf 1 setzen lassen wenn man zu Hause ist und im Exit Task wieder auf 0 setzen wenn man es verlässt.

Falls euch noch mehr Trigger einfallen, nur her damit :)

Kommentare:

  1. Ich habe in meinem Google-Kalender Dienstzeiten eingetragen. Nun würde ich gerne basierend auf den Einträgen eine Stunde früher geweckt werden. Lässt sich das auch mit Tasker realisieren?

    AntwortenLöschen
    Antworten
    1. Wenn schon für Dienstzeiten ein eigener Kalender angelegt ist, würde ich die entsprechenden Dienstzeiten um eben diese 1 Stunde früher eintragen.
      Dann hätte man das Problem im Tasker nicht.
      Klappt natürlich nicht für sonstige eingetragene Termine.

      Löschen
  2. leider funktioniert das nicht.
    Genau das wollte ich auch schon mit Tasker realisieren, jedoch scheitert es daran das Tasker nur auf aktive Kalendereinträge reagieren kann. Man kann also seinen Kalender nicht nach Einträgen durchsuchen, oder welche erstellen.

    Die einzige Möglichkeit ist, die Weckzeiten als extra Termin einzutragen und darauf zu reagieren. Dazu könntest du in Google einen neuen Kalender erstellen, welchen du in deiner KalenderApp dann ausblendest, sodass dieser nicht stört.

    Eventuell könnte man über irgendwelche Ecken eine solche Funktion erstellen, zBsp. den Kalender über HTTPGet auslesen, aber ich glaube der Aufwand wäre zu groß. Da ist ein extra Kalender mit Weckzeiten einfacher.

    AntwortenLöschen
  3. Danke. (auch für die tollen Profile hier)

    Schade. Das ist mir dann doch zu umständlich. Wäre praktisch gewesen, da ich jeden Tag wechselnde Dienstzeiten habe.

    AntwortenLöschen
  4. Ich weiß, dass der Eintrag alt ist, aber falls noch keiner auf eine andere Idee gekommen ist... Man kann im Googlekalender mittlerweile eine Erinnerungsfunktion per SMS aktivieren. Wenn man die eine Stunde früher auslösen läßt kann man die eintreffende SMS als Auslöseschalter für die Weckerfunktion nutzen. Das dürfte ungefähr genauso sicher sein wie eine stabile Internetverbindung um den Kalender auszulesen.

    AntwortenLöschen
  5. Falls immer noch Bedarf besteht, hätte ich noch einen Tipp:
    Es ist möglich über die "Test"-Action lokale Kalenderdaten (Kalendername, Terminname, usw.) zu einem bestimmten Zeitpunkt abzufragen. Man könnte also eine Art Schleife erstellen, die den Kalender am nächsten Tag in z.B. 10 min - Schritten mithilfe der "Test"-Action nach Kalendereinträgen "scannt". Hat man einen Treffer (z.B. der Kalendername des Eintrags zum getesteten Eintrags entspricht dem Googlekalender) können, ebenfalls mit der "Test"-Action, weitere Daten, wie z.B. Start des Termins ermittelt werden.
    Dafür wäre keine Internetverbindung nötig.

    AntwortenLöschen
    Antworten
    1. Vielen Dank für den Tipp. Werde ich nachher mal versuchen. Wird zwar mittlerweile für den o. g. Zweck nicht mehr benötigt, aber das kann man auch anderwärtig gebrauchen.

      Löschen
  6. Hallo,
    also ich bin ziemlich am Anfang mit Tasker. Als erstes hab ich mir Widgets erstellt mit dem ich einzelne Wecker in Gentle Alarm ein und aus zu schalten. Jetzt wollte ich einen Schritt weiter gehen und das ganze automatisch über einen Google Arbeitskalender zu machen. Ich musste allerdings schnell feststellen dass das nicht so einfach ist. Wenn ich das richtig verstanden habe ist der einzige Weg über eine Test Aktion. Ich habe 5 verschiedene Schichten die sich aber alle um 13Uhr überschneiden. Somit wäre das wohl der richtige Zeitpunkt zum testen. Ich würde das ganze gerne so einrichten das Tasker am Vortag um 20Uhr testet welche Schicht am nächsten Tag um 13Uhr aktiv ist. Ich weiß nur nicht wie ich in Tasker realisiere das er mir die Test Aktion auf den Zeitpunkt 17Std. in der Zukunft ausführt. Ich hoffe mir kann hier jemand helfen? Oder ist mein Ansatz ganz falsch?

    AntwortenLöschen
  7. Hallo ,
    Ich arbeite in der Gastro und man hat jetzt ein neues Programm dort werden die Arbeitstermine eingetragen worauf wir dann eine E-Mail bekommen. Da es keine DAV Anbindung gibt und im Betreff ale wichtigen Informationen enthalten sind wollte ich fragen ob es möglich ist das der Betreff ausgewertet wird und daraufhin ein ein Kalendereintrag vorgenommen wird.

    Information:
    Wiederaufbau:
    Jobs DATUM(dd.mm.yyyy) ANFANGSUHRZEIT(hh:mm) - ENDUHRZEIT(hh:mm) Theke ART(Gastro, Kesselhaus, Saal)

    Bei Änderungen im Dienstplan
    Jobs DATUM(dd.mm.yyyy) ANFANGSUHRZEIT(hh:mm) - DATUM(dd.mm.yyyy) ENDUHRZEIT(hh:mm) Theke ART(Gastro, Kesselhaus, Saal) wurde bearbeitet

    Ideen
    Über Variablenaplit die benötigten Variablen heraus picken da ja alles schön mit Leerzeichen getrennt ist sollte das ja möglich sein ... Schwierigkeiten sehe ich jetzt beim erstellen des Kalendereintrags da ich ja nur Anfangszeit und Endzeit habe und noch Schwieriger wenn der Termin bis nach 0 Uhr geht zudem wenn noch Änderungen im Dienstplan sid.

    Irgendwer einen Ansatz die man das lösen könnte

    AntwortenLöschen