- die Temperatur
- die Laufzeit
- die aktuelle RAM – Auslastung
- die CPU – Nutzung
Inhaltsverzeichnis
Vorbereitung
Für die Anzeige müssen insgesamt 4 Systemvariablen angelegt werden.
Zusätzlich wird hier wieder ein Kanal eines CuX Exec (28) Gerät benötigt.
Name: | Typ: |
---|---|
CPU-Auslastung | Zeichenkette |
Laufzeit | Zeichenkette |
RAM-Nutzung | Zeichenkette |
Temperatur Raspberry | Zeichenkette |
Es lassen sich hier natürlich auch nur einzelne Variablen definieren, welche man in der Übersicht sehen möchte. Hierbei ist zu beachten, das bei einzelnen Anzeigen immer das CuX – Gerät eingefügt wird (markiert in Zeile 2). Verwendet man also 1 Skript, so ist einmalig in Zeile 2 das CuX – Gerät einzufügen.
Am Ende gibt es das komplette Skript.
Skript CPU-Auslastung
! CPU-Nutzung
string s_cuxd = "CUxD.CUX2801001:3.";
string s_cmd = "top -b -n 1 | egrep 'CPU' | awk 'NR==1 {printf \"%d%s\", $2, \"%\"}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("CPU-Auslastung").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
Skript Laufzeit
! Laufzeit
string s_cuxd = "CUxD.CUX2801001:3.";
string s_cmd = "cat /proc/uptime | awk '// { printf \"%d Tag(e) - %02d:%02d Stunden\", $1/86400, $1/3600%24, $1/60%60 }'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Laufzeit").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
Skript RAM – Nutzung
! Ram-Nutzung
string s_cmd = "free -m | awk 'FNR == 2 { printf \"%d MiB/%d MiB (%d%)\", ($3-$7)*-1, $2, ($3-$7)/$2*100*-1}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("RAM-Nutzung").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
Skript Temperatur Raspberry
! Temperatur
string s_cuxd = "CUxD.CUX2801001:3.";
string s_cmd = "/usr/bin/vcgencmd measure_temp | awk '// { printf substr($1, length($1) -5, 4)}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Temperatur Raspberry").State (dom.GetObject (s_cuxd # "CMD_RETS").State().ToString(2)#" °C");
Komplettes Skript mit allen Daten
! Servicedaten der HomeMatic sammeln ########################################
! Temperatur
string s_cuxd = "CUxD.CUX2801001:3.";
string s_cmd = "/usr/bin/vcgencmd measure_temp | awk '// { printf substr($1, length($1) -5, 4)}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Temperatur Raspberry").State (dom.GetObject (s_cuxd # "CMD_RETS").State().ToString(2)#" °C");
! Laufzeit
string s_cmd = "cat /proc/uptime | awk '// { printf \"%d Tag(e) - %02d:%02d Stunden\", $1/86400, $1/3600%24, $1/60%60 }'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Laufzeit").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
! Ram-Nutzung
string s_cmd = "free -m | awk 'FNR == 2 { printf \"%d MiB/%d MiB (%d%)\", ($3-$7)*-1, $2, ($3-$7)/$2*100*-1}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("RAM-Nutzung").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
! CPU-Nutzung
string s_cmd = "top -b -n 1 | egrep 'CPU' | awk 'NR==1 {printf \"%d%s\", $2, \"%\"}'";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("CPU-Auslastung").State (dom.GetObject (s_cuxd # "CMD_RETS").State());
Ich lasse diese Skript bei mir alle 10 Minuten ausführen.
Um Variablen auf der Startseite der HomeMatic anzeigen zu lassen, sind folgende Schritte notwendig.
Bisher keine Kommentare