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

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

Moderatoren: jmaus, Co-Administratoren

turrican944
Beiträge: 178
Registriert: 29.05.2019, 22:19
Wohnort: Bargfeld
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

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

Beitrag von turrican944 » 16.04.2020, 11:45

Moin
Irgendwie gibt es so ein Gerücht das System.exec manchmal ärger machen soll oder ist das nur bei der original CCU software so bzw. schon längst überholt ?
Gruß Florian

Xel66
Beiträge: 6922
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 206 Mal

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

Beitrag von Xel66 » 16.04.2020, 11:47

Letzteres, und das schon seit einiger Zeit. Aber Buschfunk hält sich. Wenn man so was liest, lohnt auch immer ein Blick auf das Erstelldatum dieser Aussage. Alte Aussagen sind meist nicht unbedingt belastbar.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 103 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
253 Programme, 218 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.45.7.20190622
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

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

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

Beitrag von jmaus » 16.04.2020, 12:02

Xel66 hat geschrieben:
16.04.2020, 11:47
Letzteres, und das schon seit einiger Zeit. Aber Buschfunk hält sich. Wenn man so was liest, lohnt auch immer ein Blick auf das Erstelldatum dieser Aussage. Alte Aussagen sind meist nicht unbedingt belastbar.
In der Tat. So ist es. system.Exec() sollte bereits seit einiger Zeit (>1 Jahr) als stabil anzusehen sein. All die früheren Kinderkrankheiten sind raus und wenn man die Nutzung mit und ohne "&" am Ende beachtet blockiert man sich damit dann auch nicht unnötigerweise die Logikengine. Momentan sind mir auch keinerlei Probleme im Zusammenhang der system.Exec() funktion mehr bekannt wie das ganz am Anfang der CCU/ReGaHss noch der Fall war. Es gibt also IMHO nur noch ganz vereinzelte Fälle bei denen der einsatz von CUxD bzgl. CMD_EXEC/CMD_SETS überhaupt noch notwendig ist und das auch nicht weil system.Exec() da nicht stabil oder problematisch wäre, sondern weil dafür CUxD einfach besser geeignet ist oder mehr Sinn ergibt.

Und diese Aussagen treffen übrigens nicht nur auf RaspberryMatic zu, sondern auch mit einer aktuellen CCU3 oder CCU2 Firmware kann man getrost system.Exec() einsetzen ohne Gefahr zu laufen in die altbekannten Probleme zu rennen!
RaspberryMatic 3.51.6.20200420 @ ESXi mit ~170 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

mbhomie007
Beiträge: 123
Registriert: 13.02.2018, 19:23
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 4 Mal

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

Beitrag von mbhomie007 » 09.05.2020, 15:45

Hallo zusammen,

Wird nicht die CPU-Auslastung von 1 Minute , 5 Minuten und 15 Minuten angezeigt?

Wie kann man das Skript umschreiben, das die Ausgabe in % angezeigt wird?
Ist das nicht selbsterklärend? CPU_Load entspricht der Systemauslastung mit Komma getrennt nach Durchschnitt von 15min, 1 Std, usw. Eine „1.0“ entspricht hierbei 100%CPU. Und SYS_NTPOffset gibt Zeitabweichung in ms zwischen RaspberryMatic und dem momentan genutzten NTP Server an.

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);
}
Dateianhänge
Unbenannt1.png
Unbenannt.png
Unbenannt.png (3.76 KiB) 183 mal betrachtet

Baxxy
Beiträge: 791
Registriert: 18.12.2018, 15:45
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 124 Mal

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

Beitrag von Baxxy » 09.05.2020, 16:26

mbhomie007 hat geschrieben:
09.05.2020, 15:45
Wie kann man das Skript umschreiben, das die Ausgabe in % angezeigt wird?
Hier gibt es einige Möglichkeiten...
z.B.

Code: Alles auswählen

!- CCU Auslastung
string load;
system.Exec("cat /proc/loadavg | cut -d' ' -f-3 | tr -d '\n'", &load);
if(load != "") {
    var eins = (load.Substr(0,4).ToFloat()*100).ToString(0)#" %";  !-  1 Minute
    var fuenf = (load.Substr(5,4).ToFloat()*100).ToString(0)#" %";  !-  5 Minuten
    var fuenfz = (load.Substr(10,4).ToFloat()*100).ToString(0)#" %"; !- 15 Minuten
     WriteLine("1Min Auslastung: \t" #eins);
     WriteLine("5Min Auslastung: \t" #fuenf);
     WriteLine("15Min Auslastung: \t" #fuenfz);
     WriteLine(eins # " | "# fuenf # " | "# fuenfz);
}
Grüße
Baxxy

mbhomie007
Beiträge: 123
Registriert: 13.02.2018, 19:23
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 4 Mal

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

Beitrag von mbhomie007 » 10.05.2020, 12:55

Hallo Baxxy,

vielen Dank für die schnelle Antwort.

Wie bekomme ich denn die Ausgabe so in eine Systemvariable geschrieben?

Grüße
Marco
Dateianhänge
Unbenannt.png

Baxxy
Beiträge: 791
Registriert: 18.12.2018, 15:45
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 124 Mal

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

Beitrag von Baxxy » 10.05.2020, 13:28

mbhomie007 hat geschrieben:
10.05.2020, 12:55
Wie bekomme ich denn die Ausgabe so in eine Systemvariable geschrieben?
Du legst dir eine SysVar Typ Text an und nennst sie beispielsweise CCU-Auslastung.
Dann fügst du folgende Codezeile in das Script (am Ende aber noch innerhalb der Klammer) ein.

Code: Alles auswählen

dom.GetObject (ID_SYSTEM_VARIABLES).Get ("CCU-Auslastung").State(eins # " | "# fuenf # " | "# fuenfz);
Die ganzen WriteLine-Einträge kannst du dann löschen.

Grüße
Baxxy

mbhomie007
Beiträge: 123
Registriert: 13.02.2018, 19:23
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 4 Mal

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

Beitrag von mbhomie007 » 11.05.2020, 14:30

Vielen Dank Baxxy! Hat geklappt :mrgreen:

Antworten

Zurück zu „RaspberryMatic“