[gelöst] FileLog nur mit geänderten Daten befüllen

Begonnen von Bartimaus, 07 Juni 2019, 10:13:02

Vorheriges Thema - Nächstes Thema

Bartimaus

Moin,

ich suche eine Möglichkeit, ein FileLog eines Temperatursensors nur mit "geänderten" Daten zu befüllen. Der Sensor liefert periodisch (5min) seine Daten.
Damit möchte ich aber nicht das Log mit gleichen Werten zumüllen.

Das Attribut "Event-on-Change-Reading" im Device hilft mir hier nicht weiter, da ich die Events nicht unterdrücken möchte, weil diverse DOIFs bei mir darauf angewiesen sind.

Mir schwebt, sofern möglich, ein Regex in der Definition des FileLog vor, bin mir da aber nicht sicher, bzw. stehe mit Regex auf Kriegsfuss.

Hat jemand eine Idee und könnte mir einen Schubs geben ? In der Suche habe ich keine Lösung gefunden.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

MadMax-FHEM

Alternative: userreadings welches quasi eine Kopie des Original-Readings ist, darauf dann event-on-change-reading und das dann loggen statt des Original-Events...

(oder das userreadings für DOIF/notify etc. und weiterhin das Original-Reading mit event-on-change-reading loggen)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Bartimaus

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

#3
Hm, damit mein FileLog weiterhin mit dem gleichen Reading befüllt wird, habe ich mich für Variante2 mit dem Extra-Userreading  für DOIF und Co entschieden.
Aber: Im Eventlog sehe ich das Userreading nicht, auch im DOIF taucht es nicht unter den verknüpften Devices unter "Readings" auf.

Mach ich hier was falsch ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

MadMax-FHEM

Zitat von: Bartimaus am 07 Juni 2019, 12:53:22
Mach ich hier was falsch ?

Bestimmt ;)

Poste doch mal ein list des Devices...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Bartimaus



Bitte...

ZitatInternals:
   ALARM      0
   ASYNC      1
   CHANGED   
   DEF        DS18B20 FF5184B41603
   ERRCOUNT   0
   FUUID      5c7244b6-f33f-dcb4-8417-530b5692b813f275
   INTERVAL   300
   IODev      1wire
   NAME       Temp_Wohnzimmer
   NOTIFYDEV  global
   NR         1159
   NTFY_ORDER 50-Temp_Wohnzimmer
   NUMTASKS   0
   OW_FAMILY  28
   OW_ID      FF5184B41603
   PRESENT    1
   ROM_ID     28.FF5184B41603.41
   STATE      23.5°C
   TYPE       OWTHERM
   owg_cf     9
   owg_temp   23.5
   owg_th     75
   owg_tl     0
   OLDREADINGS:
   READINGS:
     2019-06-07 14:33:45   Temperatur      23.50
     2019-05-25 01:54:59   alarm           1
     2019-05-25 01:59:49   present         1
     2019-06-07 13:59:55   statTemperatureDay Min: 0.0000 Avg: 22.9084 Max: 23.5000
     2019-06-07 13:59:55   statTemperatureMonth Min: 0.0000 Avg: 24.2763 Max: 23.5000
     2019-06-07 13:59:55   statTemperatureYear Min: 0.0000 Avg: 21.8740 Max: 23.5000 (since:  )
     2019-06-07 14:33:45   state           T: 23.50 °C
     2019-06-07 14:33:45   temperature     23.5
   helper:
     _98_statistics TempStatistik
   owg_val:
     0
     0
     0
     1
     1
     1
     1
     0
   owg_vax:
     1
     0
     0
     0
     0
     0
     0
     0
   tempf:
     factor     1
     offset     0
Attributes:
   IODev      1wire
   event-on-change-reading temperature:1
   group      Temperaturen
   model      DS18B20
   resolution 9
   room       1wire,Favourites
   stateFormat {sprintf("%.1f°",ReadingsVal("$name","temperature",0))."C"}
   tempHigh   75
   tempLow    0
   tempUnit   Celsius
   userReadings Temperatur {ReadingsNum("Temp_Wohnzimmer","state","")}
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

