FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fhem_olsi am 01 April 2025, 16:09:56

Titel: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: fhem_olsi am 01 April 2025, 16:09:56
Hallo werte Experten!

Ich benutze FHEM nun schon seit drei Jahren, aber wenn ich das folgende Problem schildere, fühle ich mich immer noch als Anfänger. Deshalb poste ich dieses Thema in dieser Rubrik.

Also:
Ich habe ein (kleines) Notify gebastelt, das mir immer dann eine (Telegram-)Nachricht übermitteln soll, wenn von meinem BKW Strom ins externe Versorgungsnetz eingespeist wird:
Internals:
   DEF        SML_Reader:pwr:.* {

my $x = ReadingsNum("SML_Reader","pwr","0");
my $u = ReadingsNum("SML_Reader","pwr_L1","0");
my $v = ReadingsNum("SML_Reader","pwr_L2","0");
my $w = ReadingsNum("SML_Reader","pwr_L3","0");
# &ctmLog("./log/SML_Reader.log", "$x\t$u\t$v\t$w");

if ( $x < 0 ) {
$x = -$x;
# fhem("set TG msg BKW speist $x Watt ins Stromnetz!!!");
}
}
   FUUID      67c82b9e-f33f-c887-11e4-846670a049816188
   NAME       n_SML
   NOTIFYDEV  SML_Reader
   NR         961
   NTFY_ORDER 50-n_SML
   REGEXP     SML_Reader:pwr:.*
   STATE      2025-04-01 15:35:52
   TRIGGERTIME 1743514552.42093
   TYPE       notify
   eventCount 14
   READINGS:
     2025-04-01 15:35:22   state           active
     2025-04-01 15:35:52   triggeredByDev  SML_Reader
     2025-04-01 15:35:52   triggeredByEvent pwr: -634
Attributes:
   room       EnergieRaum
Um in der Experimentier-Phase nicht zu viele (gewünschte) Log-Einträge und Telegram-Nachrichten zu erhalten, habe ich die entsprechenden Zeilen auskommentiert.
   
Das Phänomen ist nun, dass ich in der Standard-)FHEM-Log-Datei Einträge folgender Art vorfinde:
2025.04.01 15:58:52 3: n_SML return value: 94
2025.04.01 15:59:02 3: n_SML return value: 74
2025.04.01 15:59:12 3: n_SML return value: 89
2025.04.01 15:59:22 3: n_SML return value: 82   
Dass die geloggten Werte den Inhalt der Variablen $x widerspiegeln, ist mir klar. Ich verstehe nur nicht, warum das überhaupt geloggt wird.

In der Konfigurations-Datei "fhem.cfg" ist
attr global verbose 3gesetzt; nach Auskunft der "command.ref" heißt das: "3: ausgesendete Kommandos werden gelogged."
Wird hier also die Variable $x als Kommando interpretiert???

Wer weiß Rat?

Gruß Wolfgang
Titel: Aw: Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: betateilchen am 01 April 2025, 16:26:37
Du hast in Deinem perl code keinen anderen Rückgabewert vorgegeben, deshalb kommt der "letzte" verarbeitete Wert zurück.

Völlig normal.
Titel: Aw: Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: fhem_olsi am 01 April 2025, 17:06:29
Du hast in Deinem perl code keinen anderen Rückgabewert vorgegeben, deshalb kommt der "letzte" verarbeitete Wert zurück.Dass er "zurück"kommt, war mir ja schon klar.
Aber warum er geloggt wird, nicht.
Das soll wohl also heissen, dass ein Perl-Rückgabewert von FHEM immer(?) als Kommando interpretiert wird?
Wie auch immer; ich habe jetzt diese "Effekt" durch ein Hinzufügen von einem "return" unterdrückt:
SML_Reader:pwr:.* {

my $x = ReadingsNum("SML_Reader","pwr","0");
my $u = ReadingsNum("SML_Reader","pwr_L1","0");
my $v = ReadingsNum("SML_Reader","pwr_L2","0");
my $w = ReadingsNum("SML_Reader","pwr_L3","0");
# &ctmLog("./log/SML_Reader.log", "$x\t$u\t$v\t$w");

if ( $x < 0 ) {
$x = -$x;
# fhem("set TG msg BKW speist $x Watt ins Stromnetz!!!");
}
return;
}
Titel: Aw: Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: betateilchen am 01 April 2025, 18:21:52
Deine Annahme, dass perl code als FHEM-Kommando interpretiert wird, ist falsch.

