Samstag, 13. August 2011

[Tutorial] Automatisieren mit Tasker - Teil 2: Exit-Task & mehrere Kontexte

Nachdem wir nun in Teil 1 meines Tutorials unser erstes Profil inklusive Task erstellt haben, wollen wir nun etwas tiefer eintauchen. In der Zwischenzeit hat Tasker ein kleines Update bekommen, bei welchem vor allem die Oberfläche überarbeitet wurde, also nicht wundern wenn mein Tasker nun anders aussieht als in Teil 1.

Zu Erinnerung hier das Profil, welches im ersten Teil erstellt wurde.
  • Profil: "Hallo Welt"
    • Kontext:
      1. State -> Power -> Power
        • Type: Any
    • Task: "Hallo Welt"
      1. Alert -> Popup
        • Text: Hallo Welt



Im ersten Schritt soll nun ein Exit-Task hinzugefügt werden. Während normale Tasks, erkennbar an den grünen Pfeilen, ausgeführt werden sobald ein Profil aktiv wird, werden Exit-Tasks (rote Pfeile) ausgeführt wenn das Profil inaktiv wird. In unserem Fall also sobald wir den USB-Stecker vom Handy abziehen.

Das letzte mal haben wir zuerst einen Task erstellt und diesen danach einem Profil zugewiesen, diese Herangehensweise empfiehlt sich, wenn ein Task in mehreren Profilen eingesetzt wird. Wird ein Task nur in einem Profil eingesetzt, kann man ihn auch direkt erstellen. Dazu klicken wir nun einmal auf den schon erstellten "Hallo Welt" Task in unseren gleichnamigen Profil.

In dem sich nun öffnenden Fenster, stehen einem verschiedene Optionen zu Verfügung:

  • Add Exit Task | Add Enter Task
    • einen Exit oder Enter-Task hinzufügen, variiert je nachdem welcher schon vorhanden ist
  • Edit
    • den gerade angeklickten Task bearbeiten
  • Move To Exit | Move To Enter
    • den gerade angeklickten Task in einen Enter bzw. Exit-Task umwandeln
  • Rename
    • Task Umbenennen
  • Reselect
    • Neuen Task auswählen, ersetzt den aktuellen Task
Da wir einen Exit-Task hinzufügen wollen, klicken wir auf den entsprechenden Text. Nun öffnet sich das schon bekannte Fenster, welches alle gespeicherten Tasks auflistet. Da wir einen neuen anlegen wollen, klicken wir auf "New Task", diesmal geben wir ihm aber keinen Namen. Nun haben wir wieder das leere "Task Edit" Fenster vor uns.

Mit einem Klick auf "+" fügen wir eine Aktion hinzu. Diesmal wählen wir "Alert -> Notify Sound", hierbei wird eine Benachrichtigung mit Ton ausgegeben. 

Dabei können folgende Eigenschaften der Benachrichtigung eingestellt werden:
  • Title
    • Titel der Benachrichtigung
  •  Text
    • Inhalt der Benachrichtigung
  • Icon
    • Ein Icon welches in der Benachrichtigungsleiste angezeigt wird
  • Number
    • Hier kann der Benachrichtigung eine Nummer gegeben werden, wird später eine Benachrichtigung mit der gleichen Nummer erstellt, ersetzt diese die aktuelle Benachrichtigung
  • Sound File
    • Die Datei die abgespielt werden soll wenn die Benachrichtigung ausgegeben wird
  • If
    • Eine Bedingung die erfüllt sein muss damit diese Aktion ausgeführt wird (dazu komme ich später noch)
Als Title habe ich "USB" und als Text "Tschüß USB gewählt, außerdem habe ich noch eine kurze Sounddatei mit Klick auf die Lupe ausgewählt. Mit dem grünen Haken schließen wir nun das "Notify Sound" und danacht das "Task Edit" Fenster. Unser Profil sollte nun folgendermaßen aussehen:

Da wir dem Exit Task keinen Namen gegeben haben, werden uns in dieser Ansicht die in dem Task vorhandenen Aktionen angezeigt. Nachdem wir mit dem grünen Haken das Tasker Fenster geschlossen haben, können wir das Profil testen. Nun sollte sobald das Handy an einem USB-Kabel angeschlossen wird ein Popup ausgeben und wenn wir das Kabel wieder entfernen eine Benachrichtigung in der oberen Benachrichtigungsleiste.

Mit diesem Profil konnte nun jeder auch bemerken, wie oft ein Task ausgeführt wird, nämlich genau einmal sobald der zugewiesene Kontext aktiv wurde, bzw. inaktiv wenn es um den Exit-Task geht. Das heißt also, so lange wir das Handy am USB hängen haben wird der Task nicht noch einmal ausgeführt werden.

Nun wollen wir einen weiteren Kontext hinzufügen. Dafür klicken wir auf den schon vorhandenen "Power Any" Kontext. Im sich öffnenden Fenster klicken wir auf "Add" und dann auf "Location". Mit Location können wir automatisch Aktionen starten lassen wenn wir uns an bestimmten Orten aufhalten. Zum Beispiel kann zu Hause das W-Lan aktiviert werden oder auf Arbeit der Vibrationsmodus.

