Reading splitten und daraufhin aktionen ausführen

Begonnen von abc2006, 13 Dezember 2016, 02:05:23

Vorheriges Thema - Nächstes Thema

abc2006

Hi,
ich habe mir ein Sysmon angelegt. Dieses liefert mir ein reading:

Total: 234603 MB, Used: 16602 MB, 8 %, Available: 206062 MB at /

Was ich will:

Zweimal am Tag (09:00 und 18:00 Uhr eine Info, wieviel Platz frei ist)
Wenn freier Platz unter 20% (also belegt über 80), dann möchte ich (halb)stündlich genervt werden, bis ich mich dazu aufgerafft habe, den Speicher wieder zu räumen.

Was ich bereits habe:

a)
ein DOIF, funktioniert. Was ich nicht hinbekommen habe, sind die unterschiedlichen sendeintervalle:
ZitatInternals:
   CFGFN
   DEF        ([+:01])({
##my $var = "Total: 234603 MB, Used: 16596 MB, 8 %, Available: 206068 MB at /";
##my $var = ReadingsVal("fhem_sysmon","root",0);;
##$var =~ /.*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*/;;

ReadingsVal("fhem_sysmon","root",0) =~ /.*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*/;;
##printf ("$var\n");
##printf ("$1\n");
##printf ("$2\n");
if ($2 < 5){
   fhem("set remotebot message $1 MB benutzt, das entspricht einer Auslastung von $2 %, aber $3 MB sind noch frei");;
}else {
   fhem("set remotebot message $1 MB benutzt, das entspricht bereits einer Auslastung von $2 %! Es sind nur noch $3 MB frei");;
}


})
   NAME       DF_SYSMON
   NR         73307
   NTFY_ORDER 50-DF_SYSMON
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-13 01:38:00   cmd             1
     2016-12-13 01:38:00   cmd_event       timer_1
     2016-12-13 01:38:00   cmd_nr          1
     2016-12-13 01:38:00   state           cmd_1
     2016-12-13 02:01:00   timer_1_c1      13.12.2016 02:02:00
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
   Days:
   Devices:
   Do:
     0:
       0          {     ReadingsVal("fhem_sysmon","root",0) =~ /.*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*/;;    if ($2 < 5){    fhem("set remotebot message $1 MB benutzt, das entspricht einer Auslastung von $2 %, aber $3 MB sind noch frei");;    fhem(setreading fhem_sysmon fs_root $2) }else {    fhem("set remotebot message $1 MB benutzt, das entspricht bereits einer Auslastung von $2 %! Es sind nur noch $3 MB frei");; }   }
   Helper:
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev
     timerevent timer_1
     timereventsState
     triggerDev
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   Internals:
   Interval:
   Itimer:
   Localtime:
     0          1481590920
   Readings:
   Realtime:
     0          02:02:00
   Regexp:
   State:
   Time:
     0          +:01
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Triggertime:
     1481590920:
       localtime  1481590920
       Hash:
Attributes:

b) UserReading: mit "return 2" gehts, mit "return $2" verschwindet das Reading sogar komplett aus der Reading-Liste...
Wenn das funktionieren würde, könnte ich mit einem doif den Wert abfragen, dann wären die unterschiedlichen Intervalle nicht mehr das Problem.
rootProz {\
ReadingsVal($name,"root",0) =~ /.*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*/;;\
return $2}


Wo steh ich aufm Schlauch? bitte mal schubsen :-)

Danke
Stephan


FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

igami

Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

abc2006

Zitat von: igami am 13 Dezember 2016, 05:58:19
Warum nutzt du nicht die DOIF Syntax dafür? Siehe Filtern nach Ausdrücken mit Ausgabeformatierung
Ja, das wollte ich eigentlich. War gestern wohl zu spät, danke.

Kannst du mir noch bei Kommata helfen?
Ich möchte gerne diese Ausgabe haben, aber da "," fhem-Befehle trennen, frage ich mich, wie ich diese escapen kann, dass es trotzdem funktioniert...

set remotebot message [fhem_sysmon:root:".*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*":$1] MB benutzt, das
entspricht einer Auslastung von [fhem_sysmon:root:".*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*":$1] %\, aber
[fhem_sysmon:root:".*Used:\s(\d+)\sMB,\s(\d+)\s%,\sAvailable:\s(\d+)\sMB.*":$3] MB sind noch frei


Grüße
Stephan

FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

igami

Den gesamten fhem Befehl einfach in runde klammern setzen
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED