GPS Position von iOS Geräte im Webfront anzeigen.

Hallo zusammen,

anbei eine kleine Anleitung wie man die GPS-Positionsdaten von iOS Geräten im Webfront darstellen kann. Die Daten werden in eine mySQL Datenbank geschrieben und aus dieser wieder gelesen.
Die Tabellenstruktur habe ich als Bild angefügt. Möchte jemand die aktuellen Daten in eine Variable schreiben, müssen die Scripte dementsprechend angepasst werden.

  1. Installieren der APP uTrackMe Beacon über iTunes.
  2. Den Inahlt der utrackme.zip Datei nach /webfront/user/ entpacken.
  3. In der receiveposition.php die Login Daten für Euren SQL Server anpassen.
  4. In IPS ein neues Dummy Module mit dem Namen Standortbestimmung anlegen. Darunter eine String Variable mit dem Namen Karte (Profil ~HTML) anlegen sowie eine Integer Variable mit dem Namen Geräte (Profil: Eigenes Profil erstellen (siehe Bild profil.png)).
  5. Nun noch ein Script mit dem Namen Standort anzeigen erstellen und dieses verstecken. Danach folgenden Inahlt einfügen und wieder die Login Daten zu Eurem SQL Server anpassen.

<?

// Hilfs-Integervariable mit Profil anlegen
if($IPS_SENDER == "WebFront")
{
   SetValue($IPS_VARIABLE, $IPS_VALUE);
   $name = GetValueFormatted(19903 /*[WebFrontEnd\Information\Standort\Standortbestimmung\Geräte]*/);
}
if(isset($IPS_VALUE)) {
 // NIX
} else {
	if($IPS_SENDER == "TimerEvent") {
	   $name = GetValueFormatted(19903 /*[WebFrontEnd\Information\Standort\Standortbestimmung\Geräte]*/);
	   }
	else {
 	SetValueString(25536 /*[WebFrontEnd\Information\Standort\Standortbestimmung\Karte]*/, "<center>Bitte Gerät auswählen!</center>");
 	return;
 	}
}

// SQL Datenbank Zugriffsdaten
$MySQLHost="10.0.0.1";
$username="user";
$password="password";

// Connect zur Datenbank
$link = mysql_connect($MySQLHost, $username, $password) or die("Keine Verbindung möglich!");

mysql_select_db("ipsdata") or die("Auswahl der Datenbank fehlgeschlagen");

$select = "SELECT devicename,date,time,latitude,longitude FROM location where (devicename = '".$name."') ORDER BY id DESC LIMIT 1";
$query = mysql_query($select);
$num_rows = mysql_num_rows($query);
$row = mysql_fetch_array($query);

// Connect zur Datenbank trennen
mysql_close($link);

if ($num_rows == 0) {
 	SetValueString(25536 /*[WebFrontEnd\Information\Standort\Standortbestimmung\Karte]*/, "<center>Keine Daten vorhanden!</center>");
 	return;
}

SetValueString(25536 /*[WebFrontEnd\Information\Standort\Standortbestimmung\Karte]*/, "<iframe src=\"user/utrackme/map.php?lat=".$row['latitude']."&lng=".$row['longitude']."&devicename=".$row['devicename']."\" border=\"0\" frameborder=\"0\" style=\"top:0pt; bottom:0pt; left:0pt; right:0pt; width:100%; height:400px;\"/></iframe>");

?>

  1. Dieses Script noch als Eigene Aktion der Variable Geräte zuordnen und ein Ereigniss erstellen, welches das Script alle 10 Minuten aufruft.

Bitte beachten, das Ihr in allen Scripten noch die Variablen durch Eure eigenen ersetzen müsst.

  1. Jetzt noch an Eurem iOS Gerät unter Einstellungen -> utmBeacon -> einen „Device Name“ für Eurer Gerät vergeben. Bitte hierbei den selben verwenden, welchen Ihr unter Punkt 4 genommen habt.
    Danach unter „uTrackMe Publish Server“ die Daten zu Eurem Webfront eingeben.
    Unter URL gebt Ihr ein: http://DNSNAME:PORT/user/utrackme/receiveposition.php

  2. Jetzt könnt Ihr die APP starten. Die weiteren Einstellungen der APP werden auf der Homepage des Herstellers erklärt.

Gruss
Michael

sql.png

profil.png

utrackme.zip (1.43 KB)

Als erstes mal das wichtigste:

:slight_smile: RESPEKT :slight_smile:

Unglaublich was ihr hier immer umsetzt. Unser eins scheitert leider schon
beim nachbauen. Ich habe es wie du beschrieben hast eingerichtet.
Wenn ich das Webfront öffne sieht es bei mir wie folgt aus:

Warum kann ich kein Gerät auswählen?

Gruß Tim

Hallo,

hast du der Variable „Geräte“ ein eigenes Variablenprofil zugeteilt, welches du vorher erstellt hast? (Siehe Punkt 5)

Gruss
Michael

Hi Michael,
ja hab ich gemacht:

Kann es sein das die PHP-Version von dem derzeitigen IPS-Webserver keine Mysql extension hat?

Mit phpmyadmin bekomme ich jedenfalls folgende Meldung:

Cannot load mysql extension. Please check your PHP configuration.

P.S. Ebenfalls dickes Lob von mir für dieses „Projekt/Idee/Umsetzung“

[b]UPDATE:

Fatal error: Call to undefined function mysql_connect() in C:\IP-Symcon\webfront\user\utrackme\receiveposition.php on line 9[/b]

Update2

http://www.ip-symcon.de/service/dokumentation/komponenten/dienst/php/

Einfach von dort das Paket herunterladen und die php_mysql.dll nach $ip-symcon/ext/ kopieren und den Dienst neustarten.

Update3
Es stimmt etwas mit deinem Script nicht. Der Iphone-Client meldet Fehler. Nehme ich das PHP Beispielskript vom Hersteller geht alles. Wäre klasse wenn du nochmal schauen könntest.

Hallo

Wo muß Ich die Konfiguration anpassen für den SQL Server ???

SQL Datenbank Zugriffsdaten ??

Hallo,

die SQL Zugriffsdaten müssen in der receiveposition.php


// SQL Datenbank Zugriffsdaten
$MySQLHost="10.0.0.1";
$username="user";
$password="password";
// ---------------------------

und in dem Script aus Punkt 5


// SQL Datenbank Zugriffsdaten
$MySQLHost="10.0.0.1";
$username="user";
$password="password";

angepasst werden.

Gruss
Michael

Hallo

Ich habe wenig Erfahrung mit SQL wo ist der Benutzer + Passwort angelegt ??

Bitte ein paar Info´s DANKE

Als Du deinen mySQL-Server installiert hast wurdest Du nach einem Passwort für den ROOT-User gefragt, dies ist normalerweise für alle Datenbanken gültig.

Solltest Du einen externen MySQL-Server bei einem Provider nutzen wollen dann wird der Nutzer und das Passwort normalerweise beim Anlegen einer Datenbank abgefragt, ist aber abhängig vom Provider.

Hallo !

Hat das einen speziellen Grund, die Daten in eine DB zu schreiben? Ich habe das Beispiel von uTrackMe genommen und ein wenig angepasst. Das Ergebnis ist eine Karte mit dem Standort.
Dazu habe ich noch eine Variante gemacht, die alle 5 sek aktualisiert und gleich auf den Standort zoomt. Die Karte habe ich im Designer eingebunden.

Happy Day, Frank

Hallo

kannst du mal deine Variante erläutern …
:slight_smile:

Klar:

Auf der Webseite uTrackMe gibt es zwei Beispiele. Eins mit Textdatei und ein mit Sessions. Die habe ich genommen und auf einen Webserver gelegt.

Nachdem man die Daten in den Dateien angepasst hat, zeigen sie mit der map.php eine Google-Maps Karte mit dem Standort an. Die habe ich im Designer einfach eingebunden.

Zusätztlich hat mich gestört, dass man im Beispiel immer erst reinzoomen muss. Das habe ich angepasst und dann noch eine map.php Variante erstellt, die alle 5 sek aktualisiert damit man auch live eine Bewegung sehen kann.

Happy Day, Frank

Für mich ja, da ich mehrer iOS Geräte habe.
Weiter kann ich schauen wo mein Gerät wann war.
Aber wieviele Daten jeder selber sammelt bleibt jedem selbst überlassen :wink:

Gruss
Michael

Hallo Michael !

Alles klar. Dann macht es natürlich Sinn. Ich habe auch schon überlegt, ob man aufgrund der gespeicherten Daten noch einen Strich in die Karte malen könnte. Dann sieht man die zurückgelegte Strecke.

Hallo zusammen,

ich denke das ich alles richtig gemacht habe, bekomme aber immer eine Fehlermeldung im Handy angezeigt " Cannot parse a NULL or zero-length data".

Ich weiss leider nicht mehr weiter, wo könnte denn da der fehler liegen. :confused:

Wenn ich das originalscript nehme funktioniert es (Textfile wird angelegt).

Gruß Michael

Die Meldung kannst Du abschalten, habe die auch macht sich aber im Programm nicht bemerkbar.

Dann habe ich sicherlich was beim anlegen der Datenbank falsch gemacht, ich kann nicht erkennen das da was eingetragen wird.

Da ich mich nicht so damit auskenne, habe ich es mal so gemacht. (Bild)

Und zum nachsehen benutze ich den QueryBrowser.

Gruß Michael

Hallo,

die Meldung kannst Du ignorieren.
Ich lad gleich eine Version hoch welche diese Meldung nicht mehr bringt.

Gruss
Michael

P.S. Es kam eine neue Version von uTrackMe raus.

Tja, dann weiss ich auch nicht weiter.

Die Daten kommen in der Datenbank an (laut Allgemeines Query Log ) wird aber nichts in der Tabelle angezeigt bzw gespeichert.:confused:

Was muss ich bei der Erstellung der DB beachten?

Gruß Michael

UPDATE: Habe den Fehler gefunden, war der Tabellenname falsch.

Hallo

Kann mir einer erklären wie das ohne Mysql Datenbank geht ??