Log Var

LogVar aus IPS V1 schreibt/loggt Variablenwerte bei Änderungen in externe Textdateien.
Ich habe aus dem alten LogVar für IPS V1 mein neues LogVar für IPS V2 gebaut.
Hänge beides mal hier rein…

Das alte LogVar aus IPS V1


<?
/*
*******************************
IP-SYMCON Event Scripting für IPS V1
*******************************
*/
//File: LogVar.ips.php
$separator = ";";  // separate fiels by ; - good for Excel ;-)
if ($IPS_SENDER== "Variable")
{
   switch( IPS_GetVariableType($IPS_VARIABLE) )
   {
        case 'Float'  : $value = round(GetValueFloat($IPS_VARIABLE),2);
                        // change '.' to ',' - good for german Excel ;-)
                        $value = str_replace( ".", ",", $value );
                        break;

        case 'Boolean': $value = GetValueBoolean($IPS_VARIABLE) ? "1" : "0" ;
                        break;

        case 'Integer': $value = GetValueInteger($IPS_VARIABLE);
                        break;

        case 'String' : $value = GetValueString($IPS_VARIABLE);
                        break;

        default       : $value = 'unknown';
                        break;
   }
   $handle = fopen("F:/FHZ/logs_var/" .$IPS_VARIABLE. ".txt", "a");
   fwrite( $handle,  date("d.m.y").
                     $separator.
                     date("H:i:s").
                  // $separator.
                  //$IPS_VARIABLE.
                     $separator.
                     $value.
                    //$separator.
                     //IPS_GetVariableType($IPS_VARIABLE).
                     "
");
   fclose($handle);
   }


Und mein neues für IPS V2


<?
/*
*******************************
IP-SYMCON Event Scripting für IPS V2
*******************************
2009-01-08
Loggt Variablenwerte in externe Textdateien.
Den Pfad (unten) anpassen!
Jeder Variablen die mitgeschrieben werden soll ein Event bei "Änderung" zuweisen
*/
$separator = ";";  // separate fiels by ; - good for Excel ;-)
if ($IPS_SENDER== "Variable")
{
$temp = IPS_GetVariable($IPS_VARIABLE);
switch($temp['VariableValue']['ValueType'])
   {
		case '0': $value = GetValue($IPS_VARIABLE) ? "1" : "0" ;
                        break;

        case '1': $value = GetValue($IPS_VARIABLE);
                        break;

		case '2': $value = round(GetValue($IPS_VARIABLE),2);
                        // change '.' to ',' - good for german Excel ;-)
                        $value = str_replace( ".", ",", $value );
                        break;

        case '3': $value = GetValue($IPS_VARIABLE);
								break;

        default       : $value = 'unknown';
                        break;
   }

$varname = IPS_GetLocation($IPS_VARIABLE);

//um Sonderzeichen rauszufiltern die in meinen Variablen enthalten sind...
$varname = str_replace( "\\", "_", $varname );
$varname = str_replace( ".", "", $varname );
$varname = str_replace( " ", "_", $varname );
$varname = str_replace( ":", "", $varname );

//
// den Pfad anpassen!!!
//

$handle = fopen("F:/FHZ/logs_var/" . $varname . ".txt", "a");
fwrite( $handle,  date("d.m.y").
                     $separator.
                     date("H:i:s").
                  // $separator.
                  //$IPS_VARIABLE.
                     $separator.
                     $value.
                    //$separator.
                     //IPS_GetVariableType($IPS_VARIABLE).
                     "
");
   fclose($handle);
   }


Viel Spaß damit.
Olaf

Finde die Idee das Logfile mit Excell auswerten zu können sehr nützlich.

Nur für Leute, die sowas schon lange suchen:
Um mehrere Logfiles ganz einfach zu führen gibts natürlich auch was bei den ToniTools.

TT_AddToLogfile (FilePath: String; Entry: String; AddTimeStamp: Boolean): Boolean

Toni

Hallo Olaf,

vielen Dank für diesen Umbau. Das hätte einen PHP-Fuchs;) wie mir bestimmt eine Woche gekostet.:rolleyes:

Da meine Variablennamen ein Slash haben ergänzte ich noch:


$varname = str_replace( "/", "_", $varname );

Gruß
Christian

Hallo,

@Tonic1024

wenn du schon Werbung dafür machst sollte es auch allgemein für V2 zugänglich sein (meine Meinung) und nicht per PM.

Man denke an die „Script Library Sammlung“!

Sollte sich zwischenzeitlich was daran geändert haben „SORRY“.

Gruß Michael

Ist halt immernoch Beta und ich hab einfach beschlossen, dass ich wissen will wer und viel wichtiger wieviele User die Software einsetzen. Aus Marketinggründen würde ich dir Recht geben. Aber genau aus diesem Grund verschenke ich meine Software. Weil ich mir dann sowas leisten kann und mir keinen Kopp machen muss. :smiley:

Und dieser Beitrag wird auch noch im Forum stehen wenn die Betaphase abgeschlossen ist und der download auf meiner Seite freigeschaltet ist. :wink:

Toni

Hallo,

ich brauche eure Hilfe. Ích loge mit diesen Skript meine Bewegungsmelder. Die Log-Daten liegen dann in Textformat im Ordner LogVar.

Wie kann ich diese Textdateien im Webfront und auch im Designer anzeigen lassen?
Mann müste alle Dateien die im Ordner „LogVar“ liegen auswählen können und per Echo angezeigt bekommen.:confused:

Gruß
Christian

Hallo PHP Profis,

ich habe noch ein problem. Nachdem ich alle PHP-Funktionen (Dateisystem) studiert habe fand ich die Funktion „rewind“.
Mit dieser Funktion sollte doch möglich sein das die neueren Einträge in der Log oben stehen.
Leider ist das nicht so.
Was mache ich da falsch?


$handle = fopen("C:/Programme/IP-SYMCON_2.1/logs_var/" . $varname . ".txt", "ab");
rewind ( $handle );       //Setzt den Dateizeiger auf das erste Byte der Datei
fwrite( $handle,  date("d.m.y").$separator.date("H:i:s").$separator.$value."<p>
");
fclose($handle);

Auserdem suche ich eine Funktion die mir alle Dateien in einem Ordner auflistet.

Ich hoffe ich habe mich verständlich ausgedrückt.:o

Vielen Dank.

Gruß
Christian

Rewind setzt den pointer wieder auf den Anfang und überschreibt. Aber nur, wenn die Datei NICHT (wie bei Dir) im Append-Modus(a) geöffnet ist, dann wird es ignoriert. (siehe PHP: rewind - Manual)
Zum Ermitteln des letzten Eintrages ist das völlig ungeeignet. Dazu liest man die Datei z.B. mit file() in ein Array und holt sich dann den letzten Eintrag.

Auflisten der Dateien: PHP: readdir - Manual

Tommi