Text aus einer Datei in eine Varable bringen

Ich habe eine Datei, in die meine Wetterstation regelmßig Werte einträgt.

Kann ich den Textparser nutzen, um Werte in Variable zu übernehmen ?
Oder mach ich das nur über PHP.

Oder wie gehe ich hier sinnvoll vor ?

Ich denke, die Lösung ist einfacher, als ich mir sie vorstelle. Wahrscheinlich muß ich nur einen Schritt zur Seite gehen, um von der Leitung zu kommen.

Gruß
Rainer

Hallo Rainer,

diese PHP-Zeile schreibt den Inhalt der Datei $FileName in den String $TextString. Die Datei wir danach sofort wieder geschlossen.

$TextString = file_get_contents($FileName);

Ich glaube kürzer geht es wohl nicht mehr.

Gruß
HJH

Geht wirklich nicht kürzer (und einfacher).Ich werde es morgen ausprobieren.

Danke

Rainer

Das habe ich bis jetzt erreicht:
Die Datei currdat.lst enthält die minütlich von der Wetterstation WS3600 geschriebenen Daten.
Es sind insgesamt 67 Zeilen.

Der Wert für die Zeit in der Datei ist durch seine Größe nicht in einen Integerwert umwandelbar ( > 2147483647). Deshalb habe ich die Zeit durch Subtraktion einer Konstanten, die ich durch Ausprobieren !!!:stuck_out_tongue: erhalten habe, berichtigt.

Und so sieht es bis jetzt mit Zeit, Aussentemperatur und Druck aus:
Der Rest wird nach und nach zunächst zum Übertragen der Werte in Variable in IPS eingefügt.

<?
/*


IP-SYMCON Event Scripting


File : WS3600.ips.php
Trigger :
Interval :
*/
$lines = file(„C:\Programme\HeavyWeather\currdat.lst“);

foreach ($lines as $line_num => $line)
{
echo "<b>{$line_num}</b> : " . ($line) . "<br>
„; //nur zum Testen
if ($line_num == „7“)
{ $L7 = ($line) ;
$L7Zeit = intval((substr($L7,21,9)))+791011219;
SetValueInteger(„WS3600_Zeit_Integer“,$L7Zeit);
// echo date(’ d.m.Y H:i’, (intval($L7Zeit))) .“<br>
„;
}
if ($line_num == „27“)
{ $L27 = ($line) ;
$L27Temp = (trim($L27,'deg_C=/“’));
SetValueFloat(„WS3600_Temp_Aus“,(floatval($L27Temp)));
// echo (floatval($L27Temp)) ."°C<br>
„;
}
if ($line_num == „72“)
{ $L72 = ($line) ;
$L72Druck = (trim($L72,'hpa=/“’));
SetValueFloat(„WS3600_Druck“,(floatval($L72Druck)));
}
}
?>

Gruß Rainer

Der Wert für die Zeit in der Datei ist durch seine Größe nicht in einen Integerwert umwandelbar ( > 2147483647). Deshalb habe ich die Zeit durch Subtraktion einer Konstanten, die ich durch Ausprobieren !!! erhalten habe, berichtigt.

Ausprobieren ist eigentlich nicht nötig, die Integerwandlung sogar falsch. Die Datei sollte folgende Struktur haben:
Date :TdateTime; // 8 bytes Delphi TIME

Für Delphi-unkundige:
A TDateTime value is stored as a Double value variable. The integral part represents a date part, time part is held in fractional part. The date part of the TDateTime variable represents the number of days that have passed since 12/30/1899.

Jetzt muss man das ganze in PHP zusammenbringen, was bekanntlich mit Unix-Timestamps arbeitet. Auch dazu gibt es schon Lösungen frei Haus per Google, z.B. hier

Tommi