FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ringidigiding am 06 März 2023, 19:10:17

Titel: [Gelöst] Ausgabe des aktuellen Devices mit Log3
Beitrag von: ringidigiding am 06 März 2023, 19:10:17
ich möchte in meinen DOIFs mit der Log3 Funktion, zum einen Meldungen ins fhem Log schreiben, aber auch gleich den Namen des Devices (z.B. DOIF_Bad_Licht_V1.1) mitgeben.
Dachte für die korrekte Verwendung kann man $name oder $hash als ersten Parameter mitgeben.
Mit
Log3 $name, 2, "Event für DOIF getriggert";

erhalte ich die Fehlermeldung
condition c01: Global symbol "$name" requires explicit package name (did you forget to declare "my $name"?), line 4.

Mit
Log3 $hash, 2, "Event für DOIF getriggert";

erhalte ich im Log folgende Ausgabe:
2023.03.06 19:03:13 2: Event für DOIF getriggert

Nur mit
Log3 $hash, 2, $hash->{NAME} . " Event für DOIF getriggert";
erhalte ich im Log den Namen des Devices:
2023.03.06 19:05:26 2: DOIF_Bad_Licht_V1.1 Event für DOIF getriggert

Wie kann ich den ersten Parameter so setzen, dass der Name des Devices automatisch ins Log mit ausgegeben wird?
Titel: Antw:Ausgabe des aktuellen Devices mit Log3
Beitrag von: Damian am 06 März 2023, 19:48:12
siehe: https://wiki.fhem.de/wiki/DevelopmentModuleAPI#Log3

Der Name selbst wird wohl nicht ausgegeben, viel mehr ist der Name dazu da, um das passende Verbose-Attribut des Devices zu ermitteln.

Der Eigene Name des Devices ist im DOIF-Device im Platzhalter $SELF abgelegt, daher:

Log3 "$SELF", 2, "Event für DOIF getriggert";

Willst du den Namen im Log sehen, dann musst du angeben:

Log3 "$SELF", 2, "$SELF Event für DOIF getriggert";

Was mir persönlich überhaupt nicht gefällt, ist, dass Log3 als Perlfunktion in den Beispielen, warum auch immer, ohne Klammern angegeben wird - das ist zwar in Perl möglich, aber sonst nicht üblich.

Daher würde ich definieren:

Log3 ("$SELF", 2, "$SELF Event für DOIF getriggert");
Titel: Antw:Ausgabe des aktuellen Devices mit Log3
Beitrag von: ringidigiding am 06 März 2023, 20:17:06
Hallo Damian,
danke, habe es gleich ausprobiert, und es funktioniert.
Nehme mal an $SELF im Log3 Aufruf kann ich auch bei anderen Devices nutzen und nicht nur bei DOIFs?
Titel: Antw:Ausgabe des aktuellen Devices mit Log3
Beitrag von: Damian am 06 März 2023, 20:23:22
Zitat von: ringidigiding am 06 März 2023, 20:17:06
Hallo Damian,
danke, habe es gleich ausprobiert, und es funktioniert.
Nehme mal an $SELF im Log3 Aufruf kann ich auch bei anderen Devices nutzen und nicht nur bei DOIFs?

Nicht unbedingt, es hängt vom Device ab, ob es $SELF kennt oder nicht