Meldungen von IPS im Dashboard?

Hallo zusammen,

ich würde mir gerne ein Statuspanel erstellen in dem die Meldungen von IPS angzeigt werden. Komme ich da jetzt irgenwie an die Daten um z.B. die letzten 20 Meldungen in einer Variablen zu speichern oder wie sollte ich da vorgehen?
Ich meine, ich hätte hier schon mal was dazu gelesen aber ich finde es nicht wieder.

mfg
Smudo

Hallo,

ich habe mir für die Panel-Ausgabe eine eigene Funktion gebaut. Möchte ich irgendwo im IPS etwas protokollieren, so rufe ich diese Funktion auf und übergebe ihr eine Textzeile. Die Funktion legt einen neuen Eintrag in einem in einer String-Var gespeicherten Array an. Weiters wird das Array für das Dashboard aufbereitet.

Nachfolgend der relevante Code

			//CEL holen
		   $cel = array();
		   $cel = unserialize(GetValue(18974 /*[System\CEL]*/));
		   //Wurden Alarme rückgelesen?
		   if (!is_array($cel)) {
		      //Leeres Array anlegen
		      $cel = array();
		   }
			//Eintrag anfügen
         array_unshift($cel,$zeile);
         //Mehr als 1000 Einträge
         if (count($cel) > 1000) {
            //ältesten Eintrag löschen
				$cel = array_slice($cel,0,-1);
			}

			//für Designer aufbereiten
			$cel_liste = "";
			foreach ($cel as $cel_entry){
		      $cel_liste .= $cel_entry."
";
			}
		   SetValue(54763 /*[HMI\HMI.CEL]*/,$cel_liste);
			
			//CEL speichern
			SetValue(18974 /*[System\CEL]*/,serialize($cel));

Wie es aussieht ist im Anhang ersichtlich.

Gruß
Rubberduck

Jo super,

damit wäre das Script ja schon mal da. Jetzt ist nur noch die Frage offen, ob ich die $Zeilen der IPS-Meldungen irgendwo herbekomme.

mfg
Smudo

Hallo Smudo,

ich protokolliere nicht die IPS-Meldungen selbst. Ich habe mir parallel dazu ein eigenes System geschaffen. Wenn ich irgend eine Nachricht irgendwo im Code ausgeben möchte, so schreibe ich einfach an Stelle von IPS_LogMessage() dann CEL(„Das ist die Nachricht“). Bei mir wird in jedem Script am Anfang ein anderes mit globalen Funktionen eingelesen: include_once(„Global.ips.php“). Dort befindet sich die Funktion CEL(), welche unter anderem den oben angeführten Code enthält und somit die Liste befüllt.

Ob Du die Einträge aus der IPS-Internen Liste auslesen kannst, weiß ich leider nicht. Auf alle Fälle stehen sie aber im Log-Verzeichnis und könnten zur Not dort aus dem Log-File ausgelesen werden. Aber möglicherweise geht das auch noch anders.

Ja, hatte schon verstanden was du meinst. War zwar nicht der Plan aber vielleicht mache ich das dann auch so.

mfg
Smudo