Montag, 20. Juni 2011

[Profil] Handy Locator v2 mit aktuellem GPS Link per Mail

Vor einer Weile habe ich schon das Profil für einen Handy Locator vorgestellt. Dieser hat jedoch die Position nur über das Mobilfunknetz bestimmt. Der Vorteil an der Methode ist, das die Positionsbestimmung sehr schnell und auch in Gebäuden funktioniert. Leider ist die Genauigkeit sehr begrenzt. Bei mir lag die Genauigkeit immer bei ca. 600 bis 900 Metern. Dies ist nicht wirklich hilfreich um ein verlorenes Handy wiederzufinden. Deshalb soll nun zuerst die GPS Position "Get Location" bestimmt werden, insofern innerhalb von 2 Minuten eine Position gefunden wird, soll diese per Email versendet werden. Ansonsten wird wieder die ungenauere Position über das Mobilfunknetz verschickt.


Für das automatische versenden der Email kommt wieder das Python Skript zum Einsatz. Wer sich mit Tasker noch nicht so gut auskennt, bzw. das sendemail.py Skript noch nicht benutzt hat, sollte sich erst einmal mein altes Handy Locator Profil anschauen, dort habe ich alle Grundlagen zum Einsatz des Skriptes und wie man auf eingehende Emails reagiert erklärt.


Kommen wir nun zum Profil. Diesmal werden 2 etwas unterschiedliche Konfigurationsdateien für das Email Skript benötigt. Eine falls ein GPS-Fix erfolgt ist und eine für die Positionsbestimmung über Mobilfunknetz. Demzufolge finden sich jetzt 2 "Write File" Aktionen in dem Task. Hier nun ersteinmal das komplette Profil:
  • Profil: "Handy Locator v2"
    • Trigger:
      1. Event -> 3rd Party -> K9 Email Received
        • Subject: Wo bist du?
    • Tasks:
      1. Misc -> GPS
        • Set: On 
      2. Misc -> Get Location
        • Source: GPS
        • Timeout: 120
      3. Variable -> Variable Set
        • Name: %AGEGPS
        • To: %TIMES - %LOCTMS
      4. Variable -> Variable Set
        • Name: %AGENET
        • To: %TIMES - %LOCNTMS
      5. File -> Write File
        • File: Tasker/mail.conf
        • Text: "Position per Net"
        • If %AGEGPS > 10
      6. File -> Write File
        • File: Tasker/mail.conf
        • Text: "Position per GPS"
        • If %AGEGPS < 11
      7. Misc -> Run Script
        • Name: sendemail.py 
Der Aufbau des Profiles ist recht ähnlich zum alten Handy Locator. Nun wird aber zu Anfang die Position über "Get Location" bestimmt, dazu wird vorher noch das GPS aktiviert, damit die Positionsbestimmung auch funktioniert sollte das GPS deaktiviert worden sein. Der Timeout steht auf 120 Sekunden. Wenn die Position innerhalb dieser Zeit gefunden wird, kann sie über die Variable %LOC abgerufen werden. Um nun herauszufinden ob die Positionsbestimmung funktioniert hat, errechnen wir das Alter des letzten GPS-Fix. Dazu benötigen wir die Variable %LOCTMS, in ihr steht der Zeitpunkt des letzten GPS-Fix, ziehen wir diesen von der aktuellen Uhrzeit ( %TIMES) ab und legen es in der Variablen %AGEGPS ab. Liegt der letzte Fix nur ein paar Sekunden zurück (typischerweise 0 bis 2 Sekunden), wissen wir das die Positionsbestimmung funktioniert hat und es kann die Datei mit den GPS Koordinaten geschrieben werden. Ansonsten wird die Datei mit den Net Koordinaten erstellt.

Die Dateien sehen nun folgendermaßen aus:

Datei 1: "Position per GPS"
mailto: %EFROM
subject: Hier bin ich
body:
Koordinaten %LOC
Genauigkeit %LOCACC Meter
Vor %AGEGPS Sekunden per GPS
Geschwindigkeit %LOCSPD kmph
http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=%LOC

Datei 2: "Position per Net"
mailto: %EFROM
subject: Hier bin ich
body:
Koordinaten %LOCN
Genauigkeit %LOCNACC Meter
Vor %AGENET Sekunden per Mobilfunknetz
http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=%LOCN

Diese Zeilen müssen nun anstelle von "Position per GPS" bzw. "Position per Net" in das Text-Feld der jeweiligen "Write File" Aktion eingetragen werden. Nach "body:" sollte außer im Maps-Link kein ":" genutzt werden. Da das Skript diese nutzt um den Inhalt der Datei aufzuteilen, wird dann nicht mehr alles richtig übertragen.

