FileLog - attr outputFormat <perlCode>

Begonnen von mi.ke, 07 Mai 2023, 16:28:57

Vorheriges Thema - Nächstes Thema

mi.ke

Zitat von: rudolfkoenig am 01 November 2019, 15:23:04outputFormat <perlCode>
      Falls gesetzt, ist die Ausgabezeile das Ergebnis der Auswertung.
      Voreinstellung ist "$TIMESTAMP $NAME $EVENT\n".
      Achtung: nur dieses Format ist kompatibel mit dem SVG-Editor.

Hi zusammen,
ich würde gerne folgendes machen, um die Datei später automatisch in Excel weiter verarbeiten zu können.
attr FileLog outputFormat "$TIMESTAMP $EVTPART1 \n"oder am liebsten
attr FileLog outputFormat "$mday.$month.$year $EVTPART1 \n"
Dabei gibt es aber Fehlermeldungen

Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 55770) line 1.
auch Perlvariablen können nicht verwendet werden, wie "$year" oder "$month".

POSIX strftime z.B "%d.%m.%Y" werde bei der Eingabe aktzeptiert, aber im Log steht dann nur %d.%m.%Y und nicht 07.05.2023

Wie müsste ich den Perlcode eingeben um zum Erfolg zu kommen?

LG mi.ke









FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

betateilchen

Zitat von: mi.ke am 07 Mai 2023, 16:28:57Wie müsste ich den Perlcode eingeben um zum Erfolg zu kommen?

Vermutlich wie an allen ca. 728 Stellen in FHEM auch, an denen man perl Code eingeben kann: in geschweiften Klammern.

(ungetestet)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ich glaube übrigens nicht, dass es an dieser Stelle ein $EVTPART1 oder andere von FHEM bereitgestellte oneliner-Variablen überhaupt gibt. Da wird lediglich ein einfaches eval ausgeführt. Du müsstest also das Splitten und das Erzeugen der timestamp-Variablen schon selbst in den perl Code mit aufnehmen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

mi.ke

Hatte mir so geholfen, dass ich den gewünschten String in userReadings erzeuge und formatieren und dann ins Log übergebe. Geht auch.
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

sn0000py

Ich hänge mich hier mal ran, gibt es noch andere Variablen ausser diese 3 genannten?
Ich möchte gerne auch das Datum lesbar formatieren - aber wichtiger nur den Wert ohne dem Reading speichern.