[gelöst] FileLog - benutzen des Attributs addLog - noch einmal

Begonnen von RalfRog, 11 April 2021, 16:05:43

Vorheriges Thema - Nächstes Thema

RalfRog

Habe eine weitere Frage zur Nutzung des Attributs "addLog" im FileLog.
=> Es werden mehr als die im Attribut "addLog" definierten Readings fortgeschrieben

Folgenden Log habe ich definiert:
Zitat
Internals:
   DEF        ./log/Solar-%Y-%W.log shelly_plug_s_df2674
   FD         31
   FUUID      6063a89a-f33f-a8ec-e3af-2064fca45396e422
   NAME       FileLog_Solar
   NOTIFYDEV  shelly_plug_s_df2674
   NR         466
   NTFY_ORDER 50-FileLog_Solar
   REGEXP     shelly_plug_s_df2674
   STATE      active
   TYPE       FileLog
   addLogMinInterval 5400
   currentlogfile ./log/Solar-2021-14.log
   logfile    ./log/Solar-%Y-%W.log
   READINGS:
     2021-04-11 15:49:22   linesInTheFile  782
   pos:
Attributes:
   addLog     shelly_plug_s_df2674:energy:5400,shelly_plug_s_df2674:energyCum:5400,shelly_plug_s_df2674:power:5400
   archiveCompress 1
   archivedir /var/log/fhem
   createGluedFile 1
   logtype    text
   nrarchive  6
   room       Logs

Da Nachts mangels Sonne keine Events kommen, sollen für den Plot die Readings   "energy , energyCum , power"   vom shelly_plug_s_df2674 alle 1,5h im Log fortgeschrieben werden.
Macht das Log auch.

Allerdings werden auch die beiden Readings "overpower, energyDay" fortgeschrieben.
Zitat
2021-04-11_01:53:33 shelly_plug_s_df2674 energyDay: 0
2021-04-11_01:53:33 shelly_plug_s_df2674 overpower: 0
2021-04-11_01:53:33 shelly_plug_s_df2674 energy: 5558.3
2021-04-11_01:53:33 shelly_plug_s_df2674 energyCum: 8253.1
2021-04-11_01:53:33 shelly_plug_s_df2674 power: 0
2021-04-11_03:23:33 shelly_plug_s_df2674 energyDay: 0
2021-04-11_03:23:33 shelly_plug_s_df2674 overpower: 0
2021-04-11_03:23:33 shelly_plug_s_df2674 energy: 5558.3
2021-04-11_03:23:33 shelly_plug_s_df2674 energyCum: 8253.1
2021-04-11_03:23:33 shelly_plug_s_df2674 power: 0

Die beiden Readings "energyCum & energyDay" sind über UserReadings im Device definiert.

Nach meinem Verständnis habe ich die drei Readings exakt benannt, so dass nur genau das benannte fortgeschrieben werden sollte?
Wo liegt der Denkfehler?
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

rudolfkoenig

ZitatAllerdings werden auch die beiden Readings "overpower, energyDay" fortgeschrieben.
Liegt vmtl. daran, dass das reading-Teil im addLog ein Regexp ist:
ZitataddLog
This attribute takes a comma-separated list of devspec:reading:maxInterval triples.  You may use regular expressions for reading. The last value of the reading will be written to the logfile, if after maxInterval seconds no event for this device/reading has arrived.

RalfRog

Ja...
Daher war ich bei energy von einem anfänglichen "shelly_plug_s_df2674:energy.*:5400" auf die konkreten Namen der Readings "energy" und "eneryCum" umgestiegen.
Würde ja in Konsequenz bedeuten, dass im Attribut "energy" = "energy.*" ist; das passt irgendwie nicht zu may use (wie beendet man denn einen Suchstring   ???  ).

Hmmm...
Werd mal einen Test versuchen bei dem als RegEx nur  "eneryC.*" & "eneryV.*" enthalten sind. Mal schauen ob der Rest dann weg bleibt.
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

RalfRog

Oh, da gibt es was mit Wortgrenzen.
Bei mir "power" sucht alles was "power" enthält. Also auch "overpower". Mein Verständnisfehler.
Das muss ich wohl noch ein bischen REgEx lesen   :-[
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

RalfRog

#4
Tja, das kommt davon wenn man das Verhalten  von den RegEx nicht so parat hat.
Daher schließe ich den Beitrag "für Anfänger" mit Lösung ab.

=> "string" sucht alle Vorkommen - ob als einzelnes Wort "string" oder Teil eines Wortes "Knastring" ::)

Das obige Beispiel habe ich nun mit dem speziellen Zeichen für Wortgrenze gelöst.
  "energy\b"     findet nur das Reading "energy" und lässt die Readings "energyDay" etc. aus.
  "energyCum" findet das Reading "energyCum" und da es nichts Ähnliches gibt passt das so.
  "power" habe ich weggelassen. Readings mit dem Wert "0" braucht man für einen Plot nicht fortschreiben.

Danke Rudi.
Ich hatte den Hinweis in der Commadref zwar gelesen aber offensichtlich mangels Übung falsch eingesetzt.
Dein Hinweis hat mich noch mal recherchieren lassen; habe einen Online RegEx-Tester befragt - da wird es dann gleich klar.

Gruß Ralf



FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen