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.
Den Inahlt der utrackme.zip Datei nach /webfront/user/ entpacken.
In der receiveposition.php die Login Daten für Euren SQL Server anpassen.
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)).
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>");
?>
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.
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
Jetzt könnt Ihr die APP starten. Die weiteren Einstellungen der APP werden auf der Homepage des Herstellers erklärt.
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:
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.
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.
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.
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.
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
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.