[Modul] OwnTracks - Anwesenheitserkennung und Live-Tracking

sehr cool gemacht. Gefällt mir außerordentlich. Trackst Du nur Dich selbst oder mehrere Personen? Ich denke da an eine Darstellung „Position der Familienmitglieder“ (müssen natürlich alle zustimmen :wink:) und dann natürlich „Wo überall war ich eigentlich heute/gestern/die Woche?“.

Ich tracke mich und meine Frau. Sie hat mit der verehelichung die stillschweigende Zustimmung für alles gegeben :smiley:
Da jede „Person“ ein eigene Dateninstanz hat, hab ich das im Webfront auch so aufgeteilt. Also zwei Menüeinträge. Die notwendigen Variablen für meine Darstellung sind für jede Person extra angelegt.
Man könnte aber eventuell mit der GPX Datei und Wegpunkten (oder was anderes) die Darstellung auf einer Karte durchaus realsieren. Dass dann mehrer Marker mit Namen angezeigt werden.

image
Die Variablen mit „eigen“ sind von mir.
Strasse, Ort, Land, Uhrzeit verwende ich für die Anzeige im Webfront
History Datum und History für die Anzeige des Verlaufs als HTML Tabelle
Karte Verlauf enthält den HTML Code für die Kartenanzeige des Verlaufs
Karte aktuelle Position den HTML Code für die aktuelle Position
Kartenanzeige ist die Auswahlvariable wo man zwischen aktueller Position und Verlauf wechseln kann
Karte Anzeigen enthält den HTML Code entsprechend der Auswahl. Diese wird im Webfront angezeigt

Sollte jemand oder du @Silberstreifen die HTML Vorlage für den Verlauf verwenden wollen, ist folgende Änderung in der HMTL notwendig, damit das auch mit der ipmagic URL funktioniert
alt

<script src="https://www.openlayers.org/api/OpenLayers.js"></script>

korrigiert

<script src="https://openlayers.org/api/2.13.1/OpenLayers.js"></script>

Wird die originale URL verwendet, meckert Chrome/Edge und wahrscheinlich alle anderen auch, dass etwas unsicheres geladen werden soll und das wird blockiert. Es wird nichts angezeigt. Leider kann es mit dieser Methode passieren, dass die js-Datei irgendwann nicht mehr da ist, dann muss man die URL korrigieren.

die Karte wird kommen. Ich hänge noch ein bisschen am Autozoom. Da weiß ich noch nicht, wie und ob das umsetzbar ist. Mehrere Marker habe ich schon auf der Karte.

Die Karte kann natürlich auch zur Anzeige der Aktuellen Position verwendet werden. Ich meine die, die in dem verlinkten Artikel verwendet wird. Man kann sogar ein eigenes Bild für den Marker verwenden.

Das hört sich sehr cool an :slight_smile:

Den Zoomfaktor hab ich variabel gemacht. Den könnte ich dynamisch ändern. Bewährt hat sich bei mir der Wert 18.
Wo ich meine Probleme hatte war mit der Zentrierung. Dafür gibt es eine Berechnung, die ich gefunden habe.

    $zoom=getvalue(28746); /*Variable für den Zoom 18*/
    $tilesize=getvalue(14138); /*Variable für Tilesize 128*/
    $width=getvalue(41449);/*Variable für die Breite 900*/
    $height=getvalue(25513);/*Variable für die Höhe 600*/
    
    $xtile = floor((($position->lon + 180) / 360) * pow(2, $zoom));
    $ytile = floor((1 - log(tan(deg2rad($position->lat)) + 1 / cos(deg2rad($position->lat))) / pi()) /2 * pow(2, $zoom));

    $xtileleftupper=($xtile*$tilesize - $width/2) / $tilesize;
    $ytileleftupper=($ytile*$tilesize - $height/2) / $tilesize;

    $xtilerightlower=($xtile*$tilesize + $width/2) / $tilesize;
    $ytilerightlower=($ytile*$tilesize + $height/2) / $tilesize;

    $n = pow(2, $zoom);
    $lon_deg_leftupper = $xtileleftupper / $n * 360.0 - 180.0;
    $lat_deg_leftupper = rad2deg(atan(sinh(pi() * (1 - 2 * $ytileleftupper / $n))));

    $lon_deg_rightlower = $xtilerightlower / $n * 360.0 - 180.0;
    $lat_deg_rightlower = rad2deg(atan(sinh(pi() * (1 - 2 * $ytilerightlower / $n))));

    $html="<center><iframe width=\"".$width."\" height=\"".$height."\" 
    frameborder=\"0\" 
    scrolling=\"no\" 
    marginheight=\"0\" 
    marginwidth=\"0\" 
    src=\"https://www.openstreetmap.org/export/embed.html?bbox=".number_format($lon_deg_leftupper,12,".","")."%2C".number_format($lat_deg_leftupper,12,".","")."%2C".number_format($lon_deg_rightlower,12,".","")."%2C".number_format($lat_deg_rightlower,12,".","")."&amp;layer=mapnik&amp;marker=".number_format($position->lat,12,".","")."%2C".number_format($position->lon,12,".","")."\" 
    style=\"border: 0px solid black\">
    </iframe></center><center><small><a target=\"_blank\" href=\"https://www.openstreetmap.org/?mlat=".number_format($position->lat,12,".","")."&amp;mlon=".number_format($position->lon,12,".","")."#map=16/".number_format($position->lat,12,".","")."/".number_format($position->lon,12,".","")."\">Größere Karte anzeigen</a></small</center>";
    SetValue($KarteID/*ID der Positionskartenhtmlvariable*/,$html);

