Moin Zusammen,
ich hab mich mal ein bisserl mit den Track Möglichkeit in Verbindung mit IPS beschäftigt.
Als separate Hardware habe ich mir einen TK5000 besorgt, weil der relativ gut „frei“ konfigurierbar ist.
Der TK5000 sendet entsprechend konfiguriert alle x Sekunden und/oder bei Bewegung über gprs auf Port xxxx
$ID, $datetime, $longitude, $latitude, $speed, $heading, $altitude, $satellite, $event
Anbei ein dirty hack zur Integration, der mich allerdings nicht glücklich macht. Einerseits läuft er auf einen timeout (das könnte ich noch abfangen) aber andererseits glaube ich nicht wirklich die Möglichkeiten unseres schönen IPS richtig ausgenutzt zu haben.
Wie seht Ihr das?
Skript php Server:
<?php
error_reporting (E_ALL);
/* Das Skript wartet auf hereinkommende Verbindungsanforderungen. */
set_time_limit (0);
/* Die implizite Ausgabe wird eingeschaltet, so dass man sieht,
* was gesendet wurde. */
ob_implicit_flush ();
$address = 'x.x.x.x';
$port = xxxx;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "
";
}
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "
";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "
";
}
do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "
";
break;
}
do {
if (false === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($msgsock)) . "
";
break 2;
}
if (!$buf = trim ($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if (GetValueBoolean(41317 /*[Programme\TK5000\TK5000 Server run]*/) == FALSE) {
socket_close ($msgsock);
break 2;
}
if ($buf == 'shutdown') {
socket_close ($msgsock);
break 2;
}
SetValueString(27853 /*[Programme\TK5000\TK5000 Message]*/, $buf);
list($ID, $datetime, $longitude, $latitude, $speed, $heading, $altitude, $satellite, $event) = explode(",", $buf);
SetValueString(36516 /*[Programme\TK5000\TK5000 Message\DateTime]*/, $datetime);
SetValueFloat(31146 /*[Programme\TK5000\TK5000 Message\longitude]*/, $longitude);
SetValueFloat(27486 /*[Programme\TK5000\TK5000 Message\latitude]*/, $latitude);
SetValueFloat(57666 /*[Programme\TK5000\TK5000 Message\speed]*/, $speed);
SetValueFloat(18785 /*[Programme\TK5000\TK5000 Message\heading]*/, $heading);
SetValueFloat(17682 /*[Programme\TK5000\TK5000 Message\altitude]*/, $altitude);
SetValueInteger(12574 /*[Programme\TK5000\TK5000 Message\satellite]*/, $satellite);
SetValueInteger(42138 /*[Programme\TK5000\TK5000 Message\event]*/, $event);
} while (true);
socket_close ($msgsock);
} while (true);
socket_close ($sock);
?>