Systeminformationen

Systeminformationen zu HomeMatic sammeln

  • die Temperatur
  • die Laufzeit
  • die aktuelle RAM – Auslastung
  • die CPU – Nutzung

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-AuslastungZeichenkette
LaufzeitZeichenkette
RAM-NutzungZeichenkette
Temperatur RaspberryZeichenkette
Folgende Systemvariablen müssen angelegt werden

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.