CPU Temperatur im WF anzeigen

Hallo Leute

hat jemand eine Idee, wie man sich die aktuelle CPU-Temperatur in einer Variable anzeigen lassen kann?

Google mal nach Speedfan.

Da gibt es entweder ein SNMP-Addon welches Du dann über die php_snmp.dll auslesen kannst (sofern Du nicht die Beta von IPS laufen hast - da geht das nämlich nicht).

Oder Du lässt Speedfan eine LOG-Datei schreiben die Du dann auswerten kannst.

Oder Du lässt Speedfan Emails mit den Daten versenden die Du dann über IPS auswertest.

Bei Speedfan hab ich das mit dem Log nicht gesehen. Nun übe ich mich beim Variable schreiben.

66751 48.0

Dies ist die Ausgabe in der String-Variable. Wie bring ich nun nur die 48.0 rein?

PHP: substr - Manual

Ich komme da nicht wirklich weiter. Mit dem aktuellen Script wird mir das ganze Logfile angezeigt.

„substr(‚abcdef‘, 0, 4); // abcd“ handle ich irgendwie falsch

<?
$logfile = IPS_GetKernelDir()."Logs\log.txt";
if(!file_exists($logfile)) // prüfen ob Logfile vorhanden
{
    echo "Logfile nicht vorhanden";
}
else
{
    $wert = file($logfile);
    SetValue(19418, $wert[0]); //Datum Uhrzeit

    print_r($wert);
}
?>

und so sieht das File aus:

71225 48.0
71228 48.0
71231 48.0
71234 48.0
71237 48.0
71240 48.0
71243 48.0
71246 48.0
71252 48.0
71255 48.0
71258 48.0

Welche Zeile willst denn haben, die erste oder die letzte.

Und was wirft Dir print_r raus?

Vorschlag:


<?
// Quelle: http://www.ip-symcon.de/forum/f56/systeminfo-z-b-sys_getharddiskinfo-webfront-darstellen-9152/#post75369

$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];

$cpuInfo = Sys_GetCPUInfo();
for ($i = 0; $i < count($cpuInfo) - 1; $i++)
{
  SetValueInteger(CreateVariableByName($parentID, 'CPU '.$i, 1, '~Valve'), $cpuInfo['CPU_'.$i]);
}
SetValueInteger(CreateVariableByName($parentID, 'durchschnittliche Last', 1, '~Valve'), $cpuInfo['CPU_AVG']);

IPS_SetScriptTimer($IPS_SELF, 1*60);

function CreateVariableByName($id, $name, $type, $profile = "")
{
  global $IPS_SELF;
  $vid = @IPS_GetVariableIDByName($name, $id);
  if($vid === false)
  {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
      if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
  }
  return $vid;
}
?>

die erste Zeile möchte ich. Und momentan kommt alles

Er will wissen ob die CPU Fieber hat und nicht ob Ihr langweilig ist. :wink:

sorry Jungs, bevor Ihr noch lange rumrätselt was der Typ vom letzten Posting (#8) so raucht: ich hab nicht genau hingeschaut, ist Bullshit.

Aber vielleicht noch ein Versuch der Flucht nach vorn: warum Temperatur anzeigen wenn nicht auch % geht? -> vielleicht % in °C umrechnen? :D:D:D

$logfile = IPS_GetKernelDir()."Logs\log.txt";
if(!file_exists($logfile)) // prüfen ob Logfile vorhanden
{
    echo "Logfile nicht vorhanden";
}
else
{
   $wert = file($logfile);
   SetValue(19418, substr($wert[0], -4, 4));
   print_r($wert);
}

das liefert

Notice:  Undefined offset: 520 in [Test\Testscript] on line 10

und setzt die Variable auf „False“

Ergebnis von print_r($wert); hier posten.

Notice: Undefined offset: 520 in [Test\Testscript] on line 10
Array
(
[0] => 67750 46.0

[1] =&gt; 67753	46.0

[2] =&gt; 67757	46.0

[3] =&gt; 67760	46.0

[4] =&gt; 67763	46.0

usw.

habs selbst hingekriegt. Danke.

   $zeile = $wert;
   SetValue(19418, substr($zeile[0], -6, 4));

Dank Posting #8 habe ich ja nun eine blöde Frage frei:

Liest Du da nicht immer wieder nur den ersten aufgezeichneten Wert aus statt den des jüngsten? Oder kaufe ich am Ende mein Zeug beim selben Lieferanten wie Raketenschnecke?

den obersten Wert lese ich damit aus, und den hol ich mir jede Stunde ab.

Wenn ich mir die Sekundenwerte ansehe dann ist der oberste Wert aber der erste der in diesem LOG aufgezeichnet wurde und damit auch der älteste. Müsstest Du nicht den untersten = letzen = aktuellsten Wert auslesen?

Da ich das File jede Stunde neu generie spielt das ja keine Rolle. Hab zwar Winterzeit ( bald x2) damit aber ich brauch diesen Wert auch nur als sekundären Vergleich.