verlorenes / gestohlenes Handy finden
Smartphone per SMS orten › Position + Foto senden mit Tasker
In diesem Beitrag erkläre ich, wie man mit der App Tasker erreichen kann, dass einem das verloren gegangene Smartphone seine aktuelle Position per SMS zusenden kann. Außerdem zeige ich, wie bei fehlgeschlagenem Entsperren zusätzlich automatisch ein Foto der Frontkamera versendet werden- und wie man diese Daten auf einer (eigenen) Website einsehen kann.
Google bietet auf den Android-Smartphones seit Jahren bereits den integrierten Dienst »Find My Device« („Mein Gerät finden“) an: Damit lässt sich ein verloren gegangenes / gestohlenes Smartphone mittels Browser orten bzw. man kann es klingeln lassen. Hierfür muss das Android-Gerät mit einem Google-Konto verbunden sein bzw. man muss die gesamte Palette an Google-Hintergrunddiensten aktiviert haben (Google Play Dienste). Als Datenschutz-sensibler Nutzer verzichte ich bewusst auf so etwas – ebenso auf ähnliche Apps. Außerdem lässt sich damit kein Foto aufnehmen / versenden.
Mit Tasker lässt sich so etwas nachbauen!
Ich gliedere diesen Artikel in zwei Abschnitte – je nach Schwierigkeitsgrad. Am Ende erreiche ich jedoch Folgendes:
- Auslöser: Der Entsperrcode am Smartphone wurde falsch eingegeben oder das Handy hat eine SMS mit z. B. dem Text »#Standort« empfangen. Dann passiert Folgendes automatisch:
- Optional: Die Standortdienste werden aktiviert.
Falls man diese normalerweise deaktiviert hat. Tasker benötigt hierfür jedoch spezielle Rechte (adb-Zugriff oder root).
- Der aktuelle Standort wird intern ermittelt.
- Es wird eine SMS an den Absender bzw. (bei falscher Entsperrcode-Eingabe) an eine spezifische Nummer gesendet:
- mit einem Google-Maps-Link für den aktuellen Standort
- mit dem aktuellen Ladezustand des Akkus (z. B. 30%)
Optional: MMS – damit könnte man zusätzlich auch das Foto (s. u.) übertragen. Doch MMS wurde bei manchen Mobildfunkanbietern bereits abgeschaltet und würde ansonsten häufig Zusatzgebühren kosten. Daher gehe ich hier nicht weiter darauf ein.
- Es wird zudem lokal auf dem Gerät eine GPX-Datei (Standortdaten-Datei) angelegt und:
- Es wird unbemerkt ein Foto mit der Frontkamera aufgenommen. Dieses wird im Anschluss gleich verkleinert (um eine schnelle Übertragung zu gewährleisten).
- Das Foto + die GPX-Datei werden im Hintergrund auf einen eigenen Server geladen. Mit einer kleinen PHP-Webanwendung auf diesem lassen sich dann Karte mit Standort + Fotos in einem Browser begutachten.
- Optional: Die Standortdienste werden deaktiviert.
Siehe Punkt 2; wenn Tasker die Rechte dazu hat.
- Mann kann dann auch eine weitere SMS mit z. B. dem Code »#Sirene« an das verloren gegangene Smartphone senden: Es ertönt sofort ein lauter Ton.
Diese Schritte 1 bis 7 laufen in der Regel innerhalb von ca. 10 Sekunden ab – je nachdem, wie lange die Standortermittlung dauert und wie die Mobilfunkverbindung ist.
Soviel zu dem, was mit – mehr oder weniger Aufwand – möglich ist. Starten wir zunächst mit dem eher einfachen Teil:
SMS mit Google-Maps-Link und Akku-Wert an andere Nummer senden
Das Versenden einer SMS mit den aktuellen Standortdaten als simple Google-Maps-Adresse + dem aktuellen Ladezustand des Gerätes an eine andere Nummer ist recht einfach einzurichten. Ich erkläre alles Schritt für Schritt:
Cooldown-Variable anlegen
Als erstes legen wir uns eine kleine Hilfsvariable im Variablen-Fenster von Tasker an. Deren Wert werden wir später abfragen, damit der Task bei mehreren fehlerhaften Entsperrversuchen kurz nacheinander nicht unnötig oft oder gar parallel gestartet wird:

Ich nenne diese Variable innerhalb meines Setups %Cooldown_Vermisstenmeldung und setzte den Wert auf nein. Cooldown weil das System (der spätere Task) sozusagen erst einmal „abkühlen“ soll, bevor er erneut ausgeführt werden darf. Man kann die Variable natürlich auch anders nennen. Das war es hier bereits schon.
Task anlegen
Nun legen wir den eigentlichen Task mit dem Namen »Standort + Akku › SMS« an:

Der Task macht Folgendes:
- Im ersten Schritt wird der vorher angelegten Cooldown-Variable der Wert ja zugeteilt. Ein Profil bzw. Auslöser (dazu kommen wir im Anschluss) kann dadurch diesen Task – während er noch läuft – nicht parallel auslösen bzw. nicht mehrmals.
- Nun wird der aktuelle Standort abgerufen. In den Aktionseinstellungen habe ich die Genauigkeit auf min. 10 Meter definiert. Je geringer dieser Wert, desto länger wird das Smartphone mit der Bestimmung des Standortes zubringen.
In dicht bewohnten Gebieten erfolgt die Standortbestimmung normalerweise relativ schnell, da hier die vielen WLAN-Netzwerke um einen herum zur Positionsbestimmung genutzt werden können (sofern man die Google-Dienste oder MicroG nutzt). Ansonsten müssen GPS bzw. andere Standortsatelliten zur Rate gezogen werden, was meist etwas länger dauern wird und in Räumen häufig nicht funktioniert.
- Nun wird erst einmal zwei Sekunden gewartet bzw. wird dem System etwas Zeit gelassen.
- Hier wird es raffiniert: Hier erfolgt zunächst eine eingebettete if-else-Abfrage: Enthält der Text der zuletzt empfangenen SMS den genauen Begriff #Standort? Wenn ja (if), dann sende eine SMS an genau diese Absendernummer (Punkt 5). Wenn nein (else), dann sende eine SMS an eine genau definierte Nummer (mein Zweithandy oder das eines Freundes; Punkt 7). Danach wird diese If-Else-Bedingung wieder geschlossen (End if; Punkt 8) und es kann regulär im Task weitergehen.
Hintergrund: %SMSRB ist der Platzhalter (Tasker-interne Variable) für den Text, aus welchem die zuletzt empfangene SMS im System besteht. Es wird hier abgefragt, ob dieser das Codewort »#Standort« enthält. %SMSRF ist der Platzhalter für die Rufnummer, mittels der die zuletzt empfangene SMS versendet wurde. Tasker vergleicht nun diese Ist-Werte mit den von mir definierten Soll-Werten bzw. Bedingungen und entscheidet daraufhin, an welche Nummer versendet wird.
Hintergrund: Dieser Task soll nämlich später auch durch einen anderen Auslöser (falsche Pineingabe) getriggert werden, dann darf nicht an die letzte SMS-Nummer (ggf. von jemand anderen) geantwortet werden sondern an eine von mir definierte – an mein Zweithandy.
Werbung
Nun müssen wir uns noch den SMS-Nachrichtenteil (den Textteil) genauer ansehen:

Klickt man auf die SMS-Senden-Aktion bzw. legt sie an, erscheint ja dieser Bildschirm. Oben trägt man zunächst die Empfängernummer ein bzw. die Variable für die Nummer des Absenders der zuletzt erhaltenen SMS.
Als Nachrichtentext nehmen wir:
Standort: %gl_map_url Akku-Ladezustand: %BATT%
%gl_map_url ist ebenfalls eine interne Tasker-Variable und sie erzeugt später die genaue Google-Maps-URL. %BATT erzeugt eine Ziffer: Den Wert des aktuellen Ladestandes des Smartphones. Ich habe hier noch ein zusätzliches Prozentzeichen angehangen. Das schaut am Ende in der Ausgabe logischer aus.
Das Häkchen bei »Task Weiter Ausführen Nach Fehler« sollte hier unbedingt gesetzt werden. Denn wenn die SMS nicht versendet werden kann (weil z. B. gerade kein Netz vorhanden ist), würde ansonsten der gesamte Task an dieser Stelle abbrechen. Aber wir müssen am Ende ja noch die Cooldown-Variable wieder auf „nein“ zurück setzen, damit der Task später erneut gestartet werden kann.
- Zunächst warten wir jetzt aber eine Minute. Innerhalb dieser Zeit kann der Task nicht erneut ausgeführt werden (mehrere fehlerhafte Entsperrversuche hintereinander), weil wir später beim Profil (s. u.) eine Bedingung definieren werden.
- Nun wird der Variable %Cooldown_Vermisstenmeldung wieder der Wert nein zugewiesen. Wechselt man in den Variablen-Tab von Tasker, kann man dies prüfen, nachdem der Task durchgelaufen ist.
Diese Cooldown-Variable kommt gleich bei der Erstellung der Profile (Bedingungen) ins Spiel. Denn dort werden wir sie bzw. ihren Wert abfragen.
Den Task haben wir nun erstellt. Man kann ihn mit dem kleinen ► Play-Knopf unten manuell testen. Da hierbei vorher keine SMS mit dem Codewort »#Standort« eingegangen ist, wird der Task / das Skript die alternative, im Klartext definierte Nummer (Punkt 7) als Empfänger wählen.
Nun fehlen natürlich noch die Auslöser!
Und hierfür legen wir zwei Profile an:
Profile (Auslöser) anlegen
Es fehlt natürlich noch min. ein Profil, welches den eben angelegten Task automatisch auslöst – auf der Basis gewisser Bedingungen. Ich habe zwei Profile angelegt:
Bei Klick auf die Vorschaubilder werden diese schärfer angezeigt.
Das eine Profil nenne ich »Geräteentsperrung fehlgeschlagen: Standort senden«, das andere »SMS empfangen mit #Standort: Standort senden«. Beide Profile aktivieren den selben (eben erstellten) Task. Aber wie man sieht, haben beide natürlich je andere Bedingungen:
Das Profil für das Empfangen einer SMS erhält als Auslöser: Ereignis › Telefon › Empfangene Nachricht und darin als Inhalts-Text #Standort. Wenn also jemand eine SMS an mein Smartphone sendet mit dem Inhalt »#Standort«, feuert das Profil. Eine Abfrage, ob die „Cooldown-Variable“ auch auf ›nein‹ steht, ist hier nicht notwendig, denn ich werde an mein Gerät ja nicht im Stakkato solche Nachrichten senden.
Bei dem anderen Profil definiere ich als Auslöser: Ereignis › System › Geräteentsperrung fehlgeschlagen.
Außerdem füge ich hier die Bedingung: Status › Variable › Variablenwert hinzu:

In den Einstellungen dieser Bedingung wird also geprüft, ob unsere Variable den Wert nein besitzt. Ist dies der Fall, darf das Profil feuern, wenn gleichzeitig der Sperrcode falsch eingegeben wurde. Beide Bedingungen müssen hierfür wahr sein bzw. erfüllt.
Nachdem der Task gestartet ist, wird bei diesem ja gleich am Anfang die Variable auf ›ja‹ gesetzt und somit trifft eine der beiden Bedingungen für das Profil nicht mehr zu und es kann erst dann erneut wieder aktiv werden, nachdem am Ende des Tasks der Variablenwert zurück auf ›nein‹ gesetzt wird. So einfach ist das. Eigentlich ganz logisch, wenn man das Prinzip mit den Variablen einmal verstanden hat. Sie können sehr hilfreich sein uns sind ein wichtiges Hilfsmittel für viele clevere Tasker-Scripte.
Werbung
Bonus: lauten Ton abspielen bei SMS-Trigger
Um ein verlorenes Smartphone wiederzufinden, benötigt man zunächst dessen genauen Standort. Wie dieser ermittelt- und wie dieser einem zugestellt werden kann, habe ich eben gezeigt. Nun wäre es noch schön, wenn man zusätzlich noch mittels einer weiteren SMS als Trigger das Handy dazu bringen kann, einen lauten Ton abzuspielen, damit man vor Ort sozusagen weiß, in wessen Jackentasche es steckt.
Ein Task mit z. B. dem Namen »Alarmton abspielen« schaut dann so aus:

- Zunächst wird der Android-Lautstärke-Kanal für Alarme (Alarmlautstärke) auf einen hohen Wert gesetzt.
- Dann wird sicherheitshalber eine Sekunde gewartet, damit sich hier nichts überschneidet.
- Nun wird eine ganz bestimmte (aggressive) Tondatei aus dem Speicher meines Smartphones abgespielt.
In den Einstellungen dieser Aktion muss das Häkchen bei sofort mit Task fortfahren gesetzt sein. Außerdem sollte hier der Lautstärke-„Stream“ Alarme gewählt werden, denn für diesen haben wir ja eben die Lautstärke erhöht und außerdem können Alarme einen etwaig aktiven Nicht-Stören-Modus unterbrechen.
- Es wird etwas gewartet (die Tondatei darf währenddessen weiter ablaufen).
- Nun erfolgt der Stopp-Befehl für die Wiedergabe.
- Und am Ende – nachdem alles durchgelaufen ist – wird die Alarmlautstärke wieder auf ein normales Niveau zurück gestellt.
Ausgelöst wird dieser Task ebenfalls durch eine SMS – beispielsweise mit dem Schlüsselbegriff #Sirene. Wie man ein Profil anlegt mit der Bedingung, dass dieses feuert, wenn eine bestimmte SMS eingegangen ist, hatte ich ja eben schon gezeigt.
Und so schaut das Ergebnis aus: Von einem anderen Smartphone wird eine SMS mit dem Code #Standort an mein eigenes Gerät gesendet. Kurze Zeit später meldet es sich zurück bzw. sendet den aktuellen Standort in Form eines (bei mir) anklickbaren Google-Maps-Links und mit der Information über den aktuellen Ladezustand des Akkus.
Danach sende ich den Code #Sirene und sofort spielt mein verlorenes Smartphone für eine gewisse Zeit einen lauten Ton ab.
Auf meinem („googlefreien“) Zweit-Smartphone habe ich die Maps-App nicht installiert. Normalerweise würde sich daher bei Klick auf den Link der Browser öffnen mit der Maps-Website. Bei mir öffnet sich jedoch Osmand (meine Ofline-Karten-App) und zeigt mir den relativ genauen Standort meines primären Smartphones an. Perfekt!
Ich würde sagen: Damit haben wir Tasker bereits gut ausgereizt. Diese App ist ihr Geld wirklich wert und man kann damit viele tolle Dinge anstellen.
Nun wird es komplizierter: Wir wollen mittels Tasker unbemerkt (ohne Foto-App; Smartphone ist gesperrt) ein Foto aufnehmen und dieses an einen externen Server senden. Außerdem soll noch je eine GPX-Datei (Standort-Datei) angelegt werden, welche ebenfalls auf diesen Server gesendet wird. Hierzu benötigen wir einige Helfer-Apps.
Foto aufnehmen + versenden
Vorab: Google (der Hersteller von Android) hat die Sicherheitsmechanismen seit ca. Android 10 deutlich erhöht. Apps wie Tasker dürfen nicht mehr alles tun, was sie gerne machen möchten – beispielsweise still und heimlich Fotos aufnehmen, wenn das Smartphone ruht bzw. gesperrt ist. Dies dient dem Datenschutz bzw. der Privatsphäre und dies ist ja zunächst einmal eine gute Sache. Wer möchte schon ausspioniert werden? Daher muss hier leider nun etwas Aufwand betrieben werden:
Zusatz-Apps einrichten
Damit Tasker dennoch via SMS-Trigger oder via fehlerhaftem Entsperrversuch ein Foto mittels der Frontkamera des Smartphones anfertigen kann, benötigen wir eine Zusatz-App und für diese App zusätzlich noch zwei Plug-ins. Diese App heißt Termux und sie schaut so aus:

Dies ist ein Linux-Terminal für Android – Richtig: dieses schwarze Fenster, vor dem die Hacker immer hocken. Und tatsächlich kann man damit eine ganze Menge anstellen und Dinge tun, die mit normalen, grafischen Apps offenbar nicht möglich sind. Wir benötigen Termux jedoch nur zur Einrichtung. Später wird Tasker die Termux-Befehle im Hintergrund für uns ausführen. Für Termux selbst benötigen wir noch zwei Plugins.
Wir brauchen also jetzt:
- die App Termux
- Termux:API
Mit diesem Plugin kann Termux auf Android-Komponenten (die Kamera!) zugreifen.
- Termux:Tasker
Mit diesem Plugin kann Tasker auf Termux (bzw. Scripte) zugreifen.
Alle drei Programme sollte man sich vom alternativen Open-Source App Store F-Droid herunter laden. Man kann sich dort die aktuellen APK-Dateien laden und manuell installieren, oder man installiert sich halt die F-Droid-App und diese Apps dann aus dieser heraus. Alle drei Apps sollten jedoch von der selben Installationsquelle stammen (i. d. R. von F-Droid), sonst könnte es später zu Problemen kommen.
Als nächstes sollte man die Rechte dieser Apps prüfen: Also geht man in die Android-Rechteverwaltung für jede der drei Apps und aktiviert die hierzu nötigen (im Zweifel alle). ›Termux:API‹ muss beispielsweise auf die Kamera zugreifen können. ›Termux‹ muss auf den Gerätespeicher zugreifen können. Auch die Hintergrundnutzung muss ggf. aktiviert werden – wie auch für ›Termux:API‹.
Für Tasker selbst muss nun ebenfalls eine (neue) Berechtigung gesetzt werden: Darf auf Termux zugreifen: Run Commands in Termux environment. Dies wäre wichtig. Sonst gibt es später Fehlermeldungen.
Werbung
Als nächstes öffnen wir Termux und installieren innerhalb von Termux noch einmal die Termux-API und zwar mit diesem Befehl:
pkg install termux-api
Danach Enter auf der Bildschirmtastatur drücken. Man sieht dann einige grafisch-rudimentäre Animationen – wie es bei so einem Terminal üblich ist. Kurze Zeit später ist der Download der Pakete beendet und die Schnittstelle installiert.
Wir geben nun exit ein und bestätigen mit Enter auf der Bildschirmtastatur: Das Fenster / die App wird sich schließen. Dies war nur zum Test bzw. zum Warmwerden:
Manuell per Termux ein Foto aufnehmen
Wir öffnen Termux nun wieder und versuchen jetzt, mittels diesem Terminal manuell ein Foto aufzunehmen und zwar mit diesem Befehl:
termux-camera-photo -c 1 /storage/emulated/0/foto.jpg
Sollte Termux keinen Zugriff auf den internen Speicher haben (obwohl ggf. in der Android-Rechteverwaltung genehmigt), kann man den Zugriff evtl. mit diesem Befehl in Termux erhalten: termux-storage-setup.
(dann Enter tippen) Mit diesem Befehl sollte sofort ein Foto mit einer der beiden Kameras des Smartphones auf dem internen Speicher des Smartphones abgelegt werden – ohne dass sich eine Kamera-App geöffnet hat. Falls es die falsche Kamera (Linse) war, ersetzen Sie 1 mit 0 bzw. versuchen Sie es erneut. Natürlich muss auch der Pfad (/storage/emulated/0/) stimmen bzw. bei Ihrem Smartphone vorhanden sein.
➜ Erst nachdem dieser Schreibtest bzw. Kameratest erfolgreich war, kann es weitergehen. Termux darf keine Fehlermeldung ausgeben. Es müsste nun eine neue Datei „foto.jpg“ gespeichert sein, die auch ein Bild zeigt.
Soweit sind wir bisher: Wir können nun manuell per Termux ein Foto anfertigen. Dies soll später Tasker automatisiert übernehmen und hierfür benötigen wir ein Script. Dummerweise müssen wir dieses Script tief im Android-System in einem Termux-Unterordner anlegen und das kann man (ohne root) nicht mit einem grafischen Dateimanager machen: Dies geht nur mittels Termux direkt:
Termux-Foto-Script anlegen
Wir erstellen daher innerhalb der Termux-Konsole zunächst diesen Unterordner und zwar mit diesem Befehl:
mkdir -p ~/.termux/tasker
Danach bestätigen wir mit Enter auf der Bildschirm-Tastatur. Nun ist dort ein neuer Ordner entstanden und wir begeben uns hinein:
cd ~/.termux/tasker
(Wieder Enter) Wir sind nun „drin“. Nun legen wir dort eine neue Datei an (unser Script):
nano foto_machen.sh
nano ist ein Editor – ein eigenständiges, kleines Programm, welches Termux inne hat. Derzeit haben wir nano geöffnet und sind im Begriff, eine neue Datei anzulegen (foto_machen.sh). Wir befüllen nun diese sh-Datei – unser Script:
#!/data/data/com.termux/files/usr/bin/sh termux-camera-photo -c 1 /storage/emulated/0/aktuelles-foto_gross.jpg
Der Pfad in Zeile 2 muss natürlich auf dem eigenen Gerät ein gültiger sein.
Eingefügt? Dann tippen wir unten auf CTRL und danach in der Tastatur auf S. Somit haben wir das Script mit dem Namen foto_machen.sh im Pfad /.termux/tasker/ im Termux-Programmverzeichnis tief im Android-System abgespeichert.
Nun verlassen wir nano wieder: CTRL + X
Als nächstes müssen wir unser kleines Script noch ausführbar machen:
chmod +x foto_machen.sh
Denn wir befinden uns ja in einer Linux-Umgebung und dort dürfen solche Dateien zunächst nicht von Hinz und Kunz ausgeführt werden – Es sei denn, man lässt es ausdrücklich zu. Wir bestätigen wieder mit Enter auf der Bildschirm-Tastatur.
Jetzt haben wir ein ausführbares Script erstellt, welches (später via Tasker) ein Foto machen kann. Wir testen dieses Script zunächst manuell in Termux:
Zunächst beenden wir sicherheitshalber Termux: exit + Enter. Dann starten wir die App erneut und wechseln wieder in das Verzeichnis, in dem unser Script liegt:
cd ~/.termux/tasker
Und jetzt starten wir das Script:
./foto_machen.sh
Beide Befehle je mit Enter bestätigen. Nun sollte mittels diesem kleinen Befehl bzw. mittels dieser Script-Ausführung das selbe passiert sein, wie oben: Es sollte ein aktuelles Foto im internen Speicher abgelegt sein (dieses Mal mit dem Dateinamen ›aktuelles-foto_gross.jpg‹).
Das hat funktioniert? Dann können wir uns endlich wieder Tasker zuwenden. Denn mit dem zuvor installierten Plugin Termux:Tasker kann Tasker nun diese Scripte ausführen und wir müssen uns nicht mehr mit der Konsole herum schlagen:
Los geht’s:
Termux-Script mittels Tasker-Aktion starten
Wir wechseln zu Tasker und legen zum Test erst einmal einen neuen Task »Test« an.
Dort erstellen wir einige relevante Aktionen:
- Das Wichtigste: Hier wurde als Aktion das Plugin Termux:Tasker als Aktion ausgewählt. Zur Konfiguration dieser Aktion kommen wir im Anschluss. Es wird hier also das Script aufgerufen bzw. ein stilles Foto gemacht.
Plugins finden sich bei Tasker unter Aktionskategorie › Plugin. Dort sollte sich das zuvor installierte Termux:Tasker anbieten.
Der Rest sind völlig normale Tasker-Aktionen:
- Nun muss Tasker ein Bild laden – natürlich das eben aufgezeichnete. Also wählen wir diese Bilddatei
aktuelles-foto_gross.jpgin den Aktionseinstellungen aus. - Dieses Bild wird dann skaliert (kleiner gerechnet).
- Das nun kleinere Foto wird als neue Bilddatei (unter neuem Namen) abgespeichert.
Das Kleinerrechnen daher, weil wir das Foto ja später versenden möchten. Und hierfür wäre die Dateigröße der Originalaufnahme zu groß.
Sie können mit einem neuen Test-Profil (Auslöser: Uhrzeit) leicht testen, ob dieser Task korrekt abläuft, wenn das Smartphone gesperrt- bzw. der Bildschirm aus ist. Es sollten sich dann zwei neue Grafikdateien im Speicher des Smartphones befinden, wobei die eine eine von der Datei- und Bildgröße deutlich kleiner ist. Diese benötigen wir später zum Versenden.
Zuvor schauen wir uns noch die Konfiguration von Punkt 1 (Termux-Plugin-Aktion) genauer an:
Hier wählt man oben das Script aus. Wir hatten dieses ja vorher mittels Termux bzw. nano in einem ganz bestimmten Verzeichnis angelegt. Dieses Verzeichnis wird darunter in grauer Schrift zur Erinnerung noch einmal angezeigt. Wir tippen einfach in das Feld und geben den Anfangsbuchstaben des Script-Dateinamens ein: Sofort sollte das Plugin Vorschläge der hier hinterlegten Scripte machen, die mit diesem Buchstaben beginnen. In unserem Fall wählen wir das Script foto_machen.sh aus.
Für das Anfertigen eines Fotos muss (zumindest bei meinem Gerät) unten noch das Häkchen bei »Execute in a terminal session« gesetzt sein. Für andere Scripte (Hochladen; dazu später) ist dies nicht notwendig. Später – bei gesperrtem Bildschirm – wird das Terminal-Fenster jedoch nicht in Erscheinung treten und auch nicht geöffnet bleiben.
Das war es auch schon:
Wir können nun auch bei gesperrtem Gerät ein Foto mit Tasker aufnehmen.
… nämlich weil wir Termux als Hilfs-App nutzen. Derzeit befindet sich das Foto ja nur auf dem eigenen Gerät. Aber wir wollen es auch an einen entfernten Server über das Internet versenden. Hierzu gibt es mehrere Möglichkeiten:
Einfache Lösung: Foto auf Google Drive laden
Tasker selber kann ohne Plugin auf Google Drive schreiben. Das wäre eine sehr elegante Lösung. Aber wenn wir die ganzen Google-Dienste (die dazu notwendig sind) ohnehin auf dem Smartphone haben bzw. mit einem Google-Konto verbunden sind, können wir ja gleich das Google-eigene »Mein Gerät finden« nutzen. Aber damit kann man eben kein Foto aufnehmen.
Werbung
Die eigentliche Aktion, um beliebige Dateien auf Google Drive zu schieben, nennt sich bei Tasker GD Upload. Dort gibt man oben das hinterlegte (verbundene) Google-Konto an und darunter wählt man die Datei aus, die man hochladen möchte.
Wichtig: Tasker benötigt hierzu natürlich die Android-Berechtigung für den Zugriff auf den internen Speicher, falls nicht bereits gesetzt.
Die Berechtigung für den Zugriff auf Google hat es ja bereits.
Da ich Google nicht nutze bzw. selber keinen Google-Account auf meinem Smartphone eingerichtet habe, gehe ich nicht weiter auf den Upload via Google Drive ein. Ich möchte so etwas möglichst mit eigenen Mitteln erledigen und hier kommt eigener Webspace als Server in Frage:
Foto mit Termux via FTP auf eigenen Server laden
Vorab: Tasker besitzt leider kein eigenes FTP-Modul. Auch das Hochladen via WebDAV ist offenbar nicht ohne Plugin möglich. Vielleicht gibt es irgendwelche Plugin-Lösungen für Dropbox, OneDrive, MagentaCloud und wie sie alle heißen.
Aber wir nutzen ja jetzt ohnehin Termux und Termux hat das kleine Programm curl integriert. Mit diesem (bzw. mit einem weiteren Script) werden wir recht einfach durch eine Tasker-Aktion mittels FTP-Protokoll beliebige Dateien auf einen eigenen Server hochladen können.
➜ Außerdem kann auf diesem Server später eine kleine, feine Web-Anwendung eingerichtet werden (siehe unten), mittels welchem wir die hochgeladenen Fotos automatisch im Browser anzeigen lassen und die dazugehörigen Standorte auf einer Karte.
FTP-Versand mit Termux manuell testen
Wir haben ja (durch den Test-Task) ein verkleinertes Foto im Speicher des Smartphones liegen unter:
/storage/emulated/0/aktuelles-foto_klein.jpg
Wir haben auch die FTP-Zugangsdaten für unseren Server:
- Server-Adresse oder IP-Adresse
- Nutzername
- Passwort
Mit Termux bzw. curl können wir das Bild nun mit nur einem Befehl auf den Server laden:
curl -T "/storage/emulated/0/aktuelles-foto_klein.jpg" \ --user "FTP-Nutzername:FTP-Passwort" \ "ftp://Serveradresse/ggfPfad/test.jpg"
Sollte Termux keinen Zugriff auf den internen Speicher haben (obwohl ggf. in der Android-Rechteverwaltung genehmigt), kann man den Zugriff evtl. mit diesem Befehl in Termux erhalten: termux-storage-setup.
Serveradresse, ggf. Pfad (Unterordner auf Server), Nutzername und Passwort muss man hier natürlich entsprechend ändern. Das hat geklappt? Dann schauen wir am PC mit einem FTP-Programm auf dem Server nach, ob das Bild dort angekommen ist bzw. geben die genaue Adresse in die URL-Zeile eines Browser sein.
Upload-Script erstellen
Tasker kann diesen Befehl nun nicht direkt verwenden. Daher müssen wir ihn via Termux in ein kleines Script schreiben mit dem Namen foto_hochladen.sh.
Zunächst wechseln wir (wie oben bei dem anderen Script) wieder in das Zielverzeichnis:
cd ~/.termux/tasker
Jetzt erstellen wir das Script:
nano foto_hochladen.sh
Der Inhalt des Scripts schaut so aus:
#!/data/data/com.termux/files/usr/bin/sh
# Lokale Datei
LOCALFILE="/storage/emulated/0/aktuelles-foto_klein.jpg"
# FTP-Zugangsdaten
FTPHOST="meine-serveradresse.de"
FTPUSER="FTP-Nutzername"
FTPPASS="meinPasswort"
# FTP-Zielpfad
FTPPATH="/ggf.-unterpfad/"
# Datum für Dateinamen (YYYY-MM-DD_HH-MM)
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
# Neuer Name auf dem FTP-Server
REMOTEFILE="aktuelles-foto_$TIMESTAMP.jpg"
# Upload per curl
curl -T "$LOCALFILE" \
--user "$FTPUSER:$FTPPASS" \
"ftp://$FTPHOST$FTPPATH$REMOTEFILE"Oben trägt man die FTP-Serveradresse ein (ohne dem ftp:// davor, ohne Backslash), darunter die Zugangsdaten. Als Zielpfad definiert man den Unterordner auf dem Server. Wünscht man keinen, lautet die Angabe hier „/“ – also ein einziger Backslash.
Das Script erzeugt einen Zeitstempel: Es erzeugt damit auf dem Server für die Bilddatei einen Dateinamen wie aktuelles-foto_2025-11-30_16-42.jpg.
Die Bilder werden dadurch nicht überschrieben bzw. man kann sie sammeln. Durch die Zeitangabe im Dateinamen weiß man immer, wann sie erzeugt wurden.
Wenn das Script gespeichert ist (CTRL + S) und man nano wieder verlassen hat (CTRL + X), kann man es manuell mit Termux testen:
- Termux starten
- Ins Scriptverzeichnis wechseln:
cd ~/.termux/tasker - Script ausführen:
./foto_hochladen.shEnter
Wenn es hier keine Fehlermeldung gab, kann nun auch mit diesem Script eine Tasker-Aktion innerhalb eines Taskes angelegt werden: Plus-Button ganz unten rechts › Plugin › Termux:Tasker
➜ Im Konfigurationsfenster dieser Aktion muss dann – wie oben beim Aufnehmen eines Fotos – das richtige Script (foto_hochladen.sh) ausgewählt werden. Das Häckchen bei »Execute in a terminal session« muss hier (zumindest bei meinem Gerät) nicht gesetzt werden.
Jetzt haben wir zwei Scripte bzw. können damit zwei Tasker-Aktionen (via dem Termux:Tasker-Plugin) in einem Task anlegen: Foto machen & Foto hochladen. Fast fertig. Doch nun wollen wir auch noch GPX-Dateien auf den Server laden:
GPX-Dateien anlegen und auf Server laden
Was ist eine GPX-Datei? In unserem Fall ist es eine winzige (Text-) Datei mit einer bestimmten Struktur, in welcher der je aktuelle Standort in Form der eigenen Koordinaten eingetragen ist. Die Dateiendung lautet gpx.
Mit Tasker lässt sich diese Datei in Form einer Aktion sehr einfach anlegen:

Der Dateiname lautet aktuelle-position.gpx. Diese Datei wird in diesem Beispiel im Hauptspeicher angelegt (/storage/emulated/0/aktuelle-position.gpx). Sie sollte folgenden Text enthalten:
%gl_latitude und %gl_longitude sind Tasker-interne Variablen: Sie geben später automatisch den Breitengrad bzw. Längengrad aus.
Selbstverständlich muss man diese einzelne Aktion später innerhalb eines Tasks mit anderen kombinieren. Davor muss die Aktion ›Standort abrufen V2‹ stehen, damit zunächst die je aktuellen Werte für die beiden Kooridinaten-Variablen ermittelt werden können. Doch da Sie nun bereits wissen, wie man einen ganzen Task mit unterschiedlichen Aktionen aufbaut, erspare ich mir hier ein Beispiel. Am Ende zeige ich ohnehin meinen Gesamten Task für die Smartphone-Ortung.
Nach Ablauf dieser Aktion haben wir also immer eine aktuelle GPX-Datei mit unserem genauen Standort im Hauptspeicher des Smartphones.
Doch was damit tun? Wir laden sie natürlich auch auf den Server. Hierzu benötigen wir ein drittes Script. Wie man Scripte mit Termux anlegt, hatte ich bereits zwei Mal demonstriert, daher folgt hier nur der Inhalt des Scriptes track_hochladen.sh:
#!/data/data/com.termux/files/usr/bin/sh
# Lokale Datei
LOCALFILE="/storage/emulated/0/aktuelle-position.gpx"
# FTP-Zugangsdaten
FTPHOST="meine-serveradresse.de"
FTPUSER="FTP-Nutzername"
FTPPASS="meinPasswort"
# FTP-Zielpfad
FTPPATH="/ggf.-unterpfad/"
# Datum für Dateinamen (YYYY-MM-DD_HH-MM)
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
# Neuer Name auf dem FTP-Server
REMOTEFILE="aktuelle-position_$TIMESTAMP.gpx"
# Upload per curl
curl -T "$LOCALFILE" \
--user "$FTPUSER:$FTPPASS" \
"ftp://$FTPHOST$FTPPATH$REMOTEFILE"Das Script ist nahezu identisch wie das für das Hochladen des Fotos – nur die Dateinamen sind natürlich andere (gpx-Datei statt jpg-Datei). Auch dieses Script kann zuvor manuell via Termux ausgeführt- bzw. getestet werden. Die Datei /storage/emulated/0/aktuelle-position.gpx muss hierfür natürlich bereits auf dem Smartphone vorhanden sein. Auch hier wird an jede GPX-Datei eine Datums- und Zeitangabe angehangen, sodass man ältere auf dem Server nicht überschreibt.
Wenn es hier keine Fehlermeldung gab, kann nun auch mit diesem Script eine Tasker-Aktion innerhalb eines Taskes angelegt werden: Plus-Button ganz unten rechts › Plugin › Termux:Tasker
Fertig: Wir haben nun die drei nötigen Scripte:
- Foto machen (foto_machen.sh)
- Foto hochladen (foto_hochladen.sh)
- GPX-Datei hochladen (track_hochladen.sh)
Für das Anfertigen des GPX-Tracks benötigen wir kein Script – Dies kann Tasker ja sehr gut alleine direkt innerhalb eines Tasks.
Schön und gut: Aber was soll ich denn nun mit den vielen Fotos und GPX-Dateien auf meinem Server anfangen?
Gute Frage: Genau hierfür nutze ich eine kleine Webanwendung auf meinem Webspace:
Fotos und Geo-Positionen bequem im Browser ansehen
Oben hatte ich ja bereits einen Screenshot von meiner kleinen Web-Anwendung gezeigt. Hier ist er noch einmal:

Links sind die GPX-Tracks gelistet, die mein Smartphone automatisch auf diesen Server geladen hatte, als es fehlerhafte Entsperrversuche gab oder als ich je eine Trigger-SMS an mein Handy gesendet hatte. Dank den Dateinamen ist je auch der genaue Zeitpunkt ersichtlich. Darunter werden die jeweiligen Fotos angezeigt, die ja dabei ebenso gemacht- bzw. hochgeladen wurden.
Auf der rechten Seite befindet sich eine Karte: Klickt man links einen der Einträge an, erscheint auf der Karte der Marker an der jeweiligen Position. Es lassen sich auch mehrere Einträge zugleich aktivieren. Dann werden entsprechend mehrere Markierungen gesetzt. Klickt man ein Foto an, wird es in großer Ansicht in einem neuen Tab geöffnet. Es können zudem für jeden Marker die genauen Standortdaten (Koordinaten) angezeigt werden und ein Positions-Link zur OpenStreetMap (praktisch die Alternative zur Google-Maps-URL).
Funktionsweise: Das Script / diese Web-Anwendung liest einfach zwei Ordner auf dem Server aus (/tracks/ & /pictures/) und listet je deren Inhalte. In genau diese Ordner müssen die GPX-Dateien bzw. die Bilder geladen werden. Hierfür müssen unsere beiden Upload-sh-Scripte natürlich individuell angepasst werden (der Pfad).
Diese Webanwendung selbst muss natürlich auch erst einmal vom PC aus per FTP-Programm auf den Server geladen- und eingerichtet werden. Sie enthält auch einen Admin-Bereich, wo man die Einträge wieder löschen kann.
Nicht schlecht, oder? Damit ist man völlig unabhängig von Diensten bzw. Apps, die Ähnliches bieten und es ist alles kostenlos.
Aber eine Sache fehlt noch in meiner Anleitung – der gesamte Task:
Kompletter Task: Ortung SMS Foto + GPX anlegen Upload
Mein gesamter Task besteht zunächst aus dem Teil, den ich oben bei der reinen Rückmeldung via SMS bereits gezeigt hatte. Im Anschluss erfolgen dann noch die Script-Aufrufe via dem Termux:Tasker-Plugin:

Der Task setzt erst einmal die Cooldown-Variable auf ›ja‹, ermittelt den Standort und versendet die SMS – wie ganz am Anfang besprochen. Danach wird eine GPX-Datei lokal angelegt bzw. überschrieben und diese wird auf den eigenen Webspace hochgeladen. Nun wird ein Foto gemacht, eine kleine Version davon angelegt und diese Datei wird ebenfalls auf den Server geladen. Am Schluss wird eine Minute gewartet und dann erst die Variable wieder auf ›nein‹ gesetzt. Nun erst könnte der Task erneut ablaufen. Man könnte ganz am Anfang die Android-Standortdienste überhaupt erst starten (und am Ende wieder deaktivieren). Aber dies würde root oder einen ADB-Zugang (Manipulation via Computer) erfordern. Daher lasse ich dies hier weg.
Die beiden Auslöser / Profile (Trigger-SMS & fehlerhafter Entsperrversuch) hatte ich auch schon oben besprochen.
Beachte: Es wäre wichtig, bei Aktionen, die abbrechen könnten (weil z. B. derzeit kein Mobilfunk-Empfang besteht), in deren Aktionseinstellungen das Häkchen zu setzen bei Task Weiter Ausführen Nach Fehler. Denn der Task sollte unbedingt bis zum Ende durchlaufen können: Es muss am Ende ja die Variable wieder auf ›nein‹ gesetzt werden können, damit ein erneuter Versuch möglich ist.
Kurzum
Mit Tasker kann man eine ganze Menge machen. Gerade dieses Beispiel mit der Ortung des Smartphones und dem anschließenden Versenden der Daten zeigt dies gut. Außerdem ist man vom Internet unabhängig – zumindest was die SMS-Übertragung mit dem Standort anbelangt. Das funktioniert auch bei 2G-Empfang. Diese Techniken ließen sich auch gut für eine simple Kameraüberwachung nutzen oder für einen privaten Standort-Tracker. Hier spielt dann natürlich auch der Datenschutz eine Rolle. Man könnte zusätzlich noch mit einer „Trigger-SMS“ ggf. das Telefon zurück setzen, zumindest wichtige Ordner darauf löschen oder gar eine Selbstzerstörungs-Aktion ausführen. Aber so etwas benötige ich nicht: Android selbst verschlüsselt den Daten-Bereich ausreichend.
Ich nutze meinen Smartphone-Ortungs-Task erfolgreich auf Android 16 (Custom Rom ›crDroid‹ x) mit den MicroG-Ortungsdiensten (und natürlich GPS). Damit funktioniert alles sehr gut. Allerdings habe ich auch root. D. h. es könnte sein, dass es an irgendeiner Stelle bei Ihnen haken könnte, wo bei mir alles sauber durchlief. Doch eigentlich sollte root bei diesen Abläufen nicht erforderlich sein.
x Nebenbei: Die Custom Rom crDroid besitzt die äußerst sinnvolle Funktion, dass im gesperrten Zustand das Ausschalt-Menü des Smartphones wie auch die Schnelleinstellungs-Kacheln nicht verfügbar sind. Somit funktioniert meine Tasker-Lösung hier sehr solide: Das Smartphone kann von einem Laien gar nicht ausgeschaltet bzw. nicht manipuliert werden.






