LogFile Definition mit Regex möglich?

Begonnen von Saphora, 17 Februar 2025, 10:25:18

Vorheriges Thema - Nächstes Thema

Saphora

Hallo Zusammen
Habe hier ein Homematic HM-ES-PMSw1-Pl als HMCCUDEV in FHEM eingebunden.
Die Funktionssteuerung und Readings sind alle vorhanden.
Jetzt möchte ich ein LogFile erstellen wo ausschließlich der Wert für die Watt Leistung reingeschrieben wird.
Dieses steht im Reading 2.POWER:

   READINGS:
     2025-02-16 13:36:57   1.INHIBIT       unlocked
     2025-02-17 09:57:13   1.STATE         off
     2025-02-17 09:57:13   1.WORKING       false
     2025-02-17 10:01:34   2.BOOT          true
     2025-02-17 10:01:34   2.CURRENT       0.0
     2025-02-17 10:01:34   2.ENERGY_COUNTER 267.7
     2025-02-17 10:01:34   2.FREQUENCY     49.9
     2025-02-17 10:01:34   2.POWER         0.0
     2025-02-17 10:01:34   2.VOLTAGE       225.5
     2025-02-16 13:36:57   3.DECISION_VALUE 0
     2025-02-16 13:36:57   4.DECISION_VALUE 0
     2025-02-16 13:36:57   5.DECISION_VALUE 0
     2025-02-16 13:36:57   6.DECISION_VALUE 0
     2025-02-16 13:36:57   activity        alive
     2025-02-17 09:57:13   control         off
     2025-02-17 10:01:34   devstate        ok
     2025-02-17 10:01:34   hmstate         off
     2025-02-16 13:36:57   rssidevice      -255
     2025-02-16 13:36:57   rssipeer        -93
     2025-02-16 13:36:57   sign            off
     2025-02-17 09:57:13   state           off
   ...

Als Definition für das LogFile habe ich folgendes angegeben:
./log/PowerMeter.log PowerMeter:2.POWER:.*

Folgendes steht dann im LogFile:
2025-02-16_21:58:56 PowerMeter 2.POWER: 921.0

Jetzt wird aber neben dem Watt Parameter auch noch 2.POWER: in das LogFile geschrieben.
Kann für die LogFile Defintion auch ein Regex Ausdruck genommen werden, sodass nur der Zahlenwert geloggt wird?
Wie z.B. :
./log/PowerMeter_Watt-%Y-%m-%W.log PowerMeter:2.POWER:/\d\d\d/

Wenn ich es aber so angebe, wird gar nichts in das LogFile geschrieben.

Stehe da leider auf dem Schlauch und komme hier nicht weiter

Danke  :D

betateilchen

Gelogged wird immer devicename, readingname und readingvalue.

Warum/wobei stören Dich denn die beiden zusätzlichen Werte in der Logzeile?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Saphora

Die Daten werden in einem Third-Party Programm dargestellt.
Da macht es sich einfacher, wenn nur die Werte mit Zeitstempel angezeigt werden.
Das müsste alles angepasst werden.
Der HM-ES-PMSw1-Pl war bisher nativ im FHEM eingebunden.
Da sah das Logging wie folgt aus:
2025-01-20_22:17:59 PowerMeter 1018.54
Hier wurde das Reading nicht mitgeloggt, da es ein eigener Channel war.

Wenn per LogFile Definition nichts möglich ist, müsste das zur Folge angepasst werden.
Das wäre dann so  :)

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Zitat von: Saphora am 17 Februar 2025, 11:39:16Hier wurde das Reading nicht mitgeloggt, da es ein eigener Channel war.

Das ist ein Irrglaube. Auch hier wird ein reading gelogged, und zwar das reading "state".
Das hat in FHEM eine Sonderrolle, deshalb wird dieses reading standardmäßig nicht namentlich im Log aufgeführt. Das kannst Du aber mit dem Attribut "addStateEvent" anpassen.

Zitat von: Saphora am 17 Februar 2025, 11:39:16Die Daten werden in einem Third-Party Programm dargestellt.
Da macht es sich einfacher, wenn nur die Werte mit Zeitstempel angezeigt werden.
Das müsste alles angepasst werden.
...
Wenn per LogFile Definition nichts möglich ist...

Per Definition nicht, aber per Attribut vielleicht.
Das Attribut "outputFormat" kennst Du?

- outputFormat <perlCode>
If set, the result of the evaluated perlCode will be written to the file. Default is "$TIMESTAMP $NAME $EVENT\n".

Du solltest das dann aber in einem eigenen FileLog device anwenden, sonst bekommst Du eine Reihe anderer Probleme.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Saphora

ZitatDas ist ein Irrglaube. Auch hier wird ein reading gelogged, und zwar das reading "state".
Das hat in FHEM eine Sonderrolle, deshalb wird dieses reading standardmäßig nicht namentlich im Log aufgeführt. Das kannst Du aber mit dem Attribut "addStateEvent" anpassen.

Sehr gut zu wissen.


ZitatPer Definition nicht, aber per Attribut vielleicht.
Das Attribut "outputFormat" kennst Du?

Nein kannte ich bisher noch nicht.
Habe jetzt folgendes gesetzt, hat aber keinerlei Effekt gebracht.
Ist da etwas falsch dran?

attr FileLog_PowerMeter_Watt outputFormat "$TIMESTAMP $EVENT\n"

betateilchen

Hast Du nach dem Setzen des Attributs FHEM mal neu gestartet?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Saphora

Restart hat etwas bewirkt.
Jetzt sieht es wie folgt aus:
2025-02-17_19:08:50 2.POWER: 1.1
2025-02-17_19:11:13 2.POWER: 1.1
2025-02-17_19:13:23 2.POWER: 1.1
2025-02-17_19:16:22 2.POWER: 1.1
2025-02-17_19:19:06 2.POWER: 1.1
2025-02-17_19:21:36 2.POWER: 1.1
2025-02-17_19:23:52 2.POWER: 1.1
2025-02-17_19:25:53 2.POWER: 1.1
2025-02-17_19:28:43 2.POWER: 1.1
2025-02-17_19:31:20 2.POWER: 1.1
2025-02-17_19:33:42 2.POWER: 1.1

Das 2.POWER: ist immer noch da.
Mit der Systemvariable $EVTPART1 hier zu arbeiten, ist nicht zulässig.

Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 20836) line 1.