Hallo,
mein Sysmon gibt mir folgenden Status über den USB-Stick aus:
ZitatUSB-Stick: Total: 3700 MB, Used: 3171 MB, 91 %, Available: 323 MB at /media/usbstick
Wie müsste ein DOIF aussehen das auf die 91% anspricht?
Ich würde gerne ein Push setzen auf >90
Der Sysmon-Teil sieht so aus:
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_usb1 room Raspberry
So weit bin ich aktuell, aber wie komm ich genau an die %-Zahl heran?
define stick_voll DOIF ([usb-stick] < 90) (set Telegram message Der scheiss USB-Stick ist voll *g*)
Zitat von: accessburn am 08 Mai 2017, 09:35:02
Hallo,
mein Sysmon gibt mir folgenden Status über den USB-Stick aus:
ZitatUSB-Stick: Total: 3700 MB, Used: 3171 MB, 91 %, Available: 323 MB at /media/usbstick
Ist das der Text, der im Eventlog auftaucht oder nur, wenn du Sysmon aktiv aufrufst?
Das ist direkt die Ausgabe.
In der cfg hab ich das Label so definiert:
define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
Zitat von: accessburn am 08 Mai 2017, 09:35:02
Hallo,
mein Sysmon gibt mir folgenden Status über den USB-Stick aus:
Wie müsste ein DOIF aussehen das auf die 91% anspricht?
Ich würde gerne ein Push setzen auf >90
Der Sysmon-Teil sieht so aus:
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_usb1 room Raspberry
So weit bin ich aktuell, aber wie komm ich genau an die %-Zahl heran?
define stick_voll DOIF ([usb-stick] < 90) (set Telegram message Der scheiss USB-Stick ist voll *g*)
Der Filter könnte so aussehen
"(\d+) %"
Die genaue Syntax ist hier beschrieben: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
define stick_voll DOIF ([sysmon:fs_usb1:"(\d+) %"] < 90) (set Telegram message Der scheiss USB-Stick ist voll *g*)
attr stick_voll wait 86400
Macht das sinn? Auch das wait?
Wenn du die Nachricht erst 24 Stunden später bekommen möchte, dann macht es Sinn.
define stick_voll DOIF ([sysmon:fs_usb1:"(\d+) %"] > 90) (set Telegram message Der scheiss USB-Stick ist voll *g*)
attr stick_voll cmdpause 86400
attr stick_voll do always
Würde allerdings mehr Sinn machen, wenn man die Nachricht sofort haben möchte, jedoch frühstens 24 Stunden später noch einmal und auch nur wenn der Stick voller ist als 90%.
Achso, wait führt nicht erst das nächste mal in x Sekunden aus, sondern das ganze erst x Sekunden nach Zutreffen der Bedingung.
Okay, das wäre doof. Dann mach ich das lieber so wie du das sagst :-)
Danke für die Hilfe, wieder was gelernt.
Hier gibt es ein gutes Beispiel für DOIF
https://fhem.de/commandref_DE.html#DOIF_cmdpause (https://fhem.de/commandref_DE.html#DOIF_cmdpause)
Also trotz reboot, keine aktion. Kann ich mir anzeigen lassen was der Filter erkennt zur Kontrolle?
Zitatnternals:
DEF ([sysmon:fs_usb1:"(\d+) %"] > 90) (set Telegram message Der scheiss USB-Stick ist voll *g*)
NAME stick_voll
NR 464
NTFY_ORDER 50-stick_voll
STATE initialize
TYPE DOIF
Readings:
2017-05-08 14:11:42 Device sysmon
2017-05-08 14:11:42 e_sysmon_fs_usb1 Total: 3700 MB, Used: 3171 MB, 91 %, Available: 323 MB at /media/usbstick
2017-05-08 14:07:49 mode enable
2017-05-08 14:06:02 state initialize
Condition:
0 ReadingValDoIf($hash,'sysmon','fs_usb1','','(\d+) %') > 90
Devices:
0 sysmon
all sysmon
Do:
0:
0 set Telegram message Der scheiss USB-Stick ist voll *g*
1:
Helper:
event cpu_temp_avg: 47.0,cpu_temp: 46.54,ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB,eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB,loadavg: 0.10 0.15 0.14
globalinit 1
last_timer 0
sleeptimer -1
timerdev sysmon
timerevent cpu_temp_avg: 47.0,cpu_temp: 46.54,ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB,eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB,loadavg: 0.10 0.15 0.14
triggerDev sysmon
timerevents:
cpu_temp_avg: 47.0
cpu_temp: 46.54
ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB
eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB
loadavg: 0.10 0.15 0.14
timereventsState:
cpu_temp_avg: 47.0
cpu_temp: 46.54
ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB
eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB
loadavg: 0.10 0.15 0.14
triggerEvents:
cpu_temp_avg: 47.0
cpu_temp: 46.54
ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB
eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB
loadavg: 0.10 0.15 0.14
triggerEventsState:
cpu_temp_avg: 47.0
cpu_temp: 46.54
ram: Total: 862.50 MB, Used: 199.28 MB, 23.11 %, Free: 663.22 MB
eth0_diff: RX: 0.05 MB, TX: 0.08 MB, Total: 0.13 MB
loadavg: 0.10 0.15 0.14
Internals:
Itimer:
Readings:
0 sysmon:fs_usb1
all sysmon:fs_usb1
Regexp:
0:
All:
State:
State:
Trigger:
Attributes:
cmdpause 86400
do always
EDIT:
Habe versucht in den Text das Reading in telegram ausgeben zu lassen. Ohne den Filter kommt es an, mit dem Filter wird der rohe Text ausgegeben: [sysmon:fs_usb1:"(\d+) %"]
Für die Befehlszeile
{ReadingsVal("sysmon","fs_usb1",0) =~ '(\d+) %';;return $1}
"" Anführungszeichen funktionieren bei mir in der Befehlszeile nicht, eigentlich sollten sie.
ZitatAlso trotz reboot, keine aktion. Kann ich mir anzeigen lassen was der Filter erkennt zur Kontrolle?
Arbeitest du denn mit der aktuellen Version von DOIF?
Zitat von: Damian am 08 Mai 2017, 18:46:27
Arbeitest du denn mit der aktuellen Version von DOIF?
Aber sowas von :P
Iternals:
DEF ([test_d:state:"(\d+) %"] > 90) (set bla [test_d:state:"(\d+) %"])
NAME di_bla
NR 497
NTFY_ORDER 50-di_bla
STATE cmd_1
TYPE DOIF
Readings:
2017-05-08 21:48:38 Device test_d
2017-05-08 21:48:38 cmd 1
2017-05-08 21:48:38 cmd_event test_d
2017-05-08 21:48:38 cmd_nr 1
2017-05-08 21:48:38 e_test_d_state Total: 3700 MB, Used: 3171 MB, 91 %, Available: 323 MB at /media/usbstick
2017-05-08 21:48:38 error set bla 91: Please define bla first
2017-05-08 21:48:38 state cmd_1
und
Internals:
NAME test_d
NR 480
STATE Total: 3700 MB, Used: 3171 MB, 91 %, Available: 323 MB at /media/usbstick
TYPE dummy
ausgelöst mit trigger test_d
funktioniert wie definiert.
Jedoch die eigentliche Funktion überhaupt nicht, er spricht nicht an und löst keine Message aus :'(
Zitat von: accessburn am 09 Mai 2017, 12:47:02
Jedoch die eigentliche Funktion überhaupt nicht, er spricht nicht an und löst keine Message aus :'(
Dann gibt es keine Events dazu.