Die Fahne auf der Karte zeigt den Ort an, an welchem der Kontext aktiv werden soll. "Net" und "GPS" stehen für die Grundlage mit welcher die Ortsbestimmung ablaufen soll. Ich würde dabei "GPS" immer deaktivieren, da die hohe Genauigkeit meist nicht gebraucht wird und in GEbäuden das GPS eh selten funktioniert. Bei "Net" wird die Position über die Mobilfunkdatenverbindung bestimmt, dies ist hinreichend gennau und verbraucht weniger Strom als "GPS". Nun können wir entweder manuell einen Punkt auf der Karte auswählen indem wir einfach drauf klicken, oder mit dem Button unten rechts unsere aktuelle Position auswählen lassen. Mit "Radius" wird die Genauigkeit angegeben, wenn wir den Button für unsere aktuelle Position nutzen, wird diese automatisch eingetragen. Bei einem manuellen festlegen des Ortes muss diese per Hand eingestellt werden. Dabei ist zu beachten das die Genauigkeit nicht zu gering gewählt wird.

Nachdem wir unsere aktuelle Position bestimmt haben, können wird das Fenster wie gewohnt schließen. Unser Profil sollte nun folgendermaßen ausschauen:

Wenn wir nun Tasker schließen, werden automatisch die Änderungen übernommen. Zum Test nehmen wir nun das Handy vom USB. Dabei wird nun der Kontext "Power Any" und damit das komplette Profil deaktiviert, was wir an der Benachrichtigung erkennen können. Es müssen also immer alle Kontexte aktiv sein, damit ein Profil aktiviert und somit der zugehörige Task ausgeführt wird. Wenn wir nun also den Ort im Lacation-Kontext manuell ändern, wird das Profil nicht aktiv werden, bis wir uns am angegebenen Ort befinden und das Handy mit einem USB-Kabel verbinden.

Damit beende ich den zweiten Teil meiner Tutorial-Reihe. Der nächste Teil wird sich mit Variablen und mit ihrem Umgang beschäftigen.


