[gelöst] DOIF - Readings werden doppelt ins DBLog geschrieben

Begonnen von Soc, 13 März 2018, 17:48:04

Vorheriges Thema - Nächstes Thema

Ellert

Zitat von: Soc am 14 März 2018, 17:32:28
Ich habe nun die userReadings wieder in den sysmon verbannt.

Somit sieht das device wie folgt aus:


Internals:
   DEF        1 1 1 60
   INTERVAL_BASE 60
   INTERVAL_MULTIPLIERS 1 1 1 60
   MODE       local
   NAME       BU.sysmon
   NR         51
   STATE      Initialized
   TYPE       SYSMON
   READINGS:
     2018-03-14 17:27:07   ALO_cpu_SumUsed 1.15
     2018-03-14 17:27:07   ALO_cpu_idle    98.85
     2018-03-14 17:27:07   ALO_cpu_io      0.12
     2018-03-14 17:27:07   ALO_cpu_irq     0.00
     2018-03-14 17:27:07   ALO_cpu_nice    0.00
     2018-03-14 17:27:07   ALO_cpu_sirq    0.00
     2018-03-14 17:27:07   ALO_cpu_sys     0.40
     2018-03-14 17:27:07   ALO_cpu_user    0.63
     2018-03-14 17:27:07   ALO_cputemp_curr 45.58
     2018-03-14 17:27:07   ALO_cputemp_max 65.53
     2018-03-14 17:27:07   ALO_cputemp_min 37.01
     2018-03-14 17:27:07   ALO_fsroot_availableMB 2815
     2018-03-14 17:27:07   ALO_fsroot_percentused 61
     2018-03-14 17:27:07   ALO_fsroot_totalMB 7388
     2018-03-14 17:27:07   ALO_fsroot_usedMB 4242
     2018-03-14 17:27:07   ALO_ram_free    211.07
     2018-03-14 17:27:07   ALO_ram_percentused 27.84
     2018-03-14 17:27:07   ALO_ram_total   927.32
     2018-03-14 17:27:07   ALO_ram_used    258.15
     2018-03-14 17:27:07   cpu0_freq       600
     2018-03-14 17:27:07   cpu0_freq_stat  600.00 1200.00 635.65
     2018-03-14 17:27:07   cpu0_idle_stat  -4.32 100.14 97.97
     2018-03-14 17:27:07   cpu1_freq       600
     2018-03-14 17:27:07   cpu1_freq_stat  600.00 1200.00 635.65
     2018-03-14 17:27:07   cpu1_idle_stat  5.93 110.35 99.38
     2018-03-14 17:27:07   cpu2_freq       600
     2018-03-14 17:27:07   cpu2_freq_stat  600.00 1200.00 635.65
     2018-03-14 17:27:07   cpu2_idle_stat  -26.26 100.09 97.12
     2018-03-14 17:27:07   cpu3_freq       600
     2018-03-14 17:27:07   cpu3_freq_stat  600.00 1200.00 635.65
     2018-03-14 17:27:07   cpu3_idle_stat  9.10 102.72 99.42
     2018-03-13 17:33:56   cpu_bogomips    38.40
     2018-03-14 17:27:07   cpu_core_count  4
     2018-03-14 17:27:07   cpu_freq        600
     2018-03-14 17:27:07   cpu_freq_stat   600.00 1200.00 635.65
     2018-03-14 17:27:07   cpu_idle_stat   30.23 129.86 98.47
     2018-03-13 17:33:56   cpu_model_name  ARMv7 Processor rev 4 (v7l)
     2018-03-14 17:27:07   cpu_temp        45.62
     2018-03-14 17:27:07   cpu_temp_avg    45.5
     2018-03-14 17:27:07   cpu_temp_stat   37.01 65.53 45.58
     2018-03-14 17:27:07   eth0            RX: 68.82 MB, TX: 13.00 MB, Total: 81.82 MB
     2018-03-14 17:27:07   eth0_diff       RX: 0.04 MB, TX: 0.07 MB, Total: 0.11 MB
     2018-03-14 17:27:07   eth0_ip         192.168.50.201
     2018-03-14 17:27:07   eth0_rx         72158922
     2018-03-14 17:27:07   eth0_speed      100
     2018-03-14 17:27:07   eth0_tx         13636497
     2018-03-14 17:27:07   fhemstarttime   1520958779
     2018-03-14 17:27:07   fhemstarttime_text 13.03.2018 17:32:59
     2018-03-14 17:27:07   fhemuptime      86048
     2018-03-14 17:27:07   fhemuptime_text 0 days, 23 hours, 54 minutes
     2018-03-14 17:00:07   fs_boot         Total: 42 MB, Used: 21 MB, 51 %, Available: 21 MB at /boot
     2018-03-14 17:00:07   fs_root         Total: 7388 MB, Used: 4242 MB, 61 %, Available: 2815 MB at /
     2018-03-14 17:00:07   fs_usb1         Total: 0 MB, Used: 0 MB, 0 %, Available: 0 MB at //media/RaspiBackup (not available)
     2018-03-14 17:27:07   idletime        84827 98.56 %
     2018-03-14 17:27:07   idletime_text   0 days, 23 hours, 33 minutes (98.56 %)
     2018-03-14 17:27:07   loadavg         0.17 0.12 0.03
     2018-03-13 17:33:56   perl_version    v5.24.1
     2018-03-14 17:27:07   ram             Total: 927.32 MB, Used: 258.15 MB, 27.84 %, Free: 211.07 MB
     2018-02-21 16:49:15   ram_free        67.66
     2018-02-21 16:49:15   ram_total       927.32
     2018-02-21 16:49:15   ram_used        355.59
     2018-03-14 17:27:07   ram_used_stat   -1053.63 498.07 253.93
     2018-03-14 17:27:07   starttime       1520958760
     2018-03-14 17:27:07   starttime_text  13.03.2018 17:32:40
     2018-03-14 17:27:07   stat_cpu        215485 5697 146881 33931165 57094 0 2683
     2018-03-14 17:27:07   stat_cpu0       97548 1149 45805 8393232 19099 0 2334
     2018-03-14 17:27:07   stat_cpu0_diff  8 0 22 5910 26 0 1
     2018-03-14 17:27:07   stat_cpu0_percent 0.13 0.00 0.37 99.04 0.44 0.00 0.02
     2018-03-14 17:27:07   stat_cpu0_text  user: 0.13 %, nice: 0.00 %, sys: 0.37 %, idle: 99.04 %, io: 0.44 %, irq: 0.00 %, sirq: 0.02 %
     2018-03-14 17:27:07   stat_cpu1       40105 1810 38939 8507024 13968 0 97
     2018-03-14 17:27:07   stat_cpu1_diff  7 0 22 5969 0 0 0
     2018-03-14 17:27:07   stat_cpu1_percent 0.12 0.00 0.37 99.52 0.00 0.00 0.00
     2018-03-14 17:27:07   stat_cpu1_text  user: 0.12 %, nice: 0.00 %, sys: 0.37 %, idle: 99.52 %, io: 0.00 %, irq: 0.00 %, sirq: 0.00 %
     2018-03-14 17:27:07   stat_cpu2       33775 1243 27944 8525744 10657 0 160
     2018-03-14 17:27:07   stat_cpu2_diff  130 0 29 5831 2 0 0
     2018-03-14 17:27:07   stat_cpu2_percent 2.17 0.00 0.48 97.31 0.03 0.00 0.00
     2018-03-14 17:27:07   stat_cpu2_text  user: 2.17 %, nice: 0.00 %, sys: 0.48 %, idle: 97.31 %, io: 0.03 %, irq: 0.00 %, sirq: 0.00 %
     2018-03-14 17:27:07   stat_cpu3       44057 1495 34193 8505165 13370 0 92
     2018-03-14 17:27:07   stat_cpu3_diff  6 0 22 5968 0 0 0
     2018-03-14 17:27:07   stat_cpu3_percent 0.10 0.00 0.37 99.53 0.00 0.00 0.00
     2018-03-14 17:27:07   stat_cpu3_text  user: 0.10 %, nice: 0.00 %, sys: 0.37 %, idle: 99.53 %, io: 0.00 %, irq: 0.00 %, sirq: 0.00 %
     2018-03-14 17:27:07   stat_cpu_diff   151 0 95 23678 28 0 1
     2018-03-14 17:27:07   stat_cpu_percent 0.63 0.00 0.40 98.85 0.12 0.00 0.00
     2018-03-14 17:27:07   stat_cpu_text   user: 0.63 %, nice: 0.00 %, sys: 0.40 %, idle: 98.85 %, io: 0.12 %, irq: 0.00 %, sirq: 0.00 %
     2018-03-14 17:27:07   swap            Total: 100.00 MB, Used: 0.00 MB,  0.00 %, Free: 100.00 MB
     2018-03-14 17:27:07   swap_used_stat  0.00 87.81 0.01
     2018-03-14 17:27:07   uptime          86066
     2018-03-14 17:27:07   uptime_text     0 days, 23 hours, 54 minutes
     2018-03-14 17:27:07   wlan0           RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB
     2018-03-14 17:27:07   wlan0_diff      RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB
     2018-03-14 17:27:07   wlan0_rx        0
     2018-03-14 17:27:07   wlan0_tx        0
   helper:
     sys_cpu0_freq 1
     sys_cpu0_temp 0
     sys_cpu1_freq 1
     sys_cpu1_temp 0
     sys_cpu2_freq 1
     sys_cpu2_temp 0
     sys_cpu3_freq 1
     sys_cpu3_temp 0
     sys_cpu4_freq 0
     sys_cpu4_temp 0
     sys_cpu5_freq 0
     sys_cpu5_temp 0
     sys_cpu6_freq 0
     sys_cpu6_temp 0
     sys_cpu7_freq 0
     sys_cpu7_temp 0
     sys_cpu_freq_rpi_bbb 1
     sys_cpu_temp_rpi 1
     sys_fb     0
     sys_power_ac 0
     sys_power_bat 0
     sys_power_usb 0
     u_first_mark 1
     cur_readings_map:
       cpu0_freq  CPU frequency (core 0)
       cpu0_freq_stat CPU frequency (core 0) stat
       cpu0_idle_stat CPU0 min/max/avg (idle)
       cpu1_freq  CPU frequency (core 1)
       cpu1_freq_stat CPU frequency (core 1) stat
       cpu1_idle_stat CPU1 min/max/avg (idle)
       cpu2_freq  CPU frequency (core 2)
       cpu2_freq_stat CPU frequency (core 2) stat
       cpu2_idle_stat CPU2 min/max/avg (idle)
       cpu3_freq  CPU frequency (core 3)
       cpu3_freq_stat CPU frequency (core 3) stat
       cpu3_idle_stat CPU3 min/max/avg (idle)
       cpu4_idle_stat CPU4 min/max/avg (idle)
       cpu5_idle_stat CPU5 min/max/avg (idle)
       cpu6_idle_stat CPU6 min/max/avg (idle)
       cpu7_idle_stat CPU7 min/max/avg (idle)
       cpu_bogomips BogoMIPS
       cpu_core_count Number of CPU cores
       cpu_freq   CPU frequency
       cpu_freq_stat CPU frequency stat
       cpu_idle_stat CPU min/max/avg (idle)
       cpu_model_name CPU model name
       cpu_temp   CPU temperature
       cpu_temp_avg Average CPU temperature
       cpu_temp_stat CPU temperature stat
       date       Date
       eth0       Ethernet
       eth0_diff  Ethernet (diff)
       eth0_ip    Ethernet (IP)
       eth0_ip6   Ethernet (IP6)
       eth0_rx    Ethernet (RX)
       eth0_speed Ethernet (speed)
       eth0_tx    Ethernet (TX)
       fhemstarttime Fhem start time
       fhemstarttime_text Fhem start time
       fhemuptime System up time
       fhemuptime_text FHEM up time
       fs_boot    Filesystem /boot
       fs_boot_free Filesystem /boot (free)
       fs_boot_used Filesystem /boot (used)
       fs_boot_used_percent Filesystem /boot (used %)
       fs_root    Root
       fs_root_free Root (free)
       fs_root_used Root (used)
       fs_root_used_percent Root (used %)
       fs_usb1    USB-Stick
       fs_usb1_free USB-Stick (free)
       fs_usb1_used USB-Stick (used)
       fs_usb1_used_percent USB-Stick (used %)
       idletime   Idle time
       idletime_text Idle time
       io_sda     TEST
       io_sda_diff TEST
       io_sda_raw TEST
       loadavg    Load average
       loadavg_1  Load average 1
       loadavg_15 Load average 15
       loadavg_5  Load average 5
       perl_version Perl Version
       ram        RAM
       ram_free   RAM free
       ram_free_percent RAM free %
       ram_total  RAM total
       ram_used   RAM used
       ram_used_stat RAM used stat
       starttime  System start time
       starttime_text System start time
       stat_cpu   CPU statistics
       stat_cpu0  CPU0 statistics
       stat_cpu0_diff CPU0 statistics (diff)
       stat_cpu0_percent CPU0 statistics (diff, percent)
       stat_cpu0_text CPU0 statistics (text)
       stat_cpu1  CPU1 statistics
       stat_cpu1_diff CPU1 statistics (diff)
       stat_cpu1_percent CPU1 statistics (diff, percent)
       stat_cpu1_text CPU1 statistics (text)
       stat_cpu2  CPU2 statistics
       stat_cpu2_diff CPU2 statistics (diff)
       stat_cpu2_percent CPU2 statistics (diff, percent)
       stat_cpu2_text CPU2 statistics (text)
       stat_cpu3  CPU3 statistics
       stat_cpu3_diff CPU3 statistics (diff)
       stat_cpu3_percent CPU3 statistics (diff, percent)
       stat_cpu3_text CPU3 statistics (text)
       stat_cpu4  CPU4 statistics
       stat_cpu4_diff CPU4 statistics (diff)
       stat_cpu4_percent CPU4 statistics (diff, percent)
       stat_cpu4_text CPU4 statistics (text)
       stat_cpu5  CPU5 statistics
       stat_cpu5_diff CPU5 statistics (diff)
       stat_cpu5_percent CPU5 statistics (diff, percent)
       stat_cpu5_text CPU5 statistics (text)
       stat_cpu6  CPU6 statistics
       stat_cpu6_diff CPU6 statistics (diff)
       stat_cpu6_percent CPU6 statistics (diff, percent)
       stat_cpu6_text CPU6 statistics (text)
       stat_cpu7  CPU7 statistics
       stat_cpu7_diff CPU7 statistics (diff)
       stat_cpu7_percent CPU7 statistics (diff, percent)
       stat_cpu7_text CPU7 statistics (text)
       stat_cpu_diff CPU statistics (diff)
       stat_cpu_idle_percent CPU statistics idle %
       stat_cpu_io_percent CPU statistics io %
       stat_cpu_irq_percent CPU statistics irq %
       stat_cpu_nice_percent CPU statistics nice %
       stat_cpu_percent CPU statistics (diff, percent)
       stat_cpu_sirq_percent CPU statistics sirq %
       stat_cpu_sys_percent CPU statistics sys %
       stat_cpu_text CPU statistics (text)
       stat_cpu_user_percent CPU statistics user %
       swap       swap
       swap_free  swap free
       swap_total swap total
       swap_used  swap used
       swap_used_percent swap used %
       swap_used_stat swap used stat
       uptime     System up time
       uptime_text System up time
       wlan0      WiFi
       wlan0_diff WiFi (diff)
       wlan0_ip   WiFi (IP)
       wlan0_ip6  WiFi (IP6)
       wlan0_rx   WiFi (RX)
       wlan0_speed WiFi (speed)
       wlan0_tx   WiFi (TX)
     excludes:
Attributes:
   DbLogExclude .*
   filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1://media/RaspiBackup:USB-Stick
   network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
   room       30_Buero,96_Status
   userReadings ALO_ram_total {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]},
ALO_ram_used {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[4]},
ALO_ram_percentused {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[6]},
ALO_ram_free {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[9]},
ALO_fsroot_totalMB {my @b = split ' ',ReadingsVal($name,'fs_root',0);;$b[1]},
ALO_fsroot_usedMB {my @b = split ' ',ReadingsVal($name,'fs_root',0);;$b[4]},
ALO_fsroot_percentused {my @b = split ' ',ReadingsVal($name,'fs_root',0);;$b[6]},
ALO_fsroot_availableMB {my @b = split ' ',ReadingsVal($name,'fs_root',0);;$b[9]},
ALO_cputemp_min {my @b = split ' ',ReadingsVal($name,'cpu_temp_stat',0);;$b[0]},
ALO_cputemp_max {my @b = split ' ',ReadingsVal($name,'cpu_temp_stat',0);;$b[1]},
ALO_cputemp_curr {my @b = split ' ',ReadingsVal($name,'cpu_temp_stat',0);;$b[2]},
ALO_cpu_user {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[0]},
ALO_cpu_nice {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[1]},
ALO_cpu_sys {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[2]},
ALO_cpu_idle {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[3]},
ALO_cpu_io {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[4]},
ALO_cpu_irq {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[5]},
ALO_cpu_sirq {my @b = split ' ',ReadingsVal($name,'stat_cpu_percent',0);;$b[6]},
ALO_cpu_SumUsed {ReadingsVal($name,'ALO_cpu_user',0)+ReadingsVal($name,'ALO_cpu_nice',0)+ReadingsVal($name,'ALO_cpu_sys',0)+ReadingsVal($name,'ALO_cpu_io',0)+ReadingsVal($name,'ALO_cpu_irq',0)+ReadingsVal($name,'ALO_cpu_sirq',0)}


Mit der Anpassung der Definition (1 1 1 60) ändere ich den Multiplikator von Intervall (INTERVAL_BASE steht auf 60 Sekunden).
Wenn ich alle auf 60 stelle werden die userReadings trotzdem aktualisiert da andere Reading von der neuen Zeitspanne ausgenommen werden.
Sobald ich meine readings mit in DBLogInclude nehme, landen sie dann trotzdem jede Minute im Log.

Wohin soll ich das Thema verschieben (ist ja kein DOIF Problem mehr)?


userReadings mit Trigger werden so angelegt:
Zitat<reading>[:<trigger>] [<modifier>] { <perl code> }
ZitatuserReadings ALO_ram_total {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]}
hier und bei den anderen userReadings sehe ich den beschränkenden Trigger immer noch nicht. Klar, dass immer noch alle 60 s aktualisiert wird.
ZitatuserReadings ALO_ram_total:<regexp auf ein stündlich aktualisierendes Reading> {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]}

ZitatWohin soll ich das Thema verschieben (ist ja kein DOIF Problem mehr)?

Steht dazu nichts in der Maintainer.txt?

ZitatDurch die Angabe von event-on-update-reading auf "ram" kommt wirklich pro Minute nur ein Event. (siehe oben)
Dieses Ereignis bewirkt nicht die Berechnung der userReadings, sondern die Events die DOIF erzeugt. Eines wenn state sich ändert und ein anderes Ereignis, wenn update aktualisiert wird.

Soc

Danke für die aufwendige Erklärung.
Ich muss gestehen das ich es immer noch nicht verstanden habe und versuche mich im Forum schlauer zu machen.
Leider bisher ohne Erfolg.  :'(

Kann mir jemand zu meiner Problematik ein fertiges userReading posten, damit ich es auch verstehe?
Möchte aber auch nicht nerven... also nur wenn jemand die Nerven hat mir es näher zu bringen anhand eines Beispiels.

Ellert

Was genau hast Du nicht verstanden, beschreibe es.

Ich verwende Sysmon nicht, daher kann ich Dir nicht sagen auf welches Reading Du triggern musst. Das musst Du schon selbst herausfinden.

Soc

Verstanden habe ich nicht wie ich den trigger verwenden muss.

ZitatuserReadings ALO_ram_total:<regexp auf ein stündlich aktualisierendes Reading> {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]}

Ich versuche mal zu erklären was ich machen möchte, wie ich auf userReadings gekommen bin und was sysmon eigentlich nicht macht.

Was brauche ich
sysmon ist ein Modul, welches mir in regelmässigen Abständen Readings zur Verfügung stellt (wie z.B. CPU-Auslastung, RAM-Verwendung, Filesystem Verwendung, etc.), welche standartmässig jede Minute aktualisiert werden.
Diese Readings möchte ich in einer Kurve als Plot darstellen.

Dazu gehört z.B. bei der CPU die Werte (Angabe in %):

  • idle
  • io
  • irq
  • sirq
  • nice
  • sys
  • user
Diese Werte möchte ich in EINEN Graph als einzelnen Kurven darstellen, so das ich einen Gesamtüberblick der CPU Auslastung über den Tag hinweg sehe.

Was ist das Problem bei sysmon:

Für die oben genannten Werte (sowie auch für die Gesamt Prozentzahl der aktuell verwendeten CPU Auslastung (Summe der oben genannten Werte muss selber errechnent werden)) gibt es leider keine einzelnen Readings im sysmon, sondern nur ein Reading aus dem ich die einzelnen Werte entnehmen muss.
Somit kam ich auf die Idee im sysmon device selber userReadings zu erstellen (Bin kein Fan von vielen Dummy Devices), welche die einzelnen Werte mit split aus den EINEN sysmon Reading entnimmt.

Was ist das Problem beim SVG (Datenbasis DBLogging):

Die ganzen userReadings würde ich nicht benötigen wenn ich den Plot auf Basis eines Filelogs (für sysmon) erstellen würde.
Bei Filelog kann ich im SVG selber Teile eines Reading extrahieren.
Dieses geht leider nicht mehr wenn ich auf DBLogging umgestellt habe.
Somit muss ich einzelne Readings für jeden darzustellenden Wert haben.

Was habe ich nun anfänglich umgesetzt:


  • Extrahieren der einzelnen Werte aus einen sysmon reading via userReading (split auf sysmon reading) im sysmon device selber - ok
  • Loggen der userReadings mit der Angabe der einzelnen userReadings im DbLogInclude Attribute - ok

Wieso bin ich dann auf ein DOIF gekommen:

sysmon aktualisiert seine Readings in einen zu definierbaren Interval (Default jede Minute) und damit werden auch die userReadings aktualisiert.
Dieses Interval für meine userReadings war mir dann doch zu klein, da ich sonst bei 19 userReadings am Tag auf die stolze Summe von 27.360 DBLog Einträge kommen würde.

sysmon gibt einen die Möglichkeit die Intervalzeit für Gruppen von Readings zu setzen. Ich habe diese Intervalzeiten für die Gruppe von readings welche ich verwende dann auf 10 Minuten gesetzt.
Soweit, so gut.
Die sysmon Readings welche ich verwende wurden dann wirklich nur alle 10 Minuten aktualisiert, was aber das Interval zum schreiben der userReadings in die DBLog nicht beeinflusst hat.
Die userReadings wurden weiterhin jede Minute aktualisiert und ins DBLog geschrieben.
Und warum ist das so? Weil sysmon grundsätzlich seinen Status minütlich aktualisiert und damit auch das schreiben der userReadings in das DBLogging ausgelöst wird.

Somit bin ich auf die Idee gekommen ein DOIF zu verwenden, welches auf nur ein sysmon Reading reagiert wenn der Wert aktualisiert wird ("att sysmon event-on-update-reading ram" im sysmon device).
Tritt dieser Trigger ein, sollen meine userReadings (habe sie vom sysmon device in das DOIF verlagert) neu gefüllt und in die DBLog gestellt werden. 

Was bringt mir das im Gegensatz zu der vorherigen Lösung?
Das Intervall welches ich im sysmon beeinflussen kann (hier das Reading ram) steuert dann mein DOIF und damit auch das Intervall wie oft meine userReadings in DBLog geschrieben werden.

Und dann kam das Folgeproblem:

Aus mir nicht nachvollziehbaren Gründen, wurde das schreiben der userReadings in das DBLog doppelt ausgeführt.
Es sieht für mich so aus, als ob der DOIF zweimal direkt hintereinander getriggert wird.

Die bessere Lösung ist vielleicht ein AT

Ich werde nun doch ein Dummy anlegen.
Dort die einzelnen Readings initialisieren und via AT die Werte alle x Minuten aus den sysmon Readings extrahieren und mit setreading im dummy aktualisieren.

So, nun habe ich das Problem beschrieben und versucht zu erklären warum ich den Zusammenhang mit der trigger bei userReadings nicht vertanden habe.
In meiner naiven Vorstellung hatte ich darauf gehofft das man mir anhand meines Coding den Fehler zeigt und das "richtige" Coding gleicht mitliefert.

Ellert

ZitatDie sysmon Readings welche ich verwende wurden dann wirklich nur alle 10 Minuten aktualisiert, was aber das Interval zum schreiben der userReadings in die DBLog nicht beeinflusst hat.
Die userReadings wurden weiterhin jede Minute aktualisiert und ins DBLog geschrieben.

Das habe ich verstanden und
Die userReadings wurden weiterhin jede Minute aktualisiert und ins DBLog geschrieben.
geschieht deshalb, weil userReadings bei der Aktualisierung eines beliebigen Readings neu berechnet und aktualisiert werden.

Deshalb musst Du einen Trigger in jedes userReading einbauen. Dieser Trigger muss auf ein eindeutigen Readingsnamen matchen, der sich nur alle 10 min aktualisiert, dann sollte auch nur alle 10 min berechnet und geloggt werden.

Konkret sollte das für das userReading ALO_ram_total so aussehen:
ZitatuserReadings ALO_ram_total:<Readingname eines Readings, dass sich alle 10 min aktualisiert>.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]}

Du musst jetzt nur noch <Readingname eines Readings, dass sich alle 10 min aktualisiert> durch den Readingsnamen ersetzen.

Den eben beschriebenen Trigger musst Du in allen berechneten Readings ergänzen:
ZitatuserReadings ALO_ram_total:<Readingname eines Readings, dass sich alle 10 min aktualisiert>.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]},
ALO_ram_used:<Readingname eines Readings, dass sich alle 10 min aktualisiert>.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[4]},
ALO_ram_percentused:<Readingname eines Readings, dass sich alle 10 min aktualisiert>.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[6]},
ALO_ram_free:<Readingname eines Readings, dass sich alle 10 min aktualisiert>.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[9]},

usw.

Den Readingnamen aus der Gruppe, die alle 10 min aktualisiert, musst Du selbst herausfinden, da ich nicht weiss welche Namen zu welcher Gruppe gehören.

Wenn das nicht funktioniert kümmern wir uns um das DOIF.

Soc

Jetzt ist der Groschen gefallen.  8)
Danke für die Geduld und ich werde das heute Mittag mal umsetzen.

Ellert

Ergänzend hierzu:
ZitatBei Filelog kann ich im SVG selber Teile eines Reading extrahieren.
Dieses geht leider nicht mehr wenn ich auf DBLogging umgestellt habe.
Das sollte trotz der Umstellung möglich sein, siehe https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen#.40fld

In Deinem Fall könntest Du in der gplot-Datei mit $val=~/beginnstring(wertregexp)endestring/;$1 arbeiten, um die Werte zu extrahieren.

Soc

Das kann natürlich möglich sein, aber ich verwende ausschließlich den Gplot-Editor in der Web-GUI, da ich bei Änderungen des Files jedesmal wenn ich den Plot online ergänzen/ändern möchte (mit anschließenden write-gplot) mir diese Anpassungen zerschiesse.
Trotzdem Danke für den Tipp.

Ellert

Zitat von: Soc am 15 März 2018, 13:19:06
Das kann natürlich möglich sein, aber ich verwende ausschließlich den Gplot-Editor in der Web-GUI, da ich bei Änderungen des Files jedesmal wenn ich den Plot online ergänzen/ändern möchte (mit anschließenden write-gplot) mir diese Anpassungen zerschiesse.
Trotzdem Danke für den Tipp.
Über das Attribut plotReplace der SVG-Instanz sollten sich auch Anpassungen realisieren lassen, z.B.
<name>={(split(" ",$data{currval1}))[1]}

Soc

Jetzt hat es funktioniert.
Ich habe auf ein Reading verwiesen, welches ich vom Intervall her auf 2 Minuten gesetzt habe.

ALO_ram_total:ram.* {my @b = split ' ',ReadingsVal($name,'ram',0);;$b[1]}

Und siehe da, jetzt werden die userReadings erst alle 2 Minuten nur berechnet.

Danke an alle und natürlich für Eure Geduld.  :D :D :D