MadMax-FHEM

#6
Also das userReadings funktioniert schon mal...

Zwei Anmerkungen (haben aber nichts mit dem Problem zu tun [denke ich]):


stateFormat {sprintf("%.1f°",ReadingsVal("$name","temperature",0))."C"}


Hier arbeitest du mit Strings (und ReadingsVal gibt auch [meist] Strings zurück), gibst aber als "Ersatzwert" eine Zahl an...
(macht nichts Perl ist hier [wohl] sehr geduldig ;)  )


Im Gegensatz zu hier:

userReadings Temperatur {ReadingsNum("Temp_Wohnzimmer","state","")}


Wo du mit ReadingsNum "bewusst" nach einer Zahl "frägst", als "Ersatzwert" aber einen String angibst ;)


Ich kann grad nicht testen aber dass kein Event kommt wundert mich (bzw. konnte ich auf die schnelle nichts finden dass/warum KEIN Event erzeugt werden sollte)...

Das mit DOIF verstehe ich nicht, also verstehe nicht was du meinst!?

Evtl. brauchst du noch das Attribut readingList (für das DOIF-Zeugs / es steht zwar in der commandref nur bzgl. Dummy aber man weiß ja nie)...

Zitat von: commandref
Die unter Dummy beschriebenen Attribute readingList und setList stehen auch im DOIF zur Verfügung. Damit wird erreicht, dass DOIF im WEB-Frontend als Eingabeelement mit Schaltfunktion dienen kann. Zusätzliche Dummys sind nicht mehr erforderlich. Es können im Attribut setList, die in FHEMWEB angegebenen Modifier des Attributs widgetOverride verwendet werden.

Wenn ich nachher zuhause bin teste ich das mal...
...allerdings kann ich das nur bzgl. Event testen.

Bei DOIF kenne ich mich nicht aus...
...und wie geschrieben verstehe ich nicht (genau) was du meinst...

Gruß, Joachim

P.S.: nächstes Mal besser in "code-Tags" ('#' im Menü) posten, statt als "Zitat"... ;)
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Bartimaus

Hallo Joachim,

danke für Deine Analyse. Zum Glück ist Perl wirklich sehr geduldig. Denn ich habe stateFormat/userReadings mir aus Wiki, Forenbeiträge etc. zusammengesucht, und es funktioniert ja auch.

Was mir jetzt beim genauen lesen aber auffällt, durch das Attribut "Event-on...:temperature:1" schränke ich die Events doch genau auf das Reading "temperature" ein. Und zwar mit Schwellenwert "1".

Ohne dieses Attribut wird gefeuert, und ich sehe das im Eventlog, als auch in der Readingsektion des DOIF.

Ich hab das jetzt mal ergänzt um das Reading "Temperatur" ohne Schwellenwert.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

MadMax-FHEM

#8
Wenn du es zu event-on-change-reading hinzugefügt hast, dann bekommst du für Temperatur aber nur Events, wenn sich der Wert ändert...
Besser vielleicht das bei event-on-update-reading.
Dann bekommst du Events auch wenn/obwohl der Wert gleich geblieben ist...
Das willst du doch wegen deiner Logiken!?

Ich probiere das später mal aus...

EDIT: also ich habe (leider nur mit Dummy) ein wenig "rumgespielt" und mit event-on-update-reading bekomme ich einen Event bzgl. Temperatur EGAL welches Reading beim Dummy getriggert wird (wenn du dann zu viele Events bekommst, dann das userReadings weiter einschränken). Alles andere (readingList, event-on-change-reading auch für Temperatur) hat bei mir nichts bewirkt... Aber wie geschrieben: kein OW...

Habe allerdings kein OW im Einsatz...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Bartimaus

So, jetzt mal mit "event-update" statt "event-change" eingestellt, incl. Schwellenwert bei "temperature" (<- fürs FileLog) und alles funktioniert wie gewünscht. Merci vielmals.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

MadMax-FHEM

Na dann wunderbar! :)

Bitte den Thread dann als gelöst markieren, umbenennen des 1 Posts in beispielsweise [gelöst] FileLog nur mit geänderten Daten befüllen

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)