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
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
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
Das geht auch ohne Regex, dafür mit split.
{return (split(" ",ReadingsVal("sysTestsystem","SDHC","0")))[6]." %"}
Gruß
Dan
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
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
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
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