Die Logausgabe erfolgt bewusst, um den Rückgabewert aus AnalyzeCommandChain() (ausgeführt in fhem.pl) zu protokollieren.

my $r = AnalyzeCommandChain(undef, $exec);
Log3 $ln, 3, "$ln return value: $r" if($r);

Zitat von: fhem_olsi am 01 April 2025, 17:06:29Wie auch immer; ich habe jetzt diese "Effekt" durch ein Hinzufügen von einem "return" unterdrückt:

So macht man das ja auch, wenn man es richtig machen möchte...

Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: fhem_olsi am 02 April 2025, 13:16:53
Deine Annahme, dass perl code als FHEM-Kommando interpretiert wird, ist falsch.
Die Logausgabe erfolgt bewusst, um den Rückgabewert aus AnalyzeCommandChain() (ausgeführt in fhem.pl) zu protokollieren.
Zwar sagt der Name "AnalyzeCommandChain" ja eigentlich wörtlich übersetzt etwas über "Kommandos" aus, aber Du hast recht. Wenn ich als Rückgabewert etwas definiere, was formal aussieht wie ein FHEM-Kommando, wird es dennoch nicht als Kommando interpretiert. Aber geloggt!
Also müßte die "command.ref" hier eigentlich angepaßt werden, denn dort steht:
verbose
Setzt den Schwellwert für die Logfile-Meldungen. Mögliche Werte sind:

    0 - Server start/stop
    1 - Fehlermeldungen oder unbekannte Pakete
    2 - bedeutende Ereigbisse/Alarme.
    3 - ausgesendete Kommandos werden gelogged.
    4 - von den einzelnen Geräten empfangene Daten.
    5 - Fehlersuche.
Bei "verbose = 3" werden eben nicht nur "Kommandos gelogged", sondern eben auch Perl-Rückgabewerte.
Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: betateilchen am 02 April 2025, 13:23:04
Ich finde das gut, so wie es ist.

Es werden auch noch ganz andere Dinge gelogged, die gemäß dieser Beschreibung in der commandref nicht in den jeweiligen Loglevel gehören. Für mich fällt das unter "künstlerische Freiheit", die jedem Entwickler von FHEM, der die Arbeit in seiner Freizeit leistet, zustehen darf.

Sei froh, dass es überhaupt verschiedene Loglevel gibt.

Punkt.
Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: fhem_olsi am 02 April 2025, 13:48:58
Zitat von: betateilchen am 02 April 2025, 13:23:04Sei froh, dass es überhaupt verschiedene Loglevel gibt.
Das ist - sage ich einmal sehr vorsichtig - ein sehr gewöhnungsbedürftige Aussage/Haltung.

Komma, Strich.
Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: Prof. Dr. Peter Henning am 02 April 2025, 13:50:51
Zitat von: fhem_olsi am 02 April 2025, 13:16:53Zwar sagt der Name "AnalyzeCommandChain" ja eigentlich wörtlich übersetzt etwas über "Kommandos" aus
Aber nicht über FHEM-Kommandos, sondern die Perl-Zeilen innerhalb von {} werden analysiert.

Und nein: Wir werden sicher nicht wegen einer vergleichsweise schlecht programmierten Perl-Funktion ohne expliziten Rückgabewert die CommandRef anpassen.

Auch der Aussage von betateilchen, dass man froh über veschiedene Loglevel sein sollte, schließe ich mich vorbehaltlos an.

pah
Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: fhem_olsi am 02 April 2025, 13:54:31
Irgendwie hatte ich das erwartet...
Titel: Aw: [Gelöst] Nicht nachvollziehbare Log-Einträge durch ein Notify
Beitrag von: betateilchen am 02 April 2025, 15:21:28
Zitat von: fhem_olsi am 02 April 2025, 13:54:31Irgendwie hatte ich das erwartet...

Dann bin ich ja froh, dass wir Deine Erwartungen vollumfänglich erfüllen konnten und der Tag doch noch gerettet werden konnte.

Laßt uns den Sonnenschein genießen!