[GELÖST] CPU-Last, CPU Temp und RAM Auslastung

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Mibra
Beiträge: 24
Registriert: 24.02.2020, 19:31
Hat sich bedankt: 7 Mal

[GELÖST] CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Mibra » 05.04.2020, 22:36

Hallo zusammen, ich habe nun hier im Forum eine weile gesucht und wenn ich es richtig verstanden habe, müsste man die oben genannten Werte als Systemvariable abrufen können.

Bei mir gibt es solche Variablen leider nicht. Kann mir evtl. jemand erklären wie ich diese auslesen kann. Ich habe aktuell die Vermutung das die CCu3 mit der Zeit etwas träger wird und diese Werte würden einem da ja recht schnell helfen.

Danke

Benutzeravatar
AndiN
Beiträge: 2536
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 5 Mal
Danksagung erhalten: 6 Mal

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von AndiN » 06.04.2020, 07:30

Hallo

du musst natürlich entsprechende Systemvariablen anlegen, die dann mit einem Programm (Skript) befüllt werden. Hier ein paar Beispiele von meinem Raspberry

Bsp:

Code: Alles auswählen

! Memory (frei)
! =====
var x;
dom.GetObject("CUxD.CUX2801001:12.CMD_SETS").State("cat /proc/meminfo | grep 'MemFree:'");
dom.GetObject("CUxD.CUX2801001:12.CMD_QUERY_RET").State(1);
x = dom.GetObject("CUxD.CUX2801001:12.CMD_RETS").State();
x = x.Substr(15,12);
dom.GetObject("SV_Memory_free").State(x);
dafür musst Du eine Systemvaraible "SV_Memory_free" anlegen.

Code: Alles auswählen

! Memory (Total)
! =====
var x;
dom.GetObject("CUxD.CUX2801001:12.CMD_SETS").State("cat /proc/meminfo | grep 'MemTotal:'");
dom.GetObject("CUxD.CUX2801001:12.CMD_QUERY_RET").State(1);
x = dom.GetObject("CUxD.CUX2801001:12.CMD_RETS").State();
x = x.Substr(15,12);
dom.GetObject("SV_Memory_total").State(x);
WriteLine(x);
dito

Code: Alles auswählen

! Memory (verfügbar)
! =====
var x;
dom.GetObject("CUxD.CUX2801001:12.CMD_SETS").State("cat /proc/meminfo | grep 'MemAvailable:'");
dom.GetObject("CUxD.CUX2801001:12.CMD_QUERY_RET").State(1);
x = dom.GetObject("CUxD.CUX2801001:12.CMD_RETS").State();
x = x.Substr(15,12);
dom.GetObject("SV_Memory_verfuegbar").State(x);
WriteLine(x);

Code: Alles auswählen

! RAM Auslastung 
string temp;
system.Exec("cat /proc/meminfo | egrep 'Mem(Total|Available)' | tr -d '\n' | awk '{ printf(\"%.1f\", 100-$4/$2*100) }'", &temp);
if(temp != "") {
 dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_RAM_Auslastung").State(temp);
  WriteLine(temp);
}

Code: Alles auswählen

! CPU Auslastung
! ==========
dom.GetObject("SV_CPU").State(dom.GetObject("CPU 10").State().ToString(2));
Achtung! Hierbei habe ich aber auch ein CuXD Gerät CPU 10 was die CPU Auslastung anzeigt. Und eine Systemvariable benötige ich nur, weil ich das Gerät in Pocketcontrol nicht sehe.

Code: Alles auswählen

! Temperatur CPU
! ==========
string temp;
system.Exec("vcgencmd measure_temp | cut -d '=' -f2 | cut -d\"'\" -f1", &temp);
if(temp != "") {
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV_CPU_Temp").State(temp);
}
Die Nutzung ohne Gewähr und vielleicht hat wer hier noch bessere Ideen.

Andi
Greenhorn

Letzter Reboot: 20.04.20 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.51.6.20200420, 128 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.4.2 - E-Mail 1.6.8c - hm_pdetect 1.7 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet -
Pocket Control
Diverse Links

Mibra
Beiträge: 24
Registriert: 24.02.2020, 19:31
Hat sich bedankt: 7 Mal

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Mibra » 06.04.2020, 08:06

Wow vielen Dank,

die CPU Temp und die RAM Auslastung laufen, gehe davon aus das diese in Prozent angezeigt wird. Zumindest kommt bei mir 26,7 heraus.

Das mit den CuXD Geräten hab ich bisher noch nicht hinbekommen. Werde ich aber nochmal versuchen.

Benutzeravatar
jmaus
Beiträge: 5800
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 14 Mal
Danksagung erhalten: 289 Mal
Kontaktdaten:

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von jmaus » 06.04.2020, 08:32

Du kannst das ganze auch komplett ohne CUxD Geräte erledigen und einfach stattdessen „system.Exec()“ nehmen.
RaspberryMatic 3.51.6.20200420 @ ESXi mit ~170 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

Mibra
Beiträge: 24
Registriert: 24.02.2020, 19:31
Hat sich bedankt: 7 Mal

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Mibra » 06.04.2020, 08:38

Das hört sich gut an, dann ändere ich in den Skripts einfach CUxD in System.Exec() oder habe ich das falsch verstanden?

Hast du evtl mal vor diese Anzeigen in Rasberrymatic einzuarbeiten. Unter dem Duty Cycle würde sich das sicher gut machen.

