TimerPool-Events als Push-Nachricht versenden

Hallo in die Runde,
ich bin auf der Suche nach einer Möglichkeit, von IPS geloggte TimerPool-Events (Version 4.4) per Push-Nachricht oder per Mail zu versenden. Könnt’ Ihr mir einen Tipp geben, wie man dazu am besten vorgeht?

Danke Euch!!!

Viele Grüße
Detlefp

Du meinst die gelben Fehlermeldungen im Message Log davon?

paresy

hallo paresy,
ja die gelben oder bei mir auch mal gern roten meldungen im message log. :slight_smile:

danke dir,
detlefp

IPS4.4 mit Eaton xComfort

Ich scanne mein Logfile jeden Tag kurz vor Mitternacht und sende dann ein Protokoll der Fehlermeldungen per Mail.


<?php

 //Suche nur ERROR und WARNINGS im Logfile
 $search = Array(
    "ERROR",
    "WARNING"
 );
 
 //Filter bestimmt Fehler, die nicht gemeldet werden sollen
 $filter = Array(
    "Fehler beim Senden des Befehls"
 );
 
 $errors = searchError(IPS_GetLogDir()."logfile.log", $search, $filter);

 if(sizeof($errors) > 0) {
    IPS_LogMessage("Errors found!", "Send Mail with ".sizeof($errors)." errors");
    SMTP_SendMail(53274, "Mein SmartHome", print_r($errors, true));
 }

 function searchError($filename, $keywords, $filter)
 {
   $result = Array();
    $handle = fopen($filename, "r");
    if ($handle) {
        while (($buffer = fgets($handle, 4096)) !== false) {
           foreach($keywords as $searchStr)
           {
                if(!(strpos($buffer, $searchStr) === false))
                {
                   $matchFilter = false;
                   foreach($filter as $str) {
                       if(strpos($buffer, $str) !== false) {
                          $matchFilter = true;
                            break;
                        }
                    }
                    if(!$matchFilter) {
                        $result[] = $buffer;
                    }
                    break;
                }
            }
        }
        if (!feof($handle)) {
            echo "Error: unexpected fgets() fail
";
            return;
        }
        fclose($handle);
    }
    return $result;
}

paresy

Schöner Ansatz, aber bei mir etwas erschreckendes Ergebnis seit Mitternacht 144 Treffer :eek:.

Liegt aber scheinbar auch an der nicht so genauen Filterung, es werden auch Einträge mit WARNING oder ERROR im Text gesammelt.

Aber das lässt sich ja einfach reduzieren, auch nicht 100%, aber etwas genauer


$search = Array(
    "| ERROR",
    "| WARNING"
 );

Hallo Paresy,
danke für Deinen Tipp und das Skript.
Bei mir kommen ab und an Fehler in der Kommunikation mit den Eaton ECIs vor, die aus Netzwerkstörungen resultieren. Darauf müsste ich zeitnah reagieren können. Gibt es eine Möglichkeit, auf LogEvents interaktiv zu reagieren sprich diese Events irgendwie direkt abzufangen und auszuwerten ohne Logfile-Scan? Oder würde ich beispielsweise einmal alle 30 min einen Logfile-Scan analog Deines Skriptes machen?

Danke Dir,
Detlef

IPS4.4 mit Eaton xComfort

Welche Fehler kommen denn genau? Macht es Sinn, dass du diese direkt im Skript abfängst?

paresy

Hallo paresy,
sorry, bin ein paar Tage offline gewesen. In den Logs steht immer folgender Fehler:
„19.06.2019 14:37:15 | 13464 | ERROR | TimerPool | ECI2 (KeepAlive): Zeitüberschreitung beim Warten auf Antwort“
(hier als Beispiel vom 19.6.19 rauskopiert)

Wie würde ich denn diesen Fehler in einem Skript abfangen?

Danke & viele Grüße
detlefp

Ok. Den bekommst du nicht im Skript gefasst. Aber das ein Keep Alive beim ECI fehl schlägt… Ist dein Netzwerk OK?

paresy

Ja das ist grundsätzlich ok, ein Teil der ECIs hängt aber an einem WLAN Mesh und da kommen ab und an die Timeouts, die ich heute so nicht mitbekomme. :wink: Je nach Häufigkeit starte ich dann auch gern die ECI selbst neu, weil das Netzwerk nicht immer das Problem ist, sondern gern auch die ECI selbst. :slight_smile:

Gibt es denn einen anderen Weg, wie ich eine solche Meldung in eine Mail packen könnte o.ä.?

Viele Grüße
detlefp

Siehe meinen Vorschlag aus Beitrag #4

paresy