Das nachfolgende Script wird jede Sekunde ausgeführt und erzeugt folgenden Eintrag in die Meldungen und das Logfile:
15.12.2017 18:17:06 | 42591 | WARNING | ScriptEngine | Ergebnis für Ereignis 18762
Wenn ich das Script manuell ausführe, wird in der Konsole das Ausgabefenster leer geöffnet.
Ich versuche diese Ausgabe zu unterdrücken, habe auch schon div. Zeilen mit „@“ versehen, aber ohne Erfolg.
Hie das Script:
<?
//vollständiges Array pro Plane Dezimalwerte kommen mit Komma ?
$plane = array(
'hex' => "406c43",
'squawk' => 2750 ,
'flight' => "CFE5EF" ,
'lat' => 49.038593,
'lon' => 7.348047,
'nucp' => 7,
'seen_pos' => 0.8,
'altitude' => 38000,
'vert_rate' => -64,
'track' => 315,
'speed' => 447,
'messages' => 790,
'seen' => 0,
'rssi' => -34.9
);
$disp = array();
$ergebnis = array() ;
//print_r($plane);
// 1.Step alten Wert laden--------------------------------------------------------
//$updated = unserialize(GetValue(26477 /*[Plane auswählen nach Entfernung \Aircraft updated auffüllen\aircraft updated]*/));
//$updated = Sys_GetURLContent("http://192.168.1.136:8080/data/updated.json");
$handle = fopen ("/run/dump1090-mutability/updated.json",'r');
$updated = fread ($handle,filesize("/run/dump1090-mutability/updated.json"));
fclose ($handle);
$updated = json_decode($updated, true); // $json_string in ein Objekt $json überführen.
//print_r($updated);
// 2.ter Step: Polling------------------------------------------------------------
$json_string = Sys_GetURLContent("http://192.168.1.136:8080/data/aircraft.json");
$json = json_decode($json_string, true); // $json_string in ein Objekt $json überführen.
$zeit = intval($json['now']);
$aircraft = ($json['aircraft']); // Nur das aircraft-array ohne Zeit und Summe Meldungen
// 2.1 Zeit verarbeiten
SetValue(49642 /*[Plane auswählen nach Entfernung \Zeit now]*/, $zeit);
//echo $zeit . "
";
// 3.ter Step nach Feld hex sortieren----und Zeit reinbringen---------------------
$i = 0 ;
foreach ($aircraft as $nr => $inhalt)
{ $aircraft[$i]['zeit'] = $zeit ;
$i++;
$hex[$nr] = strtolower($inhalt['hex']);
}
array_multisort($hex, SORT_ASC, $aircraft);
// Aktuelle Daten sortiert nach hex speichern
//print_r($aircraft[0]);
//setvalue(51562 /*[Plane auswählen nach Entfernung \Aircraft updated auffüllen\aircraft found]*/, serialize($json['aircraft']));
//Bis hierher läuft es _______________________________________erledigt____________
//$updated = $aircraft; // zum Test neu füllen
//---------------------------------------------------------------------------------
// 4.ter Step Verarbeitung $json['aircraft']---------------------------------------
//ersetzen($aircraft, $updated, $zeit); // alle Felder aus aircraft.json in $updated integrieren
$iu = 0; // array $updated zählen zum späteren Anhängen
foreach ($updated as $nr => $inhalt)
{ $iu++;
}
//--------------------------------------------------------------------------------
foreach ($aircraft as $satz)
{ $gefunden = false ;
foreach ($updated as &$ziel)
{
if ($satz['hex'] == $ziel['hex'])
{
$ziel = array_replace($ziel, $satz); //wird diese Zeile ausgeschaltet wird das alte Updated gezeigt.
//unset($ziel);
$gefunden = true ;
}
}
// -> neue Sätze hinzufügen
if (!$gefunden)
{
$updated[$iu++] = $satz ;
//print_r($satz) ;
}
}
//$updated = $aircraft; // für Testzwecke---------------------------------------
//4.3 alte Sätze löschen und $updated sortieren
// Zeit jetzt - 60 Sekunden
$loeschzeit = 120 ;
$iu = 0 ;
foreach ($updated as &$ziel)
{ if (isset($updated[$iu]['zeit']))
{
if ($updated[$iu]['zeit'] <= (time() -$loeschzeit)) {
unset ($updated[$iu]) ;
}
}
else
{
unset ($updated[$iu]) ;
}
$iu++ ;
}
//print_r($updated);
//updated sortieren--------------------------------------------------------------
$iu = 0;
$ilat = 0 ;
foreach ($updated as $nr => $inhalt)
{ $iu++;
$hexu[$nr] = strtolower($inhalt['hex']);
// Sätze mit Positionen und Höhe
if (isset($inhalt['lat']) && isset($inhalt['altitude']))
{$ilat++;}
}
array_multisort($hexu, SORT_ASC,SORT_STRING, $updated); // SORT_DESC für absteigend SORT_String wichtig
SetValue(43272 /*[Plane auswählen nach Entfernung \Aircraft updated auffüllen\Lat und Altitude found]*/, $ilat); // um Speicher zu sparen
// 5. ter Step Speichern---------------------------------------------------------
ausgeben($updated,$aircraft, $ergebnis);
//setvalue(26477 /*[Plane auswählen nach Entfernung \Aircraft updated auffüllen\aircraft updated]*/, serialize($updated));
$handle = fopen ("/run/dump1090-mutability/updated.json",'w');
fwrite($handle, json_encode($updated));
fclose($handle);
// Ende der Verarbeitung Jetzt kommen nur Funktionen-------------------------------
// Funktionen---------------------------------------------------------------------
//________________________________________________________________________________
// Display im Webbrowser-----nur dies sonst nix-----------------------------------
function ausgeben($updated, $aircraft,$ergebnis) //wird genutzt
{ // $updated-------------------------------------------------------------------
$ausg = "" ;
foreach ($updated as $zeile) {
if ($zeile['seen'] <> 6000) {
if (!isset($zeile['zeit'])) {
$zeile['zeit'] = 1507200000 ;
}
else {
if ($zeile['zeit'] == 0) {
$zeile['zeit'] = 1507200000 ;
}
}
if (!isset($zeile['lat'])) {
$zeile['lat'] = 0;
}
if (!isset($zeile['altitude'])) {
$zeile['altitude'] = 0;
}
$ausg = $ausg . " zeit ". (intval($zeile['zeit'])- 1507200000) . " hex: " . $zeile['hex'] . " Lat: " . intval($zeile['lat'] *100)/100 . " Alt: " . $zeile['altitude'] . " s.: ". $zeile['seen']. "
" ;
//echo($ausg);
}
}
setvalue(20983 /*[Plane auswählen nach Entfernung \Disp Updated\Display updated]*/, $ausg);
unset($zeile);
// $aircraft------------------------------------------------------------------
$ausg = "" ;
foreach ($aircraft as $zeile) {
if ($zeile['seen'] <> 6000) {
if (!isset($zeile['lat'])) {
$zeile['lat'] = 0;
}
if (!isset($zeile['altitude'])) {
$zeile['altitude'] = 0;
}
$ausg = $ausg . " zeit ". (intval($zeile['zeit'])-1507200000) . " hex: " . $zeile['hex'] . " Lat: " . intval($zeile['lat']*100)/100 . " Alt: " . $zeile['altitude'] . " s.: ". $zeile['seen']. "
" ;
//echo($ausg);
}
}
setvalue(20486 /*[Plane auswählen nach Entfernung \Disp Aircraft\Display Aircraft]*/, $ausg);
// $ergebnis----------------------------------------------------------------------
$ausg = "" ;
foreach ($ergebnis as $zeile) {
//if ($zeile['seen'] <=6000) {
if (isset($zeile['lat'])) {
$zeile['lat'] = 0;
}
if (isset($zeile['altitude'])) {
$zeile['altitude'] = 0;
}
//$ausg = $ausg . " zeit ". (intval($zeile['zeit'])-1507200000) . " hex: " . $zeile['hex'] . " Lat: " . intval($zeile['lat']*100)/100 . " Lon: " . " Alt: " . $zeile['altitude'] . " s.: ". $zeile['seen']. "
" ;
//echo($ausg);
// }
}
setvalue(39564 /*[Plane auswählen nach Entfernung \Jason Mix erledigt\Test Ergebnis]*/ , $ausg);
}
?>
Edit: Eben gepostet und jetzt habe ich den Fehler nach wochenlanger Suche gefunden:
Ein Leerzeichen nach "?> " hat es verursacht.