Eine 5-sekündige Forumsuche hat das hervorgebracht:
viewtopic.php?f=65&t=44463&p=445732#p445732
Moderatoren: jmaus, Co-Administratoren
Funktioniert das so auch mit dem Raspi 3 b+ ? Falls ja, wäre das Programm dazu dann so richtig?: Oder muss tatsächlich eine Bedingung hinein? Im Moment zeigt die SysVar "temp" nämlich 0 an.Also ich frage verschiedene Systeminformationen mit folgendem ReGaScript ab und positionieren die Dinge in Systemvariablen:
Wie du darin ganz oben sehen wirst frage ich die CPU Temperatur für das Tinkerboard mit folgendem Aufruf ab:Danach hast du dann die Temperatur in Grad Celsius in der Variable "temp" und kannst sie wie ich oben einer Systemvariable vom Typ Zahl zuweisen.Code: Alles auswählen
system.Exec("cat /sys/class/thermal/thermal_zone0/temp | sed 's/.\{3\}$/.&/'", &temp);
Code: Alles auswählen
string temp;
! system.Exec("vcgencmd measure_temp | cut -d '=' -f2 | cut -d\"'\" -f1", &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("free -m | grep Mem: | awk '{ printf(\"%.1f\", $3/$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 days, %02d:%02d\", d, h, m}' /proc/uptime", &temp);
if(temp != "") {
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SYS_Uptime").State(temp);
}
Guten MorgenCentauri2k hat geschrieben: ↑23.10.2018, 02:00Falls ja, wäre das Programm dazu dann so richtig?:
Oder muss tatsächlich eine Bedingung hinein? Im Moment zeigt die SysVar "temp" nämlich 0 an.
Guten Morgen
Ja klar muss da eine Bedingung rein. Bei mir sieht das so aus:Centauri2k hat geschrieben: ↑23.10.2018, 02:00@jmaus, du hast in "RaspberryMatic 2.35.16.20180715 – Erfahrungsberichte" geschrieben:
Funktioniert das so auch mit dem Raspi 3 b+ ? Falls ja, wäre das Programm dazu dann so richtig?:Also ich frage verschiedene Systeminformationen mit folgendem ReGaScript ab und positionieren die Dinge in Systemvariablen:
Wie du darin ganz oben sehen wirst frage ich die CPU Temperatur für das Tinkerboard mit folgendem Aufruf ab:Danach hast du dann die Temperatur in Grad Celsius in der Variable "temp" und kannst sie wie ich oben einer Systemvariable vom Typ Zahl zuweisen.Code: Alles auswählen
system.Exec("cat /sys/class/thermal/thermal_zone0/temp | sed 's/.\{3\}$/.&/'", &temp);
[...]
Oder muss tatsächlich eine Bedingung hinein? Im Moment zeigt die SysVar "temp" nämlich 0 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("free -m | grep Mem: | awk '{ printf(\"%.1f\", $3/$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 days, %02d:%02d\", d, h, m}' /proc/uptime", &temp);
if(temp != "") {
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SYS_Uptime").State(temp);
}
system.Exec("/usr/bin/ntpq -pn | grep '*' | awk '{print $9}'", &temp);
if(temp != "") {
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SYS_NTPOffset").State(temp);
}
Ja, die musst du natürlich alle entsprechend Manuell vorher anlegen. Und zwar:Centauri2k hat geschrieben: ↑23.10.2018, 02:00Müssen Dafür SysVars "CPU_Temp", "CPU_Load", "RAM_Usage" und "SYS_Uptime" vom Typ Zahl angelegt werden?