So wird bei mir die sog. BBOX berechnet. Vielleicht kannst du damit ja was anfangen.

Hallo,
irgendwas passt noch nicht bei mir.
In der APP owntrack wird eine Meldung angezeigt (HTTP Status Code 401 …)
-das Feld "Secret encryption key ist leer
-in IPS habe ich eine OwnTrack Data Instanz mit dem Topic "owntracks/meine UserID/meine DeviceID und Zeige Positionsdaten = an

  • bei i/O Instanzen habe ich einen OwnTracks Hook mit BenutzerID und Passwort
  • und eine OwnTracksHook (#ID der Data Instanz) mit BenutzerID und Passwort

Regionen Senden bewirkt nicht, dass sich Variablen anlegen.
Radius verändern hat kein Ergebnis gebracht.
Spazieren gegangen bin ich nicht.
Hat jemand einen Tipp?

wenn die 401 kommt, dann ist dein Benutzername und/oder Passwort falsch. Bitte nochmal kontrollieren, ob alles richtig und passend eingeben wurde. Du kannst die Adresse auch mit einem normalen Browser testen. Dann siehst Du, ob es mit deinem Benutzernamen und Passwort funktioniert.

Nutzt du Android oder IOS? Wenn du Android nutzt, nimmst du die Owntracks- oder die Nexttracks-App?

Hallo Silberstreifen,
bin mit IOS unterwegs und hatte tatsächlich bei Usernamen/ Passwort einen Fehler.
Es bildet sich leider weiterhin keine Variable.
Den Debug Dump der Einstellung und der Region habe ich Dir mal per PN zugeschickt. Ich glaube da sind bei der Topic Definition zusätzliche backslashs drin.
IPS und die Owntracks App wurden neugestartet.

danke für den Dump. Ich habe die Daten ausgewertet und sie sind einwandfrei. Hast du ggf. noch keine
OwntracksData-Instanz erzeugt? Die Variablen werden dort angelegt. Die OwntracksData-Instanz kann an beliebiger Stelle im Objektbaum angelegt werden und wird automatisch mit der Hook-Instanz verbunden. Wenn du mehr als eine OwntracksHook-Instanz hast, bitte die weiteren Instanzen löschen. Aktuell wird nur eine Hook-Instanz unterstützt.

Aaaah, ich hatte 2 Hookinstanzen und die Data war mit der falschen Instanz verbunden. Nach dem Löschen habe ich meine Region als Boolvariable automatisch angelegt bekommen.
Wie erzeugen sich die anderen Variablen, manuell - oder muss ich erstmal spazieren gehen, damit sich mein Aufenthaltsort verändert?

sehr schön. Die anderen Variablen werden angelegt, sobald deine App die aktuellen Positionsdaten sendet. Das kannst du in der App auch manuell auslösen, indem du in der App auf die Karte gehst und dort rechts oben auf den Pfeil nach oben drückst.

Passt alles!
Vielen Dank für das Modul und die Hilfe.

V1.03 ist jetzt verfügbar

Neu: Map zur Anezeige der Gerätepositionen
Neu: Einloggen per Secret-Code
Neu: Sperren des Zugangs nach 3 Fehlversuchen in 24h auf einer IP-Adresse und 10 Fehlversuchen in 24h insgesamt
Neu: OTR_GetSecret(12345) zum Anzeigen des Secret-Codes
Neu: mehrere Hooks mit unterschiedlichem Zugang möglich

Nach dem Update bitte beim OwnTracks-Hook den Hooknamen setzen (owntracks).
Ich bin gespannt auf euer Feadback
Grüße
Jürgen

Gespannt ich bin, wie die Karte aussieht.
Die Karte ist eine eigene Instanz :wink:
Bei der Karte ist der Name des Hooks nicht „owntracks“, sonder die URl „/hook/owntracks“. Zumindest lässt er mich das abspeichern. Ist etwas irreführend, weil im OwnTracks-Hook das Feld auch „Name des Hooks“ heißt aber hier nur „owntracks“ einzutragen ist.

hast Recht. Das passe ich noch an. Du solltest aber für die Karte besser /hook/map nehmen, da /hook/owntracks ja schon beim Owntrack-Hook verwendet wird. Das musste Du nach dem Update aber erstmal wieder eintragen, wie oben beschrieben.

Gut, das funktioniert nun. Die Karte gefällt mir so gut, dass ich meine gleich mal rausgeschmissen hab.
Nur um es zu präzisieren:
Bei der Karteninstanz ist /hook/map einzutragen. Beim OwnTracks-Hook (in den I/O Instanzen) lediglich owntracks.

Edit
Doch nicht. in der Map nur „map“. Ohne /hook/

1 „Gefällt mir“

Schönes Modul, danke! Noch eine Frage: Wie funktioniert der Secret-Code? Konnte in der Doku nichts finden…

vg

Doku wird ergänzt, habe ich gestern Abend nicht mehr geschafft. Der Secret-Code funktioniert ganz einfach.

https://meineAdresse.net/hook/Hookname?Secret-Code

Grüße
Jürgen

V1.04 ist jetzt online

Diese Version bietet keine relevanten Neuerungen. Es wurden lediglich Änderungen an der Doku, bzw. kleinere Bereinigungen des Quellcodes vorgenommen. Diese Version wird kurzfristig als erste Stable-Version erscheinen.

Hab gestern noch das Update gemacht, ist aber nach wie vor Beta. Zumindest wird es im Store so angezeigt. Ein Wechseln ist nicht möglich.