Hallo Zusammen,
ich nutze das Modul sysmon um mir diverse Informationen zu meinem System anzeigen zu lassen. Soweit so gut.
Alle Daten werden bei mir über dbLog aufgezeichnet.
Nun möchte ich in meinem Tablet-Ui Diagramme zur RAM Nutzung erstellen. Das Reading für RAM sieht so aus
Total: 925.80 MB, Used: 282.98 MB, 30.57 %, Free: 642.81 MB
Ich möchte jetzt nur die einzelnen Werte in einem neuen Reading haben. Folgender Code unterteilt das Reading in 3 Arrays und entfernt dann jeweils eine Zeichenkette. Bei der Prozentangabe funktioniert das auch einwandfrei aber die anderen sind aus [Name] [Wert] [Einheit] zusammengestellt. Hier bekomme ich es nicht hin [Name] und [Wert] aus dem Array zu entfernen.
Ich hoffe ihr habt verstanden was ich machen möchte :-)
Hier der Code für userReadings:
ram_tot { my @values = split(/,/,ReadingsVal("sysmon","ram",0));;my $val = $values[0];; $val =~ s/\Total://g;; return $val;; },
ram_use { my @values = split(/,/,ReadingsVal("sysmon","ram",0));;my $val = $values[1];; $val =~ s/\MB//g;; return $val;; },
ram_per { my @values = split(/,/,ReadingsVal("sysmon","ram",0));;my $val = $values[2];; $val =~ s/\%//g;; return $val;; },
ram_fre { my @values = split(/,/,ReadingsVal("sysmon","ram",0));;my $val = $values[3];; $val =~ s/\MB//g;; return $val;; },
P.S. Ich bin so vorgegangen weil ich nicht weiß ob man bei den Diagrammen von Tablet-UI perl-Code zulässig ist. Hier ein mein Beispiel-Code für das Chart.
<div id="ram-container"
data-type="chart"
data-device="sysmon"
data-logdevice="logdb"
data-logfile="HISTORY"
data-columnspec='["sysmon:ram[PERL-CODE]" <-- Um diese Zeile geht es
data-linenames='["total","used","free"]'
data-linetypes='["area","area","line"]'
data-minvalue="0"
data-maxvalue="1024"
data-height="300"
data-title="Speichernutzung"
data-xunit="Heute"
data-yunit="RAM"
data-tooltip="{series.name} <b>{point.y:,.0f}</b> MB of RAM"
data-tickInterval="1800000"
data-tickAmount="10" >
</div>
Grüße vom Wiesel ;)
Vielleicht hilft Dir das
fs_rootFree { my @a = split ' ',ReadingsVal($name,'fs_root',0);$a[6] }
Ich mache das selbe nur vom fs_root Reading.
Hallo Wiesel,
ich würde einfach zwei mal splitten:
ram_tot {return (split(" ", (split(", ", ReadingsVal($name, "ram", undef)))[0]))[1]}
Der erste split gibt dann "Total: 925.80 MB" aus.
Der zweite split gibt "925.80" aus.
Ist aber ungetestet.
Grüße
igami
Hallo,
Das von CoolTux ist genau das was ich gesucht habe. Warum einfach wenn es auch kompliziert geht ? :-D
@igami
Deine Lösung funtkioniert ebenfalls.
Vielen Dank euch beiden.