[gelöst] "count"-Meldungen im Logfile bei Global verbose=3 vermeiden

Begonnen von Mihca, 27 März 2023, 12:13:28

Vorheriges Thema - Nächstes Thema

Mihca

Ein Timer "at" zählt alle 5 Minuten die MQTT2-Devices, die nicht erreichbar sind über folgende Zeile:

my $counts = fhem( "count TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected) raw" )
Das funktioniert auch prima. Global steht verbose = 3, was ich auch gerne so lassen würde. Was stört, ist, dass mit verbose = 3 bei jedem Aufruf von "count" im Logfile z.B. erscheint:

2023.03.26 16:04:15 3: count TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected) raw : 4
Verbose im Timer auf 2 zu setzen hilft nicht. Global verbose = 2 hilft, dann kommen aber die anderen 3er Meldungen, die ich gerne hätte auch nicht. Hat jemand eine Idee, was man tun kann, ohne alle Devices händisch auf verbose = 3 und Global verbose = 2 zu setzen?

Vielen Dank vorab.

Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

DeeSPe

Es gibt einen "quiet"-Schalter für den FHEM Befehl, einfach als zweiten Parameter eine 1 übergeben:
my $counts = fhem( "count TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected)",1 );
oder gleich (und besser?) als ganzen Perl-Code:
my $counts = int(devspec2array("TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected)"));
Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rudolfkoenig

at protokolliert bei verbose 3 das, was die aufgerufene Funktion bzw Perl-Code zurueckgeliefert hat.

Vermutlich reicht ein undef am Ende der Funktion bzw. als letztes Element im Perl-Code, um die Log-Ausgabe zu verhindern.

betateilchen

Zitat von: DeeSPe am 27 März 2023, 12:26:48oder gleich (und besser?) als ganzen Perl-Code:

Das int() kann man im scalaren Kontext ($counts ist scalar!) sogar weglassen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: rudolfkoenig am 27 März 2023, 12:28:21Vermutlich reicht ein undef am Ende der Funktion bzw. als letztes Element im Perl-Code, um die Log-Ausgabe zu verhindern.

Vermutlich reicht aber auch der bereits genannte Schalter für "quiet" im Funktionsaufruf von fhem()  :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Zitat von: betateilchen am 27 März 2023, 12:34:22Das int() kann man im scalaren Kontext ($counts ist scalar!) sogar weglassen.

Das weiß ich.
Finde es dennoch besser so zu schreiben da (gerade für Anfänger) die Intention dahinter besser zu erkennen ist.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Zitat von: DeeSPe am 27 März 2023, 12:43:25Finde es dennoch besser so zu schreiben da (gerade für Anfänger) die Intention dahinter besser zu erkennen ist.

In den meisten Programmiersprachen wäre es ein völlig sinnloses Unterfangen, zu versuchen, ein Array in ein Integer wandeln zu wollen. So einen Quatsch lässt wohl nur perl zu.

Wenn es um das "Erkennen der Intention" geht, würde ich das hier

scalar(devspec2array("TYPE=MQTT2_DEVICE"))
problemlos unterschreiben. Aber int() finde ich an der Stelle einfach absurd.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mihca

my $counts = int(devspec2array("TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected)"));
Funktioniert mit und ohne int(..)

my $counts = fhem( "count TYPE=MQTT2_DEVICE:FILTER=LWT!~([Oo]nline|Connected)",1 );
Funktioniert nicht.

undef am Ende der Funktion bzw. als letztes Element im Perl-Code
Funktioniert nicht.

Vielen Dank an Alle  :)

VG Achim

Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

rudolfkoenig

ZitatFunktioniert nicht.
Liegt vmtl. daran, dass wir vom Gesamtbild nur einen kleinen Ausschnitt kennen, und den Rest zusammenfantasieren.