Ich versuche gerade eine Zeile aus der Commandref und dort im Begriff FileLog zu verstehen und komme nicht weiter:
unter define steht folgende Zeile:
define wzlog FileLog ./log/wz-%Y-%U.log wz:(measured-temp|actuator).*
Deren Sinn ist mir fast gänzlich klar: Eine Filelog mit Namen wzlog wird definiert, welches für jede Woche eine neue Datei anlegt. Die zu loggenden Daten werden von dem Gerät wz geliefert und dort sollen von den readings ausschließlich die Werte measured-temp und actuator gespeichert werden.
... und wozu ist die Wildcard .* in diesem Falle da?
Angenommen, ich hätte nur diese beiden Werte im readings, wozu dann noch Wildcards? Wenn ich in den readings actuator1-4 hätte, wäre das für mich verständlich, aber so?? Wenn ich die Wildcard weglassen, wird nichts gespeichert.
Viele Grüße
Eberhard
(Ich wünschte ich wäre ein Perl-Experte....)
Fast alles richtig interpretiert.
wz:(measured-temp|actuator).*
Der "wildcard" ist allerdings kein wildcard (also in dem Sinne, wie Du es vielleicht beim Auflisten von Dateinamen kennst und verwendest), sondern eine regexp die besagt, "egal, was im Event noch nach dem measured-temp ODER dem actuator noch an Text folgt, logge den Event"
Ein zu loggender Event hört nämlich nicht nach measured-temp oder actuator auf, sondern nach den Suchbegriffen kommt immer noch der Messwert. Also zum Beispiel
wz:measured-temp 17.0
wz:actuator 33%
Die gesamte regexp fängt übrigens bei "wz" an und endet beim "*" - das ist ein kompletter Begriff: wz:(measured-temp|actuator).*
Für Details zu regexp kannst Du google oder wikipedia befragen, da gibt es jede Menge Erklärungen. Das Verständnis von regexp ist eine wichtige Voraussetzung, um sich das Leben mit/in fhem nicht unnötig schwer zu machen.
Hallo Betateilchen,
Du hast meinen heutigen Tag gerettet!
ZitatDas Verständnis von regexp ist eine wichtige Voraussetzung, um sich das Leben mit/in fhem nicht unnötig schwer zu machen.
DAS habe ich leider bereits schon erfahren müssen.
Vielen Dank.
Gruß
Eberhard