Zur besten Antwort gewählt

Feb 28, 2025 - 14:43
Du kannst SSH auf der CCU3 aktivieren, unter Einstellungen -> Systemsteuerung -> Sicherheit -> SSH. Dort setzt Du einen Haken bei SSH aktiv und vergibst ein sicherers Passwort.
Anschließend kannst Du mit einem SSH Client der Wahl oder Terminal per SSH auf die CCU3 zugreifen und dort CPU Last, Temperatur, oder Speicher ausgeben lassen. Der SSH Nutzer ist root.
Da das aber per SSH nur eine momentane Abfrage der jetzigen Zustands ist, ist das nur ein Ist Zustand und sagt nichts über den Langzeitverlauf aus.
Ansonsten müstest Du die Daten extern aufzeichen und das mal über einen längeren Zeitraum beobachten, wenn es für Dich von Interesse ist.
Ich persönlich logge Daten wie CPU Last, Temperatur und Speicherverbrauch der HmIP-CCU3 in Symcon und zeige mir diese dann auch in NEO als Graph an. Dazu greife ich ebenfalls per SSH Client aus Symcon auf die HmIP-CCU3 zu und lese die Werte der HmIP-CCU3 aus und logge die Variablen dann zur Langzeitspeicherung.
Hier ist das Skript was ich zum auslesen der Werte der HmIP-CCU3 aus Symcon benutze.
<?php
// ID der SSH Client-Instanz
$sshInstanceID = 17259; // SSH Client Instanz
// Bestimme die Kategorie, in der sich das Skript befindet
$scriptID = $_IPS['SELF'];
$parentCategoryID = IPS_GetParent($scriptID);
// Name der Dummy-Instanz
$dummyName = "HmIP-CCU3";
// Prüfen, ob die Dummy-Instanz bereits existiert
$parentID = @IPS_GetObjectIDByName($dummyName, $parentCategoryID);
if ($parentID === false) {
// Dummy-Instanz anlegen in der gleichen Kategorie wie das Skript
$parentID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($parentID, $dummyName);
IPS_SetParent($parentID, $parentCategoryID);
}
// Funktion zur Erstellung eines benutzerdefinierten Profils
function createCustomProfile($name, $suffix) {
if (!IPS_VariableProfileExists($name)) {
IPS_CreateVariableProfile($name, 2); // Typ Float
IPS_SetVariableProfileText($name, "", " " . $suffix);
IPS_SetVariableProfileDigits($name, 1); // Eine Nachkommastelle
}
}
// Eigene Profile für die Werte erstellen
createCustomProfile("Custom.CPU_Load", "%");
createCustomProfile("Custom.Memory_Usage", "%");
createCustomProfile("Custom.CPU_Temperature", "°C");
// Funktion zum Anlegen einer Variable mit zugewiesenem Profil
function createVariable($name, $ident, $type, $parentID, $profile) {
$varID = @IPS_GetObjectIDByIdent($ident, $parentID);
if ($varID === false) {
$varID = IPS_CreateVariable($type);
IPS_SetParent($varID, $parentID);
IPS_SetName($varID, $name);
IPS_SetIdent($varID, $ident);
IPS_SetVariableCustomProfile($varID, $profile);
}
return $varID;
}
// Variablen mit eigenen Profilen erstellen
$cpuLoadID = createVariable("CPU-Last", "CPU_Load", 2, $parentID, "Custom.CPU_Load");
$memUsageID = createVariable("Speicherverbrauch", "Memory_Usage", 2, $parentID, "Custom.Memory_Usage");
$cpuTempID = createVariable("CPU-Temperatur", "CPU_Temp", 2, $parentID, "Custom.CPU_Temperature");
// SSH-Befehle definieren
$commandLoad = 'cat /proc/loadavg';
$commandMemory = 'free -m';
$commandTemp = 'cat /sys/class/thermal/thermal_zone0/temp';
// Systemlast abrufen
$loadResult = SSHC_Execute($sshInstanceID, $commandLoad);
if ($loadResult !== false) {
$loadValues = explode(" ", trim($loadResult));
$cpuLoad = floatval($loadValues[0]) * 100; // In Prozent umrechnen
SetValue($cpuLoadID, round($cpuLoad, 1));
}
// Speicherverbrauch abrufen
$memoryResult = SSHC_Execute($sshInstanceID, $commandMemory);
if ($memoryResult !== false) {
$lines = explode("\n", trim($memoryResult));
$memValues = preg_split('/\s+/', $lines[1]); // Zeile für "Mem:" auslesen
$totalMemory = floatval($memValues[1]); // Gesamt-RAM in MB
$usedMemory = floatval($memValues[2]); // Genutzter RAM in MB
$memoryUsage = ($usedMemory / $totalMemory) * 100; // In Prozent
SetValue($memUsageID, round($memoryUsage, 1));
}
// CPU-Temperatur abrufen
$tempResult = SSHC_Execute($sshInstanceID, $commandTemp);
if ($tempResult !== false) {
$cpuTemp = floatval(trim($tempResult)) / 1000; // Wert in °C umrechnen
SetValue($cpuTempID, round($cpuTemp, 1));
}
echo "Systemwerte erfolgreich aktualisiert!";
?>
Das Skript verweist auf eine eingerichtete SSH Client Instanz, die die Werte über SSH von der HmIP-CCU3 ausliest. Die Werte werden dann unter einer Dummy Instanz automatisch in Variablen abgelegt. Wenn man das Skript zyklisch ausführt, bekommt man dann eben per SSH bei jedem ausführen des Skripts neue Werte von der HmIP-CCU3 abgerufen.
Du kannst auch Tasks auf mehrere NEO Server verteilen, das macht die Adminstration aber eher umständlich. Wenn das ganze Konstrukt extrem komplex wird, kommt der NEO Server wohl auch irgendwann an seine Grenzen, da ist es dann eventuell ratsam leistungsfähigere Systeme zusätzlich einzusetzen und diese an das mediola System über ein passendes NEO Plugin anzubinden.
Ich kann aber nicht beurteilen wie komplex das ist, was Du da persönlich im NEO Server aufgesetzt hast, das weist ja nur Du selber.
Also vielleicht erst mal einfach per SSH schauen wie sehr die HmIP-CCU3 ausgelastet ist, dann kannst Du eher persönliche Schlüsse ziehen woran es vielleicht liegt.
Neuen Kommentar hinzufügen