Hallo Zusammen,
ich habe folgenden DOIF gebaut:
Internals:
CFGFN
DEF ([BU.sysmon:"ram"])
## (setreading di_sysmon_userreading update 1)
(setreading di_sysmon_userreading update {(ReadingsTimestamp("di_sysmon_userreading","state","0"))})
NAME di_sysmon_userreading
NR 1727
NTFY_ORDER 50-di_sysmon_userreading
STATE deactivated
TYPE DOIF
Helper:
DBLOG:
ALO_cpu_SumUsed:
DBLogging:
TIME 1520956781.52946
VALUE 1.18
ALO_cpu_idle:
DBLogging:
TIME 1520956781.52946
VALUE 98.82
ALO_cpu_io:
DBLogging:
TIME 1520956781.52946
VALUE 0.20
ALO_cpu_irq:
DBLogging:
TIME 1520956781.52946
VALUE 0.00
ALO_cpu_nice:
DBLogging:
TIME 1520956781.52946
VALUE 0.00
ALO_cpu_sirq:
DBLogging:
TIME 1520956781.52946
VALUE 0.01
ALO_cpu_sys:
DBLogging:
TIME 1520956781.52946
VALUE 0.43
ALO_cpu_user:
DBLogging:
TIME 1520956781.52946
VALUE 0.54
ALO_cputemp_curr:
DBLogging:
TIME 1520956781.52946
VALUE 45.73
ALO_cputemp_max:
DBLogging:
TIME 1520956781.52946
VALUE 65.53
ALO_cputemp_min:
DBLogging:
TIME 1520956781.52946
VALUE 37.01
ALO_fsroot_availableMB:
DBLogging:
TIME 1520956781.52946
VALUE 2769
ALO_fsroot_percentused:
DBLogging:
TIME 1520956781.52946
VALUE 61
ALO_fsroot_totalMB:
DBLogging:
TIME 1520956781.52946
VALUE 7388
ALO_fsroot_usedMB:
DBLogging:
TIME 1520956781.52946
VALUE 4289
ALO_ram_free:
DBLogging:
TIME 1520956781.52946
VALUE 78.38
ALO_ram_percentused:
DBLogging:
TIME 1520956781.52946
VALUE 36.13
ALO_ram_total:
DBLogging:
TIME 1520956781.52946
VALUE 927.32
ALO_ram_used:
DBLogging:
TIME 1520956781.52946
VALUE 335.05
cmd:
DBLogging:
TIME 1520875946.05134
VALUE 0
mode:
DBLogging:
TIME 1520875946.05134
VALUE enabled
state:
DBLogging:
TIME 1520875946.05134
VALUE initialized
READINGS:
2018-03-13 16:59:41 ALO_cpu_SumUsed 1.18
2018-03-13 16:59:41 ALO_cpu_idle 98.82
2018-03-13 16:59:41 ALO_cpu_io 0.20
2018-03-13 16:59:41 ALO_cpu_irq 0.00
2018-03-13 16:59:41 ALO_cpu_nice 0.00
2018-03-13 16:59:41 ALO_cpu_sirq 0.01
2018-03-13 16:59:41 ALO_cpu_sys 0.43
2018-03-13 16:59:41 ALO_cpu_user 0.54
2018-03-13 16:59:41 ALO_cputemp_curr 45.73
2018-03-13 16:59:41 ALO_cputemp_max 65.53
2018-03-13 16:59:41 ALO_cputemp_min 37.01
2018-03-13 16:59:41 ALO_fsroot_availableMB 2769
2018-03-13 16:59:41 ALO_fsroot_percentused 61
2018-03-13 16:59:41 ALO_fsroot_totalMB 7388
2018-03-13 16:59:41 ALO_fsroot_usedMB 4289
2018-03-13 16:59:41 ALO_ram_free 78.38
2018-03-13 16:59:41 ALO_ram_percentused 36.13
2018-03-13 16:59:41 ALO_ram_total 927.32
2018-03-13 16:59:41 ALO_ram_used 335.05
2018-03-13 16:59:41 mode deactivated
2018-03-13 16:59:41 state deactivated
2018-03-13 16:59:12 update 2018-03-13 16:58:12
Regex:
condition:
do:
0:
helper:
uiState:
uiTable:
Attributes:
DbLogExclude .*
DbLogInclude ALO_cpu_SumUsed,ALO_cpu_idle,ALO_cpu_io,ALO_cpu_irq,ALO_cpu_nice,ALO_cpu_sirq,ALO_cpu_sys,ALO_cpu_user,ALO_cputemp_curr,ALO_cputemp_max,ALO_cputemp_min,ALO_fsroot_availableMB,ALO_fsroot_percentused,ALO_fsroot_totalMB,ALO_fsroot_usedMB,ALO_ram_free,ALO_ram_percentused,ALO_ram_total,ALO_ram_used
alias sysmon - Raspi Performance Werte fürDBLogging sammeln
checkReadingEvent 1
disable 1
do always
group Raspberry
room 00_Favoriten,96_Status
userReadings ALO_ram_total {my @b = split ' ',ReadingsVal('BU.sysmon','ram',0);;$b[1]},
ALO_ram_used {my @b = split ' ',ReadingsVal('BU.sysmon','ram',0);;$b[4]},
ALO_ram_percentused {my @b = split ' ',ReadingsVal('BU.sysmon','ram',0);;$b[6]},
ALO_ram_free {my @b = split ' ',ReadingsVal('BU.sysmon','ram',0);;$b[9]},
ALO_fsroot_totalMB {my @b = split ' ',ReadingsVal('BU.sysmon','fs_root',0);;$b[1]},
ALO_fsroot_usedMB {my @b = split ' ',ReadingsVal('BU.sysmon','fs_root',0);;$b[4]},
ALO_fsroot_percentused {my @b = split ' ',ReadingsVal('BU.sysmon','fs_root',0);;$b[6]},
ALO_fsroot_availableMB {my @b = split ' ',ReadingsVal('BU.sysmon','fs_root',0);;$b[9]},
ALO_cputemp_min {my @b = split ' ',ReadingsVal('BU.sysmon','cpu_temp_stat',0);;$b[0]},
ALO_cputemp_max {my @b = split ' ',ReadingsVal('BU.sysmon','cpu_temp_stat',0);;$b[1]},
ALO_cputemp_curr {my @b = split ' ',ReadingsVal('BU.sysmon','cpu_temp_stat',0);;$b[2]},
ALO_cpu_user {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[0]},
ALO_cpu_nice {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[1]},
ALO_cpu_sys {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[2]},
ALO_cpu_idle {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[3]},
ALO_cpu_io {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[4]},
ALO_cpu_irq {my @b = split ' ',ReadingsVal('BU.sysmon','stat_cpu_percent',0);;$b[5]},
ALO_cpu_sirq {my @b = split ' ',ReadingsVal('BU.sysmon','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)}
bei BU.sysmon habe ich das event-on-change-reding auf ram gesetzt.
Leider werden die Readings (fast immer) doppelt geschrieben.
Wo ist da mein Gedankenfehler?
Du hast keine beschränkenden Trigger für die userReadings angegeben.
Mh, sagt mir leider nichts.
Wo muss ich was angebrn?
Zitat von: Soc am 13 März 2018, 23:10:53
Mh, sagt mir leider nichts.
Wo muss ich was angebrn?
Steht in der Befehlsreferenz zu userReadings, https://commandref.fhem.de/
Danke für den Link.
Leider fehlt mir wohl das Wissen was ich wie ändern muss das die Logeinträge nur noch einmal geschrieben werden.
Kannst Du mir bitte schreiben was ich an meinen DOIF ändern muss?
Wenn Du das fehlende Wissen ergänzen möchtest, helfe ich Dir.
Zitat von: Ellert am 14 März 2018, 12:57:43
Wenn Du das fehlende Wissen ergänzen möchtest, helfe ich Dir.
Ok, gerne.
Da bin ich jetzt mal ganz Ohr. :-)
Das einzige was ich aus der commandref entnommen habe (wahrscheinlich liege ich da grotten falsch), das durch meine Abfrage
([BU.sysmon:"ram"]) selber ein Trigger ausgelöst wird.
Jenes kann man verhindern mit
([?BU.sysmon:"ram"]) (Fragezeiche = wird kein trigger ausgelöst).
Hi,
ganz falscher Dampfer (glaube ich), mit trigger ist gemeint das DOIF Modul wird nicht getriggert sondern nur der Wert wird abgefragt. Es geht nicht darum einen Trigger im System zu erzeugen.
Mir ist dein DOIF zu kompliziert und ich verstehe de Sinn gar nicht, ich habe den Thread jeden Tag zweimal gelesen.
Was Ellert meint (glaube ich) Deine userreadings sind falsch definiert, es ist gar kein DOIF Problem!
Aber auch dort sind mir deine userreadings einfach zu umfangreich. Ich empfehle Dir pick Dir eine Stelle raus, mach ein separates define und untersuche das.
Ein großes Problem löst sich leichter wenn man viele kleine draus macht! ;)
Gruß Otto
Hallo Otto,
da hast Du wahrscheinlich Recht.
Also was ich damit erreichen möchte ist folgendes:
Ich nehme ein Reading von sysmon auseinander (ist ein Textfesld mit vielen Infos z.B. für die CPU Auslastung) und stelle die einzelnen Werte wie "user/idle/io/sys/irq/sirq (Prozentangaben)" in jeweils einzelnen userReadings.
Diese benötige ich um ein Plot aufzubauen.
Als Input verwende ich für den Plot Sätze aus einer mySQL DB. Hier kann man leider im SVG nicht einen komplexen Logrecord (wie z.B. "user 0.34 sys 1.04 idle 98.56 ...") mit splitänlicher Funktion auseinander nehmen (was beim Filelogging mit Angabe eines offset im String funktioniert).
Sprich: Wenn im sysmon dieses besagte Reading aktuallisiert wird, möchte ich die einzelnen Werte entnehmen und als einzelne Readings in mein DBLog sichern.
In wie weit ein DOIF überhaupt dafür zu gebrauchen ist, kann man sicherlich hinterfragen.
Anfänglich hatte ich diese userReadings im sysmon selber eingebaut, was übrigens auch funktioniert hat (keine doppelten Einträge in der gleichen Sekunde).
Es gab dabei nur ein Problem.
Die Readings vom sysmon werden minütlich aktuallisiert und damit auch jede Minuten 19 Einträge in meine DBLog geschrieben. Was am Tag 27.000 Einträge ausgemacht hat.
Im sysmon kann man zwar das Interval je Bereich hoch setzen, aber einige generelle Readings werden trotzdem minütlich aktuallisiert und damit auch die userReadings in die DB geschrieben.
War jetzt ziemlich viel Text, aber ich hoffe damit das Problem darlegen zu können.
Was mir spontan noch als Idee einfällt (weil ich gerade in meinem Code an einer ähnlichen Ecke war)
[BU.sysmon:"ram"]
Zitatdefine di_garage DOIF ([remotecontrol:"on"]) (set garage on) DOELSEIF ([remotecontrol:"off"]) (set garage off)
In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der DOIF-Fall wird ausgeführt,
Mach mal Eventmonitor auf, Filter auf BU.sysmon.* und schau wie oft dort ram steht? Nur einmal?
Gruß Otto
Zitat von: Soc am 14 März 2018, 13:50:40
Ok, gerne.
Da bin ich jetzt mal ganz Ohr. :-)
Das einzige was ich aus der commandref entnommen habe (wahrscheinlich liege ich da grotten falsch), das durch meine Abfrage ([BU.sysmon:"ram"]) selber ein Trigger ausgelöst wird.
Jenes kann man verhindern mit ([?BU.sysmon:"ram"]) (Fragezeiche = wird kein trigger ausgelöst).
Wenn Du den Trigger im DOIF vehinderst, dann werden keine userReadings berechnet, also das Fragezeichen löst das Problem nicht.
ZitatIn wie weit ein DOIF überhaupt dafür zu gebrauchen ist, kann man sicherlich hinterfragen.
Das ist in der Tat ein berechtigter Einwand.
Die userReadings in Sysmon anzulegen war eine gute Idee. Es können auch weniger Logeinträge erzeugt werden, auch wenn einige Readings häufiger aktualisiert werden. Und genau dafür kann der einschränkende Trigger in userReading genutzt werden.
Wissen musst Du, wann userReadings berechnet werden, das hast Du bestimmt gelesen:
ZitatDiese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt
Und zusätzlich wird gesagt
ZitatFalls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Jedes berechnete Reading daher benötigt eine <trigger> Angabe, die genau zu einem Reading passt, das nur im langen Updateintervall aktualisiert wird.
Das Problem in Deinem DOIF ist, dass es vermutlich mehrere Events gibt. Auch hier könntest Du durch eine eindeutige <trigger> Angabe, z.B. cmd..1 die Berechnung nur einmal durchführen lassen.
Zitat von: Otto123 am 14 März 2018, 15:38:25
Was mir spontan noch als Idee einfällt (weil ich gerade in meinem Code an einer ähnlichen Ecke war)
[BU.sysmon:"ram"]Mach mal Eventmonitor auf, Filter auf BU.sysmon.* und schau wie oft dort ram steht? Nur einmal?
Der Event kommt wirklich nur 1 mal pro Minute (habe bei sysmon "event-on-update-reding ram" eingestellt.)
2018-03-14 17:08:07.294 SYSMON BU.sysmon ram: Total: 927.32 MB, Used: 246.59 MB, 26.59 %, Free: 241.95 MB
2018-03-14 17:09:07.299 SYSMON BU.sysmon ram: Total: 927.32 MB, Used: 246.56 MB, 26.59 %, Free: 241.95 MB
Zitat von: Ellert am 14 März 2018, 16:40:03
Das Problem in Deinem DOIF ist, dass es vermutlich mehrere Events gibt. Auch hier könntest Du durch eine eindeutige <trigger> Angabe, z.B. cmd..1 die Berechnung nur einmal durchführen lassen.
Durch die Angabe von event-on-update-reading auf "ram" kommt wirklich pro Minute nur ein Event. (siehe oben)
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)?
Interessant ist, dass selbst hier (userReadings in sysmon) doppelte Einträge in den Log geschrieben werden.
Und zwar mit einer Sekunde Unterschied.
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.
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.
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.
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 ichsysmon 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 %):
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 ATIch 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.
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.
Jetzt ist der Groschen gefallen. 8)
Danke für die Geduld und ich werde das heute Mittag mal umsetzen.
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.
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.
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]}
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