FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Brot am 21 August 2019, 20:53:31

Titel: [gelöst] SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: Brot am 21 August 2019, 20:53:31
Hallo zusammen...

Ich habe hier ein device SYSMON, welches gleich im ersten reading, auf attr filesystems, einen Prozentwert des verwendeten Speichers der SDHC-Karte (also nach /) liefert:
Internals:
   DEF        1 1 1 10
   FUUID      5d487460-f24f-e5c5-c8ac-b352d5842a0428c2
   FVERSION   42_SYSMON.pm:v2.3.4-s17227/2018-08-29
   INTERVAL_BASE 60
   INTERVAL_MULTIPLIERS 1 1 1 10
   MODE       local
   NAME       sysTestsystem
   NR         338
   STATE     
   TYPE       SYSMON
   READINGS:
     2019-08-21 20:40:20   SDHC            Total: 7259 MB, Used: 4958 MB, 73 %, Available: 1913 MB at /


Kann mir wer sagen wie ich beispielsweise ein ReadingsVal so baue, damit ich an (nur) diesen (im obigen Beispiel) 73%-Wert des readings ran komme?  ???

MfG
Roggenbrot
Titel: Antw:SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: Otto123 am 21 August 2019, 21:18:15
Guten Abend,

Für die FHEM Kommandozeile:
{my $val= ReadingsVal("sysTestsystem","SDHC","");;$val=~s/.*,.*,\s([\d]+).*/$1/ge;;return $val}

Erklärung und Test hier https://regex101.com/
Dein Teil oben rein: REGULAR EXPRESSION
.*,.*,\s([\d]+).*
Den Teil unten: Teststring
Total: 7259 MB, Used: 4958 MB, 73 %, Available: 1913 MB at /

Edit:
Oder mach es so:
{my $val= ReadingsVal("sysTestsystem","SDHC","");;$val=~s/.*\s([\d]+).*\s([\d]+).*\s([\d]+).*\s([\d]+).*/$3/ge;;return $val}


Und entscheide ob Du $1 $2 $3 $4 nimmst in der Ersetzung. So hast Du Zugriff auf alle 4 Werte :)

Gruß Otto
Titel: [gelöst] Antw:SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: Brot am 22 August 2019, 08:27:54
Uuuuuh, ein "regex tester"...  :D Das Ding ist ja Gold wert!  ;D Warum kannte ich das nicht?  ::)

Vielen Dank auch gleich für die Beispiele (auch dass ich gleich jeden Wert extrahieren kann) - funktioniert astrein!

Gruss,
AOK-Brot
Titel: Antw:[gelöst] SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: DeeSPe am 22 August 2019, 08:50:03
Das geht auch ohne Regex, dafür mit split.

{return (split(" ",ReadingsVal("sysTestsystem","SDHC","0")))[6]." %"}

Gruß
Dan
Titel: per split in die raw definition?
Beitrag von: Brot am 22 August 2019, 14:56:52
Oh, ja. Danke! Keine schlechte Sache, wenn man verschiedene Herangehensweien in petto hat...  8)

Aber um die verschiedenen Herangehensweisen auch umsetzen zu können: Während ich eine von Otto's Versionen noch per
my $valSDHCperCent = ReadingsVal("sysTestsystem","SDHC","");;\
   $valSDHCperCent =~s/.*\s([\d]+).*\s([\d]+).*\s([\d]+).*\s([\d]+).*/$3/ge;;\

in die raw definition des letztendlich weiterverarbeitenden notify übertragen bekomme...

Wie geht denn sowas mit dem split, das ner Variablen zu übergeben?  :-[

MfG,
Schrotbrot
Titel: Antw:per split in die raw definition?
Beitrag von: DeeSPe am 22 August 2019, 15:02:10
Zitat von: Brot am 22 August 2019, 14:56:52
Wie geht denn sowas mit dem split, das ner Variablen zu übergeben?  :-[

Indem Du einfach den return Wert der Variablen zuweist:
my $valSDHCperCent = (split(" ",ReadingsVal("sysTestsystem","SDHC","0")))[6]." %";

Gruß
Dan
Titel: Antw:[gelöst] SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: Brot am 22 August 2019, 15:13:00
Awh, man, das gibt es doch nicht! Ich weiß nicht wie lange ich jetzt daran herum gefummelt habe und es nicht wollte (vermutlich n Tippfehler).  :o

Kaum kopiere ich das einfach mal direkt von Dir, kommt auch schon der Wert... Danke!  ::)

MfG,
Ciabatta
Titel: Antw:[gelöst] SYSMON - Prozentwert aus attr filesystems auslesen
Beitrag von: Otto123 am 22 August 2019, 16:11:45
Zitat von: DeeSPe am 22 August 2019, 08:50:03
Das geht auch ohne Regex, dafür mit split.
Hallo Dan,

ich war doch gerade so schön drin - im Werte für den SVG Plot aus der Datenbank herausfischen. :)

Gruß Otto