Kommentare:

  1. Hallo Caveman,

    zunächst einmal Vielen Dank für Deine Seite. So macht Internet Spaß.

    Nun aber auch eine kleine Frage. Muss die Variable %AGE in Datei 2: Position per net nicht %AGENET heißen? Zumindest schreibt Tasker mir ansonsten nur ein %AGE in die mail.conf ?!?! Da ich aber noch Anfänger bin, bitte nicht hauen, falls ich da völlig falsch liege.
    Schöne Grüße und mach weiter so!!!!
    Thorsten

    AntwortenLöschen
  2. Hi Thorsten,

    danke für den Hinweis, hast natürlich recht!
    Hab es aktualisiert.

    grüße

    AntwortenLöschen
  3. Hallo!
    Auch von mir erstmal ein großes Dankeschön für die vielen tollen Profile hier!
    Aber an diesem scheitere ich leider:
    Ich bekomme zwar eine Email gesendet aber:
    Nur der Titel stimmt (also: "Hier bin ich!") aber der Inhalt fehlt komplett! Die Datei auf der SD-Karte (mail.conf) stimmt aber merkwürdigerweise... Woran könnte das wohl liegen? Oo
    Danke schon jetzt!

    AntwortenLöschen
  4. UPDATE:
    Oben genanntes Problem konnte ich mittlerweile lösen, nur taucht jetzt ein neues auf:
    Das automatische Senden bricht mit einer Fehlermeldung des Skripts ab... ("Sl4a funktioniert nicht mehr ...")
    Wenn ich mir die generierte Datei ansehe habe ich außerdem nur eine Genauigkeit von über 3km!
    Wo könnte denn nun hier der Fehler liegen? Aber allein die Tatsache, dass es (noch im eingeschränkten Maße) tatsächlich funktioniert - phänomenal!

    AntwortenLöschen
  5. ZU dem Fehler in deinem ersten Post, wo nicht die komplette Nachricht versendet wird:
    Mir ist auch schon aufgefallen, dass das Skript was gegen Doppelpunkte oder ähnliches hat, scheinbar schneidet es NAchrichten nach Doppelpunkten ab, manchmal ging es aber auch, konnte s noch nicht richtig nachvollziehen woran es nun liegt. Deswegen solche Zeichen am besten meiden.

    Zum Abbruch von SL4A, ich würde es komplett deinstallieren und neu installieren, da dies weder am Skript noch am Tasker liegt, SL4A hat manchmal nen Treffer weg, musste meins auch schon mal neu installieren...

    3km mit GPS? ODer hat er da kein Signal gefunden und es über die Funkmasten gemacht?
    3 km für Funkmasten ist ok, für GPS ist es wirklich zu viel...

    AntwortenLöschen
  6. Danke, die Neuinstallation von SL4A hat funktioniert!
    Die 3 km waren wohl via Funkmasten, von daher wohl in Ordnung...
    Ich hätte da noch eine Anregung:
    Mit Tasker ist es doch auch möglich ein Foto aufzunehmen; wenn man den Sendemail-Script so erweitern würde, dass auch ein Anhang (oder Zwei -> Vorder- und Rückseitenkamera)mitgesendet werden kann, könnte man das ganze zum Beispiel auch zum Suchen des Handys in der Wohnung verwenden!
    Leider ist mein Python dafür aber viel zu schlecht... Eventuell ein Projekt für dich?

    Ansonsten kann ich mich nur nochmal wiederholen: Super Blog hier!

    AntwortenLöschen
  7. Eine coole Idee :) Auch nützlich wenns geklaut wird, evtl kann man ein Portrait vom Dieb knipsen :D

    Ob das geht weiß ich nicht, theoretisch müsste es. Mal schaun ob die "smtplib" welche hier zum versenden der Mails genutzt wird das unterstützt...

    AntwortenLöschen
    Antworten
    1. Vielleicht kann man hier das gemachte Bild per script einfach über ein Clouddienst sich zusenden wie Dropbox oder ähnliches.

      Löschen
  8. So, jetzt geb' ich auch mal einen namen an (Ich bin Anonym von oben... ;) )
    Eine weitere Möglichkeit dieses Profil weiterzuspinnen:
    Um es als Diebstahlschutz zu nutzen empfiehlt sich das Tasker Plugin "Secure Settings". Hier kann man dann zum Profil einen Task zum Sperren des Handys hinzufügen: -Set Password
    - Lock Device
    -Clear Password (mit Option "Enter password once before unlocking")
    So wird das Handy für alle ohne Passwort unbrauchbar und wenn man es wieder bekommt ist die Passworteingabe nach einmaliger Eingabe deaktiviert.
    Hast du bezüglich der Foto-Idee schon etwas herrausbekommen?

    AntwortenLöschen
  9. sehr coole ideen.

    Ich hab mal ein bisschen gegoogled was das mail verschicken angeht.

    Scheinbar können nurt Texte über diesen weg an den Mailserver übergeben werden. Aber möglich ist es sicherlich, da ja auch Programm wie Outlook irgendwie ihre Bilder verschicken müssen nur würde es recht aufwendig sein eine solche Bibliothek zu schreiben. Da man sich ja erst einmal mit dem verwendeten Standard in dem Emails mit Inhalten wie Bilderne tc. verfasst sind auseinandersetzen müsste.

    AntwortenLöschen
  10. HAllo,

    kann ich einen Ausgangstask verzögern?
    z.b. nach schließen eines programmes das Internet / 3g nach 10 sekunden später ausschalten?

    thx!

    AntwortenLöschen
  11. klar mit der Aktion "Wait" kannst du einfach eine angegebene Zeit warten...
    Füge die Aktion einfach an die erste stelle deines Exit-Tasks.

    AntwortenLöschen
  12. cool! danke!
    sorry, ich hab tasker noch nicht so lange, ich habe jetzt den ausganstask (rot) "Mobile Daten" = aus ! wo trag ich dann dieses "wati" ein?

    danke schon mal vorher!!!

    AntwortenLöschen
  13. aah . ich habs gefunden! ein Task!
    sehr sehr cooles Ding!! THx an alle :)

    AntwortenLöschen
  14. Da ich ja scheinbar nicht der einzige bin, der bei der Benachrichtigung per mail nur den Betreff sieht, aber der gesamte eigentliche Text in der Mail fehlt:
    Bei mir hat es geholfen, nach "body:" nicht nur eine Zeile frei zu lassen, bevor der eigentliche Text kommt, sondern 2 Zeilen.

    Jetzt funktioniert es auch bei mir.

    Danke für die tollen Beispiele hier auf der Seite!!!

    AntwortenLöschen
  15. Hey,

    ich bin auf diese geniale Seite gestoßen und absolut begeistert.
    Es ist schon spät, aber die Idee mit dem übermitteln eines Google-Links der den Standort beinhaltet ist echt genial.
    Ich habe das gerade mal mit GPS-Koordinaten über %LOC ermittelt getestet. Leider funktioniert der so zusammengefügte Link nicht. Was könnte ich falsch machen? Z.B. ist mein zusammengesetzter Link: http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=87985111307353,8.650743998587132

    AntwortenLöschen
    Antworten
    1. Die Koordinaten sehen mir nicht ganz gültig aus. Bei der ersten fehlt sicherlich ein Punkt nach 8 oder 87. Warum du allerdings ungültige Koordinaten in %LOC hast weiß ich nicht, hatte der auch einen gütligen GPS Fix?

      Löschen
  16. Servus,

    der letzte Kommentar hier ist zwar schon etwas alt aber ich wollt mal mein Glück versuchen da ich einfach nicht weiter komme.

    Bin vor 3 Tagen auf die tasker-App gestoßen also noch ganz neu hier.
    Jetzt wollte ich ein Profil erstellen indem in meine Position bestimme.

    Also:
    Context -> Loctaion (Net oder GPS)

    Leider kann ich machen was ich will, ich bekomme meine Position nicht bestimmt. Dann habe ich es über GetPosition probiert und hatte selbes ergebnis. Stundenlanges googeln hat auch nichts gebracht da alle (wie hier auch) andere Probleme haben und die Position immer problemlos bestimmen können.
    GPS ist angeschaltet und unter Android sind auch alle hacken zweck Standortdienste gesetzt

    Würd mich echt freuen wenn mir einer helfen kann.

    Noch ein paar Daten:
    Handy: Samsung Galaxy S3
    Android-Version: 4.1.1
    ROM: TouchWiz (Samsung)


    AntwortenLöschen
  17. Hallo,

    ich habe das Tutorial Schritt für Schritt befolgt (erstmal großen Respekt für die gesamte Seite - die ist großartig)

    Nur leider sieht die Mail, die ich bekomme so aus:

    Koordinaten %LOCN
    Genauigkeit %LOCNACC Meter
    Vor 1363454396 Sekunden per Mobilfunknetz
    http://maps.google.com/maps?f=q&source=s_q&hl=de&geocode=&q=%LOCN


    Ich komme leider nicht darauf, was bei mir falsch sein könnte ... und ich bezweifle, dass die Messung vor über 43 Jahren (1363454396 Sekunden) stattfand ;)

    Ich hoffe Ihr könnt mir weiterhelfen.
    Vielen Dank schonmal^^

    AntwortenLöschen