Kommentare:

  1. hmmm...bei mir ist die Karte im Location Menu nicht aktiv. Egal wie lange ich warte, es wird nichts außer einem karierten Hintergrund mit der Fahne angezeigt.

    AntwortenLöschen
  2. Tasker muss die Karte aus dem Internet laden, wird sie nicht angezeigt, stimmt etwas mit deiner Datenverbindung nicht. Evtl. hast du Tasker in deiner Firewall geblockt.

    AntwortenLöschen
  3. Habe da mal ne Frage wegen der Ortsbestimmung mit Internet (nicht mit GPS).
    Mit GPS nen Ort zu bestimmen, kostet ja sehr viel Akku, (wenn es immer an bleiben soll). Wie ist das denn mit der Ortsbestimmung über Wlan oder E-Netz(2g/3g)?
    Ich schalte beides immer aus und stelle es nur mal kurz an, wenn ich es brauche. Allerdings bin ich kurz davor, alles auf Tasker umzustellen, auch JuiceDefender. Damit meine ich, JD übernimmt momentan die Einstellung (Internet alle 15 min. für 3 min. zu sync., Internet an, wenn Display entsperrt, und Nachts von 0:00h-6:00h Internet nur an, wenn Display entsperrt).
    Möchte nun das diese Einstellung Tasker, anstatt JD übernimmt. Und da gibt´s ja die Möglichkeit über Sendemast zu Hause scannen...
    Dann könnte ich JD deinstallieren, und hätte nur noch Tasker am laufen.Und ich denke, oder gehe mal davon aus, dass ich dadurch Akku spare. Bin mir nicht sicher ob Tasker und JD zusammen mehr Akku verbrauchen, als nur Tasker alleine.
    Jetzt meine Frage, würde es sehr viel Akku kosten, wenn ich die Ortsbestimmung über (W-Lan/E-Netz/2g/3g), immer laufen lasse?
    Ich kenne mich damit nicht so gut aus. Wie gesagt, ich weiß nur, das Ortsbestimmung über GPS sehr viel Akku kostet. Aber kostet es auch über Internet soviel?

    LG,
    Manu

    AntwortenLöschen
  4. Die Ortsbestimmung über "Cell Near", also die Sendemasten, kostet nur sehr wenig bis gar keinen Strom da es keine echte Ortsbestimmung ist. Tasker reagiert dabei nur auf die IDs bekannter Sendemasten, die sich in der Regel ja nicht fortbewegen und kann somit auf die aktuelle Position schließen. Sobald du mit einem Sendemasten verbunden bist liest Android eh dessen ID aus, damit steht diese auch Tasker zur Verfügung.

    Die Abfrage über Location->Net kostet etwas mehr Strom (aber immer noch wenig) ist aber unter Umständen genauer. Dabei wird das Assisted GPS der Funkmasten genutzt.

    Bei W-Lan scannt Tasker die umliegenden Acess Points und vergleicht diese mit einer bei Google hinterlegten Liste. Sieht er welche die in Google mit Position hinterlegt wurden, kann er die aktuelle Position recht genau (da die W-Lan Reichweite ja relativ gering ist) bestimmen. Da dabei aber W-Lan aktiviert und im Scanmodus sein muss verbraucht dies relativ viel Strom und bringt nur etwas wenn in der Umgebung recht viele Google bekannte APs sind.

    GPS sollte am meisten Energie kosten und ist meist auch viel zu genau fpr den Einsatzzweck, fällt also aus.

    Ich kann die State->Cell Near und Location->Net empfehlen. Meine Profile basieren alle auf Cell Near.

    Ein Tipp noch:
    wenn du mehrere Kontexte für ein Profil erstellst, überprüft Tasker immer nur das was am wenigsten Energie verbraucht, erst wenn dies zutrifft wird der nächste Kontext überprüft.
    Ein Beispiel:
    Du willst dein zu Hause bestimmen. Dann nimm Cell Near mit den Masten in deiner Umgebung (ungenau - verbraucht aber nur sehr wenig Strom) und WiFi-Near mit deinem Heim-WLan (sehr genau verbraucht aber viel Strom).
    Solange du nicht in der Nähe deines zu Hause bist überprüft Tasker die Position nur mit Cell Near und verbraucht so gut wie kein Strom. Erst wenn du in der Nähe bist, schaltet Tasker für die restliche Bestimmung W-Lan ein.

    AntwortenLöschen
  5. Hi,

    vielen, ganz ganz herzlichen Dank für dieses wirklich tolle Tutorial, gerade Teil II hat mir unendlich geholfen. Ich habe sowas wie den "Exit-Task" wie verrückt gesucht - der richtige Klick macht's natürlich auch aus. Der Tip mit "Cell Near" ist natürlich auch Gold wert...

    Bin gespannt auf den Rest - zwar kenne ich IF-/Then-Befehle etc. noch aus Basic/Batch-Zeiten, aber das ist alles einige Zeit her. Dank Deiner hervorragenden Tutorials schaff ich das aber sicher auch wieder :)

    Ganz liebe Grüsse,

    Sandra

    AntwortenLöschen
    Antworten
    1. freut mich dass dir meint Tutorial weiter geholfen hat. :)

      Löschen
  6. Hallo, mein Tasker öffnet keine Map beim lokalisieren egal wie lange ich warte. Auch im WLan und ohne Firewall passiert nicht. Schade denn so ist der Tasker nicht viel wert!

    AntwortenLöschen
    Antworten
    1. Sollte eigentlich ohne Probleme funktionieren.
      Welche Sprache hast du eingestellt? Die deutsche Übersetzung bringt einige Probleme mit, schalte falls nötig mal auf Englisch um.

      Löschen
  7. guten morgen! Bin durch Zufall auf diesen Super-Blog gestossen und habe schon viel profitiert davon. Vielen Dank für die tollen Erläuterungen !

    2 Fragen:
    a) wie kann ich bei Display OFF alle laufenden apps automatisch beenden. Ich finde kein "kill all" nur "kill" und da müßte ich jede app einzeln markieren.
    b) wie kann ich trotzdem Ausnahmen hinzufügen. Z.B. möchte ich, dass GPS tracking sehr wohl weiterläuft und alle anderen apps geschlossen werden um Akkuverbrauch zu minimieren.
    Vielen Dank im voraus für detaillierte Antworten.
    Recht liebe Grüße
    Rob

    AntwortenLöschen
    Antworten
    1. Es macht ehrlich gesagt nicht viel Sinn alle Apps bei ausgeschaltetem Display zu beenden. Die Ressourcen-Verwaltung von Android ist da sehr gut, es gibt keinen Grund da rein zu pfuschen.

      Löschen
  8. Danke Daniel, ich will damit verhindern, das apps im Hintergrund sich updaten, syncen,... und damit Akkuverbrauch und Datentransfer verursachen.
    Ging e es dafür einen Task?
    LG
    Rob

    AntwortenLöschen
    Antworten
    1. du kannst den AutoSync über Tasker deaktivieren. Das ergibt dann genau was du willst.
      Die Aktion findest du unter: Net->Auto Sync

      Löschen
  9. Hallo, ich möchte bei starken Wechsel der Funkmasten (z.B. 10 neue Masten erkannt in 1 min)darauf schließen, dass ich mich wohl mit dem Handy fortbewege. Dann würde ich z.B. GPS, Blitzer.. erst einschalten. Wenn die Anzahl der neu erkannten Masten/min seit z.B. 10 min sehr gering ist, dann werden die Apps wieder Deaktiviert.
    Der Vorteil würde im geringen Stromverbrauch liegen.
    Hat jemand eine Idee, wie man das programmieren kann?
    LG
    Dietmar

    AntwortenLöschen
  10. Hallo Dietmar,

    ich finde deine Idee klasse. Vielleicht kann man das lösen über einen Intervall, der %CELLID (Funkzelle) abfragt. Dessen Werte könnte man auswerten a la if %oldcellid <> %CELLID then %lastcellcount = %%lastcellcount + 1 (so jetzt mal ganz im Unreinen ;)
    Gruß
    Ronny

    AntwortenLöschen