Hallo zusammen.
ich habe nix passendes hier im Forum gefunden.
Ich möchte ein LogFile erstellen, welches mir alle Signale von einem Empfänger in ein entsprechendes LogFile schreibt. Dabei nach Möglichkeit diese Einträge dann aus dem HauptLogFile raus lässt.
Gibt es da eine Möglichkeit ? Ist es überhaupt möglich ?
z.B. von ein nanoCUL oder Signalduino nur dessen empfangene Nachrichten !!!!!
Gruß
Sascha
Könnte mir vorstellen (ungetestet!) dass das mit user Readings und einem einfachen Textlog funktioniert.
Bezüglich des FHEM Logs wird es wohl aufs herabsetzen der Verbosity herauslaufen. Alternativ könnte suppressReading ein Ansatz sein.
ZitatSignale von einem Empfänger
Nach meinem Verständnis ist es dann ein Sender. ::)
Mit mehr Informationen könnte man sich was vorstellen, so...
Was für ein Device?
Was tut es?
Was klappt nicht?
Steht doch denke ich alles da, oder?
Er möchte, dass alle Signale (genauer: nur der Nachrichtenteil der Signale), die von einem Empfänger (z. B. einem SIGNALduino) empfangen werden (unabhängig davon, wer diese Signale gesendet hat) in ein eigenes Logfile geschrieben werden und dafür nicht im FHEM Log auftauchen.
Ich verstehe das so:
Ein Sender sendet eine Nachricht, die dann vom SIGNALduino im FHEM Log angezeigt wird. Z. B.:
2016.01.30 19:45:14 4: sduino/msg READ: MU;P0=356;P1=-320;P2=677;P3=-647;P4=-9993;D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;CP=0;O;
2016.01.30 19:45:14 4: sduino: Fingerprint for MU Protocol id 16 -> Dooya shutter matches, trying to demodulate
2016.01.30 19:45:14 5: sduino: Starting demodulation at Position 2
2016.01.30 19:45:14 5: sduino: applying filterfunc SIGNALduino_filterSign
2016.01.30 19:45:14 4: sduino: Fingerprint for MU Protocol id 27 -> remote27 matches, trying to demodulate
2016.01.30 19:45:14 5: sduino: Starting demodulation at Position 2
Der TE möchte nun diese Meldung nicht im FHEM Log haben, sondern stattdessen in einem anderen Log so etwas in der Art stehen haben:
2016.01.30 19:45:14 4: sduino/msg READ: MU;P0=356;P1=-320;P2=677;P3=-647;P4=-9993;D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;CP=0;O;
Ggf. noch mehr reduziert auf die "reine Nachricht":
2016.01.30 19:45:14 4: sduino/msg D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;
Zitat von: r00t2 am 16 März 2017, 13:06:38
Steht doch denke ich alles da, oder?
Er möchte, dass alle Signale (genauer: nur der Nachrichtenteil der Signale), die von einem Empfänger (z. B. einem SIGNALduino) empfangen werden (unabhängig davon, wer diese Signale gesendet hat) in ein eigenes Logfile geschrieben werden und dafür nicht im FHEM Log auftauchen.
Ich verstehe das so:
Ein Sender sendet eine Nachricht, die dann vom SIGNALduino im FHEM Log angezeigt wird. Z. B.:
2016.01.30 19:45:14 4: sduino/msg READ: MU;P0=356;P1=-320;P2=677;P3=-647;P4=-9993;D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;CP=0;O;
2016.01.30 19:45:14 4: sduino: Fingerprint for MU Protocol id 16 -> Dooya shutter matches, trying to demodulate
2016.01.30 19:45:14 5: sduino: Starting demodulation at Position 2
2016.01.30 19:45:14 5: sduino: applying filterfunc SIGNALduino_filterSign
2016.01.30 19:45:14 4: sduino: Fingerprint for MU Protocol id 27 -> remote27 matches, trying to demodulate
2016.01.30 19:45:14 5: sduino: Starting demodulation at Position 2
Der TE möchte nun diese Meldung nicht im FHEM Log haben, sondern stattdessen in einem anderen Log so etwas in der Art stehen haben:
2016.01.30 19:45:14 4: sduino/msg READ: MU;P0=356;P1=-320;P2=677;P3=-647;P4=-9993;D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;CP=0;O;
Ggf. noch mehr reduziert auf die "reine Nachricht":
2016.01.30 19:45:14 4: sduino/msg D=01212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212301230123012301230403012123012301230123012304030121230123012301230123040301212;
Genau so !!!!!!!!!!!!!
Einer der mich versteht ! 8) ;)
Wie kann man das anstellen ?
Gruß
Sascha
Zitat von: sash.sc am 16 März 2017, 14:19:53...Wie kann man das anstellen ?...
Hatte doch oben schon meine Ideen geschrieben.
Ein wenig Eigeninitiative Deinerseits wäre hier sicherlich nicht schlecht :)
Wenn Du was ausprobiert hast und es nicht klappt, kannst Du den Thread ja wieder mit genügend Infos füttern und man kann sehen, wo es ggf. hängt.
Zitat von: r00t2 am 16 März 2017, 15:19:53
Hatte doch oben schon meine Ideen geschrieben.
Ein wenig Eigeninitiative Deinerseits wäre hier sicherlich nicht schlecht :)
Wenn Du was ausprobiert hast und es nicht klappt, kannst Du den Thread ja wieder mit genügend Infos füttern und man kann sehen, wo es ggf. hängt.
Kein Problem.
Habe da schon etwas länger ein LOG definiert.
Bekomme aber nicht die Daten die ich gerne haben möchte.
Internals:
DEF ./log/sduino-%Y-%W.log sduino:.*|sduino:RAWMSG.*|sduino:UNKNOWNCODE.*
NAME sduinolog
NOTIFYDEV sduino
NR 305
NTFY_ORDER 50-sduinolog
REGEXP sduino:.*|sduino:RAWMSG.*|sduino:UNKNOWNCODE.*
STATE active
TYPE FileLog
currentlogfile ./log/sduino-2017-11.log
logfile ./log/sduino-%Y-%W.log
Readings:
2017-03-16 16:12:58 linesInTheFile 2888
Attributes:
room 99_Logs
Ich hab mir das auch schon mal überlegt, ob ich da was als Ersteller des Modules machen kann.
Soweit ich das verstanden habe, kann man mit Filelog Reading Updates weiterleiten.
Meldungen, die mit Log3 ausgegeben werden kommen da nicht an.
Schlussfolgerung: Die Daten müssten in ein Reading und dann kann man es in ein filelog leiten.
Wenn das doch mit log3 geht habe ich auch nichts dagegen :)
Welche Daten willst Du denn im Log haben. Alle die derzeit im Fhem Log auftauchen oder nur Signaldaten?
Grüße Sidey
Am flexibelsten wäre es, wenn man es mit einer regular expression machen würde die man in einem Attribut definieren kann
z.B.
my $msgRegexp = AttrVal($iohash->{NAME},"msgRegexp",undef);
if (defined($msgRegexp) && $rmsg =~ m/$msgRegexp/) {
...
}
Ich denke Sinn macht die raw message ($rmsg) und evtl die dispatch message ($dmsg)
Gruß Ralf
Zitat von: Sidey am 16 März 2017, 17:57:35
Ich hab mir das auch schon mal überlegt, ob ich da was als Ersteller des Modules machen kann.
Soweit ich das verstanden habe, kann man mit Filelog Reading Updates weiterleiten.
Meldungen, die mit Log3 ausgegeben werden kommen da nicht an.
Schlussfolgerung: Die Daten müssten in ein Reading und dann kann man es in ein filelog leiten.
Wenn das doch mit log3 geht habe ich auch nichts dagegen :)
Welche Daten willst Du denn im Log haben. Alle die derzeit im Fhem Log auftauchen oder nur Signaldaten?
Grüße Sidey
Eigentlich nur die Signaldaten, also was ab verbose 4 rein kommt.
Wie ralf9 es schon gesagt hat. DMSG und RAWMSG.
Was würde mehr Sinn machen? Das Empfänger spezifisch zu machen ? Oder als globales Modul, so das es für Jeden Empfänger zu gebrauchen ist ?
Gruß
Sascha
Rawmsg und dmsg sind bereits internals.. Die laufen vermutlich nicht in das filelog nehme ich an
Jepp. Leider ........
Gruß
Sascha
Zitat von: Sidey am 16 März 2017, 22:23:56
Rawmsg und dmsg sind bereits internals.. Die laufen vermutlich nicht in das filelog nehme ich an
Damit sie ins filelog laufen, muß ein event erzeugt werden. Dies geht auch ohne readings mit DoTrigger.
Da es im filelog schon eine regexp gibt, müsste es auch ausreichen, wenn das erzeugen von events mit einem Attribut ein- und ausgeschaltet werden kann
z.B.
." msgEvent:none,RAWMSG,DMSG,RAWMSG+DMSG"
Die extra regexp in einem sduino Attribut hätte den Vorteil, daß eine Empfänger spezifische Filterung möglich wäre.
Gruß Ralf
Muss das im Modul programmiert werden, oder als attribut?
Gesendet von meinem SM-T560 mit Tapatalk
Zitat von: Ralf9 am 16 März 2017, 23:46:21
Damit sie ins filelog laufen, muß ein event erzeugt werden. Dies geht auch ohne readings mit DoTrigger.
Da es im filelog schon eine regexp gibt, müsste es auch ausreichen, wenn das erzeugen von events mit einem Attribut ein- und ausgeschaltet werden kann
z.B.
." msgEvent:none,RAWMSG,DMSG,RAWMSG+DMSG"
Die extra regexp in einem sduino Attribut hätte den Vorteil, daß eine Empfänger spezifische Filterung möglich wäre.
Gruß Ralf
Wie muss denn da eine Definition für ein filelog aussehen, damit die Nachrichten ins log geschrieben werden.
Gruß Sascha
Gesendet von meinem SM-T560 mit Tapatalk