generisches Script zur Funktionskontrolle

Hallo miteinander,

nach Veränderungen an IPS Einstellungen möchte ich gerne am Abend auf einen Blick sehen, wann was geschaltet oder gesteuert wurde - und zwar genau die Dinge, an denen ich was verändert habe.

Für diesen Zweck habe ich im Webfont eine HTML Box die gefüllt wird und ich immer wieder mal lösche - nicht sehr elegant.

Von was ich Träume ;-), wäre ein generisches Script, das ich includen kann und dem ich einen Textstring bei den jeweiligen Schaltpunkten übergeben kann um die Variable zu füllen. Hier geht es mir um eine Idee, wie ich das includen und die übergabe der Variableninhalte realisieren kann.

Optimal wäre, wenn alle Infos älter als x Tage wieder gelöscht werden.

Ich möchte bewusst keinen großen IPS Logger dafür nutzen, sondern eine kleine schlanke Lösung, die ich mit meinen jetzigen Kenntnissen beherrschen kann.

Gibte dafür bereits einen Lösungsansatz?

Gr, Stromer



<?

echo "=============================================================================
";
echo "===== SInfo mit Ereignistext füllen =========================================
";
echo "=============================================================================
";

 //Fuer Testzwecke koennen Debugausgaben aktiviert werden
 // Debug-Modus an=true / aus=false
 $debug = true;

 // Variablen
 $SInfoAlt = GetValue(31915  /*[00 generische Scripte\Systeminfo\SInfo]*/);
 $time = date("j.m.Y H:i");

 //
 $SInfoNeu = "$time Alles OK! 
";
 $SInfo = $SInfoNeu."<br />".$SInfoAlt;
 SetValueString(31915, $SInfo);

 $Sinfo = GetValueString(31915);

 if($debug) {echo "Sinfo: $Sinfo 
";}
 ?>

Vielleicht etwas weniger komplex http://www.ip-symcon.de/forum/f53/meldungsanzeige-webfront-12115/

Hallo Stromer,

ich hab eine function die eine HTML Liste erzeugt:

function ATN_SetValueEreignisListe($ID1 ,$Sender,$Meldung){
	$menge = 12;
	$header ='<body bgcolor="#a6caf0"><style type="text/css">table.liste { width: 100%; border-collapse: true;} table.liste td { border: 1px solid #444455; } table.liste th { border: 1px solid #444455; }</style>';
	$header.='<table border = "0" frame="box" class="liste"><tr>';
	$header.='<th>Datum</th>';
	$header.='<th>Uhrzeit</th>';
	$header.='<th>Sender</th>';
	$header.='<th>Meldung</th></tr>';

	$data ='<tr align="center"><td>'.date("d.m.Y").'</td>';
	$data.='<td>'.date("H:i").'</td>';
	$data.='<td>'.$Sender.'</td>';
	$data.='<td>'.$Meldung.'</td>';
   
   $object = IPS_GetObject($ID1);
	$buffer = explode("</tr>",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $data);          				 // neue Zeile ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       // alten Wert abschneiden
	$string = implode("</tr>",$buffer);
   IPS_SetInfo($ID1,$string);  	            			 // im Infobereich der Variablen, das Array ablegen
   SetValue($ID1, $header . $string . "</table></body>");               // Variable beschreiben
   return ($string);
}

dann kannst Du einfach mit:

ATN_SetValueEreignisListe(12345 ,$Sender,$Meldung); // ID der HTMLVariablen, Sender , Meldung die angezeigt wird

einen neuen Eintrag an die Liste anfügen. Der letzte Eintrag wird entfernt und die Anzahl der Einträge kannst du mit $menge einstellen

HTH
Attain

super, das ist ja einfach :).

In der 4. Zeile muss das Leerzeichen bei „. =“ raus.

Hallo Attain

ganz tolles Script. Installiert gestartet und funkt.

Gruß wibo

Hallo Attain,

wie binde ich die Function ein?

Einmal ist immer das erstemal :slight_smile:

Gr, Stromer

Hallo Stromer,

<?

ATN_SetValueEreignisListe(12345  /*[Test\Anzeige test\attain]*/ ,$Sender,$Meldung); // ID der HTMLVariablen, Sender , Meldung die angezeigt wird

function ATN_SetValueEreignisListe($ID1 ,$Sender,$Meldung){
    $menge = 12;
    $header ='<body bgcolor="#a6caf0"><style type="text/css">table.liste { width: 100%; border-collapse: true;} table.liste td { border: 1px solid #444455; } table.liste th { border: 1px solid #444455; }</style>';
    $header.='<table border = "0" frame="box" class="liste"><tr>';
    $header.='<th>Datum</th>';
    $header.='<th>Uhrzeit</th>';
    $header.='<th>Sender</th>';
    $header.='<th>Meldung</th></tr>';

    $data ='<tr align="center"><td>'.date("d.m.Y").'</td>';
    $data.='<td>'.date("H:i").'</td>';
    $data.='<td>'.$Sender.'</td>';
    $data.='<td>'.$Meldung.'</td>';

   $object = IPS_GetObject($ID1);
    $buffer = explode("</tr>",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $data);                           // neue Zeile ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       // alten Wert abschneiden
    $string = implode("</tr>",$buffer);
   IPS_SetInfo($ID1,$string);                               // im Infobereich der Variablen, das Array ablegen
   SetValue($ID1, $header . $string . "</table></body>");               // Variable beschreiben
   return ($string);
   }
?>

ATN_SetValueEreignisListe(12345 ,$Sender,$Meldung); // ID der HTMLVariablen, Sender , Meldung die angezeigt wird habe ich mal mit ins Hauptskript eingefügt. Für 12345 musst Du dir eine Variable erstellen "String als ~HTML Box, für $Sender,$Meldung musst Du die Variable eintragen die triggert und was gemeldet werden soll.
Wenn Du das Skript jetzt ausführst sollte div. Meldungen kommen. Wenn Du ATN_SetValueEreignisListe in einem Extraskript ausführst muss das Hauptskript includet werden. Viel Spass

Danke an alle,

ich lege also das Script oben als ATN_SetValueEreignisListe.ips.php an.

Include das in den Scripten die ich überwachen will mit

include ‚ATN_SetValueEreignisListe.ips.php‘;
und setze an den Stellen im Script die die Message senden sollen

ATN_SetValueEreignisListe(ID HTML Variable ,Testsender,Testmeldung);

Korrekt?

Gr, Stromer

Hallo Stromer,

richtig!
Ansonsten kannst Du das Script auch per „auto_prepend_file“ generell einbinden. Dann brauchst du es nicht in jedem Script „includen“.

Autoprepend

Gruß
Attain

Hast Du Dir mal den IPS Logger aus dem WIKI angesehen, den nutze ich sehr gerne, weil er auch verschiedene Level benutzt und man einstellen kann bis zu welchem Level man sehen will.

Dies ist auch mein bevorzugte Version.

Man kann die Meldung nach Zeit automatisch löschen lassen oder einfach per OK-Button bestätigen.

Hallo zusammen,

habe derzeit das Script von attain laufen, eine eigene Lösung und hatte früher auch den IPS Logger. Ich mag Dinge die ich selbst gut beherrschen kann und bei meinen momentanen Kenntnissen bin ich so zufrieden.

Danke für Eure Mithilfe und Tips,
Stromer