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
Gelogged wird immer devicename, readingname und readingvalue.
Warum/wobei stören Dich denn die beiden zusätzlichen Werte in der Logzeile?
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 :)
benutze doch ein readingsProxy
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.
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"
Hast Du nach dem Setzen des Attributs FHEM mal neu gestartet?
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.