Hi,
ich hab nun endlich meinen Bot am Laufen und meine Installation wird auch immer besser. Nun, was ich gerne machen würde, aber keine Ahnung hab wie, ist, Fehler, die FHEM in sein Log schreibt auch gleichzeitig an meinen TelegramBot zu schicken. Hat jemand schon mal sowas versucht? Wäre dankbar für einen Tip..
Lg, tschimi
Versucht noch nicht, aber hier ein Auszug aus der notify commandref:
Zitat
readLog
Execute the notify for messages appearing in the FHEM Log. The device in this case is set to the notify itself, e.g. checking for the startup message looks like:
define n notify n:.*Server.started.* { Log 1, "Really" }
attr n readLog
Das Log lasse ich mir nicht schicken. Aber eine Nachricht, wenn innerhalb einer halben Stunde mehr als 20 Zeilen ins Log geschrieben werden...
Zitat von: automatisierer am 30 Oktober 2017, 11:15:24
Das Log lasse ich mir nicht schicken. Aber eine Nachricht, wenn innerhalb einer halben Stunde mehr als 20 Zeilen ins Log geschrieben werden...
Da ich zu faul bin es selbst zu schreiben, die Idee aber gut finde, magst du deinen Code mal hier zeigen.
Na klar, kein Problem...
musste mich erst mal wieder einlesen...
über ein at wird alle 30 Minuten eine sub aus der 99_myUtils aufgerufen, über die Readings in der FileLog Definition erstellt werden. Darauf wieder ein notify oder DOIF, welches dann eine Nachricht raus haut, wenn mehr als 20 Zeilen dazu gekommen sind.
das at Device:
defmod linesInTheFileAT at +*00:30:05 {linesInFile("Logfile","currentlogfile","linesInTheFile","linesInTheFileOld","linesInTheFileDiff")}
linesInFile > Aufruf der sub
Logfile > Name des FileLog Device das man überwachen möchte
currentlogfile > Reading mit dem aktuellen Dateiname
danach die drei Readings die erzeugt werden. aktuelle Zeilen Anzahl, alte Zeilen Anzahl, Differenz aus beiden.
sub in 99_myUtils:
#{linesInFile("LogDevice,LogFileReading,LogLinesReading,LogLinesReadingOld,LogLinesDiffReading")}
sub
linesInFile($$$$$) {
my ($logDev,$logFileInt,$logRead,$logReadOld,$logReadDiff) = @_;
my $logFile = InternalVal($logDev,$logFileInt,"undefined");
my @logLines = split(' ',qx (wc -l $logFile));
my $logLinesOld = ReadingsVal($logDev,$logRead,"undefined");
my $logLinesDiff = $logLines[0] - $logLinesOld;
fhem "setreading $logDev $logReadDiff $logLinesDiff";
fhem "setreading $logDev $logReadOld $logLinesOld";
fhem "setreading $logDev $logRead $logLines[0]";
my $return = "$logFile\n$logLines[0].Zeilen in Datei\n$logLinesDiff.Differenz";
return $return;
}
alle Klarheiten beseitigt?