Huttmann
Beiträge: 122
Registriert: 08.06.2012, 09:16

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Huttmann » 09.04.2020, 08:48

Hallo. Die CPU Auslastung bekomme ich nicht hin mit dem cuXD Gerät, 00,00%

"Mein" angepasster Skript: CuxD Gerät heisst CPU LAST K16, System Variable CPU LAST

! CPU Auslastung
! ==========
dom.GetObject("CPU LAST").State(dom.GetObject("CPU LAST K16").State().ToString(2));

Geht es einfacher mit Syste.Exec ? Wie genau?

Danke!

Benutzeravatar
jmaus
Beiträge: 5800
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 14 Mal
Danksagung erhalten: 289 Mal
Kontaktdaten:

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von jmaus » 09.04.2020, 10:46

Huttmann hat geschrieben:
09.04.2020, 08:48
Geht es einfacher mit System.Exec() ? Wie genau?
Ja, das geht es. Ich hatte es zwar prinzipiell hier (viewtopic.php?p=462756#p462756) bereits vor längerer Zeit beschrieben, aber ich wiederhole das einfach hier noch einmal damit es an der ggf. "richtigeren" Stelle steht. Und ich werde auch den Skript noch einmal aktualisieren, weil der eher für eine ältere RaspberryMatic Version damals von mir so ausgearbeitet wurde. Hier also der Beitrag nochmal etwas aktualisiert:

Bei mir sieht das so aus:
Bildschirmfoto 2018-10-23 um 10.56.34.png
Und im Timer habe ich eben "Ganztägig" mit Zeitintervall alle 3 Minuten eingestellt.

Und dann als Skript benutze ich aktuell folgendes:

Code: Alles auswählen

string temp;
system.Exec("cat /sys/class/thermal/thermal_zone0/temp | sed 's/.\{3\}$/.&/'", &temp);
if(temp != "") {
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("CPU_Temp").State(temp);
}
system.Exec("cat /proc/loadavg | cut -d' ' -f-3 | tr -d '\n'", &temp);
if(temp != "") {
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("CPU_Load").State(temp);
}
system.Exec("cat /proc/meminfo | egrep 'Mem(Total|Available)' | tr -d '\n' | awk '{ printf(\"%.1f\", 100-$4/$2*100) }'", &temp);
if(temp != "") {
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("RAM_Usage").State(temp);
}
system.Exec("awk '{s=int($1);d=int(s/86400);h=int(s % 86400/3600);m=int(s % 3600 / 60); printf \"%d Tage, %dh %d min\", d, h, m}' /proc/uptime", &temp);
if(temp != "") {
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("SYS_Uptime").State(temp);
}
system.Exec("/usr/bin/chronyc -n tracking | grep 'Last offset' | awk '{ print $4*1000 }'", &temp);
if(temp != "") {
  dom.GetObject(ID_SYSTEM_VARIABLES).Get("SYS_NTPOffset").State(temp);
}
Centauri2k hat geschrieben:
23.10.2018, 02:00
Müssen Dafür SysVars "CPU_Temp", "CPU_Load", "RAM_Usage" und "SYS_Uptime" vom Typ Zahl angelegt werden?
Ja, die musst du natürlich alle entsprechend Manuell vorher anlegen. Und zwar:

CPU_Temp - Zahl mit Einheit °C (min: -100, max: 100)
CPU_Load - Zeichenkette
RAM_Usage - Zahl mit Einheit % (min: 0, max: 100)
SYS_Uptime - Zeichenkeitte
SYS_NTPOffset - Zahl mit Einheit ms (min: -999999, max: 999999)
RaspberryMatic 3.51.6.20200420 @ ESXi mit ~170 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

Huttmann
Beiträge: 122
Registriert: 08.06.2012, 09:16

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Huttmann » 09.04.2020, 14:27

Vielen Dank!!!

Timelord
Beiträge: 20
Registriert: 19.01.2017, 00:03
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von Timelord » 09.04.2020, 20:51

@jmaus
Auch von mir vielen Dank, obwohl ich schon vieles hinbekommen habe, ist CUxD für mich noch immer ein kleines Mysterium.

Läuft einwandfrei, trotzdem würde ich mich auch dem Wunsch anschließen, dass auf die Oberfläche der RaspberryMatic mit einzubauen. Wäre als Visualisierung unter dem Duty Cycle mega genial.

1techone
Beiträge: 106
Registriert: 19.01.2016, 10:23
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: CPU-Last, CPU Temp und RAM Auslastung

Beitrag von 1techone » 10.04.2020, 09:09

Timelord hat geschrieben:
09.04.2020, 20:51
@jmaus
Auch von mir vielen Dank, obwohl ich schon vieles hinbekommen habe, ist CUxD für mich noch immer ein kleines Mysterium.

Läuft einwandfrei, trotzdem würde ich mich auch dem Wunsch anschließen, dass auf die Oberfläche der RaspberryMatic mit einzubauen. Wäre als Visualisierung unter dem Duty Cycle mega genial.
Das kann doch jeder , der es will selbst einbinden! (Nach dieser super Anleitung)
Also nicht zwangsweise für alle!

Frohe Ostern
und vielen Dank für die tolle Arbeit der Mitwirkenden am RaspiMatic
Jürgen

Antworten

Zurück zu „RaspberryMatic“